【问题标题】:Time lag analysis on list of imputed datasets估算数据集列表的时滞分析
【发布时间】:2018-03-05 21:00:36
【问题描述】:

我的问题和数据类似于: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))

【问题讨论】:

    标签: r time-series r-mice


    【解决方案1】:

    由于您使用的是鼠标包,“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
    

    【讨论】:

    • 应该返回一个 R 平方值向量。我需要使用dyn$lm(psit ~ lag(var, -i),tail(z, 12+i)))) 对每个估算数据集运行一系列时间滞后回归(t-1、t-2、t-3... 个月)。然后在所有估算数据集上合并 t-1 的 r 平方,然后在所有估算数据集上合并 t-2 滞后的 r 平方,依此类推。因此,对于每次滞后回归,我都会有一个合并的 r 平方向量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2018-06-11
    • 1970-01-01
    • 2014-02-08
    相关资源
    最近更新 更多