2017-03-08 6 views
1

私は不足しているデータを補う必要がある学校プロジェクトに取り組んでいます。マウスで代用した後、完成したデータセットを完全な関数で生成しようとしています。入力データにはクラスmidsが必要です

1つずつ実行するとうまくいきますが、m = 5代用以上のものが必要な場合に備えてforループを使いたいと思います。 for-loopを実行しようとする今、私は常に完全に誤り

エラーを取得(インピュテーションを[1]):入力データは、クラスの中音域」を持っている必要があります。

しかし、私がクラスを参照すると、ミッドです、ここで何がうまくいかないのですか?

これは私のコードです:

imputation <- mice(data = data, m = 5, method = "norm", maxit = 1, seed = 500) 
m <- 5 
for(i in 1:m){ 
    completeData[m] <- complete(imputation[m]) 
    print(summary(completeData[m])) 
} 

は、誰かが多分ここに私を助けてもらえますか?

+0

実際のアプリケーションでは 'maxit = 1'を使わないで教えてください –

+0

私の先生はそうするのがいいと言いましたか?これを再検討すべきかどうか、これがエラーにつながる可能性はありますか? – ZaLa91

+0

それは言うごとにエラーにつながることはありません。それはちょうどあなたに本当にたわごとの代償を与えるかもしれません。連鎖方程式アルゴリズムは、収束するように実行する必要があります。あなたはただ1回の反復を実行できるようにしています。したがって、帰属結果はおそらくかなり価値がありません。 –

答えて

0

クラスがmidsではありませんので、我々は、エラーを取得しています

imputation[1] 
# $call 
# mice(data = walking, m = 5, maxit = 0, seed = 500) 

class(imputation[1]) 
# [1] "list" 

マニュアルから?completeのために:

使用

complete(x, action = 1, include = FALSE)

library(mice) 

# dummy data imputation 
data(walking) 
imputation <- mice(walking, max = 0, m = 5, seed = 500) 

# using for loop 
m <- 5 
for(i in 1:m){ 
    completeData <- complete(imputation, m) 
    print(summary(completeData)) 
} 

# I prefer to use lapply 
lapply(seq(imputation$m), function(i) summary(complete(imputation, i))) 
関連する問題