我正在使用 drop1 逐步删除 glm 的变量。
从模型 1 中,我根据生成模型 2 的需要删除 AIC 最低的变量。
但是,当我比较两者的 AIC 时,模型 1 的 AIC 较低,并且从
drop1
报告的模型 2 的 AIC 和从 AIC()
报告的 AIC 不同。
我很困惑为什么这些 AIC 来自
drop1()
和 AIC()
的相同模型,以及如何进行模型选择?
谢谢
m1 <- glm(abundance ~ treatment + land_use + patch_size, data=df)
drop1(m1, test="F")
m2 <- glm(abundance ~ treatment + land_use, data=df)
AIC(m1)
AIC(m2) ##this AIC varies from that reported in drop1() and is higher than AIC(m1)
drop1
函数使用extractAIC
来获取AIC,而AIC
函数使用不同的加性常数。请参阅?extractAIC
的详细信息部分,特别是本段:
对于未知尺度的线性模型(即“lm”和“aov”),-2 log L 根据偏差计算并使用不同的加法 常量为“logLik”,因此为“AIC”。如果 RSS 表示(加权) 残差平方和,然后“extractAIC”用于 -2 log L 公式 RSS/s - n(对应于 Mallows' Cp)在已知的情况下 未知尺度的尺度 s 和 n log (RSS/n)。 “AIC”仅处理 未知比例并使用公式 nlog(RSS/n) + n + nlog 2pi - sum(log w) 其中 w 是权重。进一步‘AIC’计算规模 估计作为“edf”和“extractAIC”中的参数则不然。
然而,正如它继续说的:
请注意,此功能的方法可能有所不同 来自“AIC”方法的假设(通常via一种方法 为“logLik”)。我们已经提到过“lm”模型的情况 估计规模,并且“glm”和“glm”中也存在类似问题 “negbin”方法,其中色散参数可能是也可能不是 被视为“免费”。这并不重要,因为“extractAIC”仅用于 比较同级别车型(仅 AIC 值差异) 被考虑)。
因此,换句话说,您可以使用
drop1
实现自己的 AIC
函数,并且您会在各个子模型的 AIC 之间获得与使用内置 drop1
相同的 差异。