lm 和 lme 中的权重参数在 R 中非常不同-我是否正确使用它们?

机器算法验证 r 回归 混合模式 加权回归
2022-03-13 11:05:07

因此,在我看来,lm 中的 weights 函数赋予观察更多的权重,相关观察的“权重”值越大,而 lme 中的 lme 函数恰恰相反。这可以通过简单的模拟来验证。

#make 3 vectors- c is used as an uninformative random effect for the lme model
a<-c(1:10)
b<-c(2,4,6,8,10,100,14,16,18,20)
c<-c(1,1,1,1,1,1,1,1,1,1)

如果您现在要运行一个模型,在该模型中根据 lm 中因变量的倒数对观察结果进行加权,那么您只能在 nlme 中生成完全相同的结果,前提是您仅按因变量加权,而不采用倒数。

summary(lm(b~a,weights=1/b))
summary(lme(b~a,random=~1|c,weights=~b))

您可以翻转它并看到反之亦然——在 lm 中指定 weights=b 需要 weights=1/b 才能获得匹配的 lme 结果。

所以,我明白这一点,我只想对一件事进行验证并就另一件事提出问题。

  1. 如果我想根据因变量的倒数对数据进行加权,是否可以在 lme 中仅编码 weights=~(因变量)?
  2. 为什么写 lme 来处理权重与 lm 完全不同?除了制造混乱之外,这样做的目的是什么?

任何见解将不胜感激!

1个回答

第一季度

lme符号weights = ~ b中将导致varFixed方差函数与唯一参数一起使用b该函数将向模型添加方差函数,其形式为,其中采用向量参数 的值s2(v)s2(v)=|v|vb

因此,您应该使用weights = ~ I(1/b)inlme()来获得\的方差εi=1/bi

lm你通过weights的似乎是完全相反的;weights与方差成反比

我不是 100% 确定你所说的weight my data是什么意思,但如果你的意思是提供观察的异质方差,那么我认为你想要weights = ~ I(1/b)

第二季度

我的直觉(您必须询问这两个函数的各自作者)是因为这是由非常不同lm()lme()人编写的,目的是做非常不同的事情。lm()需要(希望)与 S 和各种书籍兼容,nlme没有,它旨在更加灵活,允许通过基础设施lm使用方差函数varFunc来更灵活地对异质性进行建模。