估算数据集列表的时间滞后分析
Time lag analysis on list of imputed datasets
我的问题和数据类似于 post 中的: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
估算了缺失值。在使用 mice()
函数估算值后,psit
、month
和 var
现在嵌套在列表 tempdata
中。现在 tempdata
包括 40 个新的估算数据集。
tempdata<-mice(data = df, m = 40, method = "pmm", maxit
= 50, seed = 500)
我想采用 40 个推算数据集,运行 对每个推算数据集进行相同的时间滞后分析(这不同于上面的 post,其中有一个数据集来执行时间滞后分析) 并汇集所有估算数据集中每个类似时间滞后的 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))
既然您使用的是 mice 包,"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
我的问题和数据类似于 post 中的: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
估算了缺失值。在使用 mice()
函数估算值后,psit
、month
和 var
现在嵌套在列表 tempdata
中。现在 tempdata
包括 40 个新的估算数据集。
tempdata<-mice(data = df, m = 40, method = "pmm", maxit
= 50, seed = 500)
我想采用 40 个推算数据集,运行 对每个推算数据集进行相同的时间滞后分析(这不同于上面的 post,其中有一个数据集来执行时间滞后分析) 并汇集所有估算数据集中每个类似时间滞后的 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))
既然您使用的是 mice 包,"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