R MICEデータ補完の実行時間を改善する方法


9

簡単に言えば、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

3
それは判断の呼び名かもしれません。(一般的な原則として)実行時間の最も大幅な改善は、基礎となるアルゴリズムを理解することによって得られるため、人々が別のアプローチを提案できるコミュニティでは、本当に効果的な答えを得る最高の機会がここにあると思います。1、2日で十分な回答が得られない場合は、この投稿に移行のフラグを付けてください。SOに送信されます(その間に収集された回答やコメントも一緒に送信されます)。
whuber

1
'fastppm'オプションを 'norm'に変更できます。これにより高速になります
marc1s

1
Thx @ marc1s、これは大規模なデータセットで大幅に改善されました。10,000行のランダムデータフレーム(上記のような)の場合、「norm」メソッドは「fastpmm」より約4倍高速でした。50,000行で、さらに12倍速くなりました。したがって、実行時間の相対的な向上は行数だけ増加しています。
Dendrobates

1
実行するモデルによっては、最尤(または完全な情報最尤)推定を使用する方が速い場合があります。これは、モデルが正しく指定されている場合、代入に漸近的に等価です。さまざまな方法を比較した私が関わった論文を次に示します。emeraldinsight.com
Jeremy Miles

回答:


4

mincor(最小相関)およびminpuc(使用可能なケースの割合)を指定することで予測子を制限できるパッケージquickpred()から使用できます。また、excludeおよびincludeパラメーターを使用して、予測子を制御することもできます。mice


2

mice1つの追加の引数を含む関数のラッパーを作成しましたdroplist。ここでは、代入式の右側で使用したくない予測変数の文字ベクトルを渡すことができます。多くのレベルを持つ因子変数は代入をかなり遅くすることがわかったので、これは速度のためでした。quickpred@Aanishが参照する関数は知らなかったので、おそらく両方の概念を一緒に使用できます。

以下は、私のglmmplusパッケージに表示される関数です。お役に立てれば、実際のmiceパッケージでプルリクエストを開くことができます。

ImputeData <- function(data, m = 10, maxit = 15, droplist = NULL) {
  if (length(intersect(names(data), droplist)) < length(droplist)) {
    stop("Droplist variables not found in data set")
  }
  predictorMatrix <- (1 - diag(1, ncol(data)))
  for (term in droplist) {
  drop.index <- which(names(data) == term)
    predictorMatrix[, drop.index] <- 0
  }
  mids.out <- mice(data, m = m, maxit = maxit,
                   predictorMatrix = predictorMatrix)
  return(mids.out)
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.