我正在尝试使用 mouseadds 包中的 lm.cluster 函数来获取多重插补数据集的稳健聚类标准误差。
我能够运行它的标准版本,但当我尝试添加子集或权重时出现以下错误:
Error in eval(substitute(subset), data, env) :
..1 used in an incorrect context, no ... to look in
无需子集或权重即可工作的示例:
require("mice")
require("miceadds")
data(data.ma01)
# imputation of the dataset: use six imputations
dat <- data.ma01[ , - c(1:2) ]
imp <- mice::mice( dat , maxit=3 , m=6 )
datlist <- miceadds::mids2datlist( imp )
# linear regression with cluster robust standard errors
mod <- lapply(datlist, FUN = function(data){miceadds::lm.cluster( data=data ,
formula=read ~ paredu+ female , cluster = data.ma01$idschool )} )
# extract parameters and covariance matrix
betas <- lapply( mod , FUN = function(rr){ coef(rr) } )
vars <- lapply( mod , FUN = function(rr){ vcov(rr) } )
# conduct statistical inference
summary(pool_mi( qhat = betas, u = vars ))
与子集中断的示例:
mod <- lapply(datlist, FUN = function(data){miceadds::lm.cluster( data=data ,
formula=read ~ paredu+ female , cluster = data.ma01$idschool, subset=
(data.ma01$urban==1))} )
Error during wrapup: ..1 used in an incorrect context, no ... to look in
打破重量的例子:
mod <- lapply(datlist, FUN = function(data){miceadds::lm.cluster( data=data ,
formula=read ~ paredu+ female , cluster = data.ma01$idschool,
weights=data.ma01$studwgt)} )
Error during wrapup: ..1 used in an incorrect context, no ... to look in
通过搜索,我认为在通过 lm 或 glm 包装器传递这些命令时,我遇到了与其他人类似的问题(例如:在函数内将参数传递给 R 中的 lm https://stackoverflow.com/questions/27261232/passing-argument-to-lm-in-r-within-function or R :将参数传递给 R 函数内的 glm https://stackoverflow.com/questions/10858318/r-pass-argument-to-glm-inside-an-r-function or 将权重参数传递给 R 函数内的回归函数 https://stackoverflow.com/questions/27045340/passing-the-weights-argument-to-a-regression-function-inside-an-r-function)
但是,我不确定如何解决估算数据集和现有 lm.cluster 命令的问题。
Thanks