13

パッケージのmice関数を使用して代入戦略を作成したい。問題は、このパッケージに新しいデータのメソッド (またはいとこ) がmice見つからないように見えることです。predict

私はこのようなことをしたい:

require(mice)
data(boys)

train_boys <- boys[1:400,]
test_boys <- boys[401:nrow(boys),]

mice_object <- mice(train_boys)
train_complete_boys <- complete(train_boys)

# Here comes a hypothetical method
test_complete_boys <- predict(mice_object, test_boys)

上記のコードをエミュレートするアプローチを見つけたいと思います。現在、トレーニングデータセットとテストmiceデータセットに対して別々の操作を個別に実行することは完全に可能ですが、論理的な観点からは正しくないように思われます。すべての情報はトレーニングデータセットにあります。テストデータセットからの観測は、相互に情報を提供するべきではありません。これは、観測を出現時間順に並べることができるデータを扱う場合に特に当てはまります。

考えられるアプローチの 1 つは、テストデータセットから行を追加してデータセットを繰り返しトレーニングし、毎回代入を実行することです。しかし、これは非常に洗練されていないようです。

だからここに質問があります:

mice一般的な方法に似たパッケージの方法はありpredictますか? そうでない場合、可能な回避策は何ですか?

ありがとうございました!

4

1 に答える 1

2

MICE アルゴリズムは、指定されたデータセットで観測された値によって欠損値を推定するためにモデルを繰り返し構築するため、別の帰属データセットで欠損値を「予測」することは論理的に正しくない可能性があると思います。

つまり、 を実行するmice_object <- mice(train_boys)、アルゴリズムは の変数間の関係によって NA を推定し、代入しtrain_boysます。test_boyただし、の変数間の関係は の変数とtest_boyは異なる可能性があるため、このような推定は に適用できませんtrain_boy。また、観測された情報量は、これら 2 つのデータセット間で異なります。

変数間の関係が と で均一であると思われる場合はtrain_boys、データセットを分割する前にtest_boysNA 代入を行ってみてはどうでしょうか? すなわち:

mice_object <- mice(boys)
complete_boys <- compete(mice_object)
train_boys <- complete_boys[1:400,]
test_boys <- complete_boys[401:nrow(complete_boys),]

連鎖方程式による多重代入を読むことができます: それは何であり、どのように機能しますか? MICEの詳細情報が必要な場合。

于 2018-01-20T17:14:41.243 に答える