2017-09-24 45 views
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。現在psit,monthvar現在嵌套在列表tempdata中,使用mice()函數來計算值。現在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)) 

回答

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 
+0

應該有R平方值的向量返回。我需要使用'dyn $ lm(psit〜lag(var,-i),tail()來計算每個估算數據集上的一系列時滯迴歸(t-1,t-2,t- z,12 + i))))'。然後將所有估算數據集上的t-1的r平方集合起來,然後將所有估算數據集上的r-2平方滯後於所有估算數據集,依此類推。所以我會爲每個時滯迴歸有一個彙集的r平方的向量。 – Danielle