R 调查包与 R 统计包中的 AIC 不同

问题描述 投票:0回答:1

使用

svyglm()$aic
与使用
stats::AIC(model)
时,我得到不同的 AIC 值。据我所知,这个话题之前已经在here讨论过。然而,没有对差异进行详细解释——“只是”建议使用一种方法而不是另一种方法。我怀疑这与this有关,但不幸的是我的统计数据还不够强大,无法完全理解并得出结论。

如果有人能帮助我,告诉我哪种方法是正确的(如果有的话)以及原因,我将不胜感激。如下例所示,这两种方法可能会产生截然不同的结果,甚至改变对哪个模型似乎更适合的解释。

最小示例:

library(survey)

df <- data.frame(
  y = c(1.2, 2.4, 3.1, 4.5, 5.6, 6.3, 8.6),
  a = c(0.5, 1.3, 1.7, 2.2, 3.1, 3.8, 4.0),
  b = c(2.1, 2.7, 3.3, 3.8, 4.2, 4.5, 5.1),
  weights = c(0.7, 1.4, 0.9, 1.1, 1.0, 0.8, 1.2)
)

weighted <- svydesign(ids = ~1, data = df, weights = ~weights)

A <- svyglm(y ~ a + b, design = weighted, family = "gaussian")
B <- svyglm(y ~ a, design = weighted, family = "gaussian")

AIC(A,B)[,2]
[1] 19.29119 17.03959
> c(A$aic,B$aic)
[1] 15.06302 17.45406

我正在使用 R 4.4.1 和调查 4.4-2

r statistics survey
1个回答
0
投票

简短的答案是,您应该始终*使用访问器方法,例如

AIC
,而不是使用
$
或(尤其是)
@
从对象中提取元素。无法保证标记为
$aic
的元素实际上是 AIC 值,或者定义在包版本之间保持稳定。 假设包作者知道他们在做什么,并在他们提供的方法中提供了 AIC(或其他)的最佳版本。

?AIC.svyglm
的帮助页面显示:

“AIC”是使用 Rao-Scott 近似加权来定义的 对数似然(Lumley 和 Scott,2015)。它取代了通常的 惩罚项 p,是对数的零期望 似然比,通过广义设计效应的轨迹 矩阵,即复杂采样下的期望。为了 计算原因一切都按比例缩放,因此权重总和为 样本大小。

如果你想深入了解

AIC()
在这种情况下到底做了什么,你最终会得到
survey:::extractAIC_svylm
的代码。

要准确理解

$aic
插槽包含的内容,您必须深入研究
survey
包代码(或询问维护者),但您 不必知道这个数量代表什么,因为它是拟合模型对象的内部组件。


* 很高兴在评论部分听到反例。

© www.soinside.com 2019 - 2024. All rights reserved.