首页 文章

插补数据集列表的时滞分析

提问于
浏览
2

我的问题和数据类似于帖子:Loop Through Data with Sequential Time Lags output Linear Regression Coefficients

set.seed(242)
df<- data.frame(month=order(seq(1,248,1),decreasing=TRUE), 
psit=c(79,1, NA, 69, 66, 77, 76, 93,  NA, 65 ,NA ,3, 45, 64, 88, 88 
,76, NA, NA, 85,sample(1:10,228, replace=TRUE)),var=sample(1:10,248, 
replace=TRUE))

但是,我的数据集的结构不同,因为我已经为 psit 估算了缺失值 . 现在 psitmonthvar 现在在使用 mice() 函数来插入值后嵌套在列表 tempdata 中 . 现在 tempdata 包括40个新的插补数据集 .

tempdata<-mice(data = df, m = 40, method = "pmm", maxit 
 = 50, seed = 500)

我想采用40个插补数据集,对每个插补数据集运行相同的时滞分析(这与上面有一个数据集进行时间滞后分析的帖子不同)并汇总每个时间滞后的R平方值在所有插补数据集中 .

mice 上的帖子表示您可以使用以下内容汇总 lm() 的结果:

modelFit1 <- with(tempdata,lm(psit~ month))
summary(pool(modelFit1))

但是,我想在所有40个插补数据集中汇总R平方值,使其具有相同的时间滞后 . 所以我不确定如何在 tempdata 中的每个插补数据集上使用 dyn$lm() 函数,然后使用 pool() 函数汇总平方值的结果 .

为了达到这个目的 . 我尝试了以下但得到一个错误:

modelFit1 <- with(tempData, lapply(1:236, function(i) dyn$lm(psit ~ 
             lag(var, -i),tail(z, 12+i))))
summary(pool(modelFit1),function(x) summary(x)$r.squared))

1 回答

  • 0

    既然您使用的是鼠标包,那么“pool.r.squared”是否适用于您的目的?

    pool.r.squared(modelFit1, adjusted = FALSE)
    # est      lo 95    hi 95       fmi
    # R^2 0.1345633 0.06061036 0.226836 0.1195257
    

相关问题