2017-09-24 14 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の欠損値を代入されているので、しかし、私のデータセットの構造が異なります。今度は,monthおよびvarmice()関数を使用して値を代入した後にリストtempdataにネストされるようになりました。現在tempdataには40の新しい帰属データセットが含まれています。

私は、40個の帰属データセットを取る各帰属データセットに対して同じタイムラグ分析を実行します(これはタイムラグ分析をプリフォームする一つのデータセットがあった場所の上にポストとは異なり)とR-をプールしたい
tempdata<-mice(data = df, m = 40, method = "pmm", maxit 
= 50, seed = 500) 

帰属しているすべてのデータセットのタイムラグのようなそれぞれの二乗値。 mice

投稿は、使用してlm()の結果をプールすることができます示しています

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

は、しかし、私のような時間はすべて40個の帰属のデータセット間の遅れのためのR二乗値をプールします。だから私は、tempdataの各帰属データセットに対してdyn$lm()関数を使用する方法が不明で、pool()関数を使用して、2乗値の結果をプールします。

その結果を達成する。私は次のことを試してみましたが、エラーを取得している:あなたは、マウスのパッケージを使用しているので

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-3 ... months) z、12 + i)))) 'となる。すべての帰属データセットにt-1のr-squaredをプールし、t-2の遅れのr-squaredをすべての帰属データセットなどにプールします。だから私は、各タイムラグ回帰のためにプールされたr-二乗のベクトルを持つだろう。 – Danielle