【发布时间】:2023-03-18 02:12:02
【问题描述】:
有没有办法使用 weights 选项在 R 中估计 随机效应面板线性回归?
对于固定效果,我可以简单地使用
lm(y ~ x + factors(id_variable), weights=wgt)
但是我正在寻找 RE,因为个人数量太大并且我达到了内存限制。
由于调查数据类型需要加权
如果在 R 中不可用,它是否在 stata 或 SAS 中可用?
【问题讨论】:
标签: r
有没有办法使用 weights 选项在 R 中估计 随机效应面板线性回归?
对于固定效果,我可以简单地使用
lm(y ~ x + factors(id_variable), weights=wgt)
但是我正在寻找 RE,因为个人数量太大并且我达到了内存限制。
由于调查数据类型需要加权
如果在 R 中不可用,它是否在 stata 或 SAS 中可用?
【问题讨论】:
标签: r
在我(有限的)经验中,多级模型的权重调查是一堆蠕虫(我主要遵循 Andrew Gelman 对此的看法,例如 this paper 或 this blog post about it;这是一个(未回答的)CrossValidated question 关于该主题) .换句话说,在您担心计算问题之前,您可能必须解决一个统计问题(处理这个问题的正确方法是什么?)。
我确实认为 Stata 和/或 SAS 提供了这样的功能(请参阅上面的 CrossValidated 链接),但我不能告诉你太多关于它们的信息。
但是,如果您不想要/不需要随机效果,即您只想处理具有大量固定效果的问题,您应该能够使用this question 中的稀疏模型矩阵,如下面的例子。
仍然由您自己决定如何处理权重。我不相信lm、glm、lme4 等中的weights= 参数可以处理调查权重。我相信survey 包非常复杂,但我不知道它的surveyglm() 函数是否可以处理/具有稀疏模型矩阵的选项...
library("Matrix")
library("MatrixModels")
set.seed(101)
ngrps <- 1e3
nobs <- 10
ntot <- nobs*ngrps
d <- data.frame(y=rnorm(ntot),
x=rnorm(ntot),
f=gl(ngrps,nobs))
object.size(X1 <- model.matrix(~x+f,data=d)) ## 80 MB
object.size(X2 <- sparse.model.matrix(~x+f,data=d)) ## 709K
system.time(m1 <- MatrixModels:::lm.fit.sparse(X2,d$y)) ## 0.004 seconds
system.time(m2 <- lm.fit(X1,d$y)) ## 9 seconds
【讨论】: