簡単に言えば、R MICE(データ補完)の実行時間を改善する方法はありますか?
私はデータセット(30変数、130万行)で作業しています。これには(かなりランダムに)欠落したデータが含まれています。30変数のうち約15の観測値の約8%にNAが含まれています。不足しているデータを補完するために、MICEパッケージの一部であるMICE関数を実行しています。
method = "fastpmm"でm = 1のサブセット(100,000行)でも、実行時間が非常に遅くなり、約15分間実行されます。
パフォーマンスをあまり落とさずに実行時間を改善する方法はありますか?(mice.impute.meanは非常に高速ですが、重要な情報が失われます!)。
再現可能なコード:
library(mice)
df <- data.frame(replicate(30,sample(c(NA,1:10),1000000,rep=TRUE)))
df <- data.frame(scale(df))
output <- mice(df, m=1, method = "fastpmm")
1
一般に、これらの種類の質問は相互検証で適切ですか、それともスタックオーバーフローに適していますか?
—
Dendrobates
それは判断の呼び名かもしれません。(一般的な原則として)実行時間の最も大幅な改善は、基礎となるアルゴリズムを理解することによって得られるため、人々が別のアプローチを提案できるコミュニティでは、本当に効果的な答えを得る最高の機会がここにあると思います。1、2日で十分な回答が得られない場合は、この投稿に移行のフラグを付けてください。SOに送信されます(その間に収集された回答やコメントも一緒に送信されます)。
—
whuber
'fastppm'オプションを 'norm'に変更できます。これにより高速になります
—
marc1s
Thx @ marc1s、これは大規模なデータセットで大幅に改善されました。10,000行のランダムデータフレーム(上記のような)の場合、「norm」メソッドは「fastpmm」より約4倍高速でした。50,000行で、さらに12倍速くなりました。したがって、実行時間の相対的な向上は行数だけ増加しています。
—
Dendrobates
実行するモデルによっては、最尤(または完全な情報最尤)推定を使用する方が速い場合があります。これは、モデルが正しく指定されている場合、代入に漸近的に等価です。さまざまな方法を比較した私が関わった論文を次に示します。emeraldinsight.com
—
Jeremy Miles