R の MICE パッケージを使用して欠損値を補完する (2024)

政治学者は、欠損データを分析するために広く使用されているリストごとの削除方法よりも多重代入の方が優れた戦略であることを認識し始めています。

これを非常に明確に示したのが、Ranjit Lall による 2016 年の記事、LSEの政治経済学教授。彼は本質的に遡って、政治学における一般的なリストごとの削除と比較して、複数の代入の経験的結果を検証しました。

彼は、『国際機関と世界政治』誌に 5 年間にわたって発表された比較政治経済研究を再掲載することでこれを実現しました。

衝撃的なことに、ラル氏は再実行した研究のほぼ半数で、リストごとの削除ではなく複数の代入を使って再分析すると、ほとんどの重要な結果が(従来の統計基準によると)「消失」したことを発見した。

これはおそらく、欠損データがランダムであり、データ全体に均等に分布していると仮定するのは誤りであるという事実によるものです。

リストごとの削除には、変数に欠損値がある観測値を省略することが含まれます。欠損データのパターンが実際に完全にランダムであるという仮定を信じるのは難しいため、これは最終的に非効率的な推論を生成します。

このブログ投稿では、数行のコードで欠損データを補完するパッケージを紹介します。

私が最初に考えていたのとは異なり、名前は小さなげっ歯類とは何の関係もありません。MICE は連鎖方程式による多変量代入の略です。

補完では、欠損値を突然削除するのではなく、非欠損予測子から与えられる情報を使用して欠損値の推定値を提供します。

マウス パッケージは 2 つのステップで入力します。まず、使用マウス()モデルを構築してから呼び出す完了()最終的なデータセットを生成します。

マウス()関数は、データセットの完全なコピーを多数作成します。各コピーには、欠落データの異なる代入が含まれます。そうして完了()関数はこれらのデータセットを返します。デフォルトは最初のものです。

したがって、最初にパッケージをインストールしてロードします。

install.packages("マウス")ライブラリ(マウス)

ポテンシャルモデル内の変数に NA (欠損値) があるかどうかを確認するには、次のようにします。anyNA()関数。

anyNA(データ$クライアントリズム)

欠損値がある場合は、それらの代入を続行できます。まず、データセットの複数の代入バージョンを保存するための新しいオブジェクトを作成します。

data.frame 内にある変数の数に応じて、この反復プロセスには時間がかかります。私のデータdata.frame には約 6 つの変数があるため、この段階が完了するまでに約 3 ~ 4 分かかりました。ちょっとYoutubeに気を取られていたので、よくわかりません。何百もの変数を含む非常に大規模なデータセットを使用すると、コンピューターがおかしくなってしまうと思います。

私のdata.frame内の欠損値のある変数はすべて連続数値でした。私が選んだのは、メソッド = "カート"、これは分類と回帰ツリーを表し、非常に多用途に見えます。

imputed_data <- マウス(データ、メソッド="カート")

CART は、特定の変数の値を他の値に基づいて予測する方法を決定する予測アルゴリズムです。

これは決定木で構成されており、各フォークは予測変数の分割であり、最後の各ノードにはターゲット変数の予測があります。

この反復プロセスが完了し、コマンドの実行が終了したら、complete() 関数を使用して、結果の data.frame を新しいオブジェクトに割り当てます。私はそれを呼びますフルデータ

full_data <- complete(imputed_data)

新しい完全に代入された data.frame がリレーションシップにどのような影響を与えるかを確認するために、簡単な回帰を実行しました。もう少し時間をかけて、データ代入ステップの結果として変化した結果を見つけることもできましたが (上記の Lall (2016) 論文に示されているように)、最初のショットに固執することにしました。

代入値を含むモデルにより、値の総数が約 3,000 ほど増加していることがわかります。

すでに非常に大きな n サイズを持っていることを考えると、小さな割合の代入値を追加することによって係数の多くが劇的に変化することは予想されません。ただし、標準誤差 (やったー) と係数値が減少した (まあ) ことがわかります。さらに、R2 が(わずかに)減少しました(うーん)。

R の MICE パッケージを使用して欠損値を補完する (1)

私はカート方式を選択しましたが、欠損値のあるデータの特性に応じてさまざまな方式があります。

組み込みの一変量代入メソッドは次のとおりです。

午後どれでも予測平均マッチング
ミッドアタッチどれでも加重予測平均マッチング
サンプルどれでも観測値からのランダムなサンプル
カートどれでも分類木と回帰木
RFどれでもランダムフォレスト代入
平均数値無条件平均代入
標準数値ベイジアン線形回帰
ノルムノブ数値モデル誤差を無視した線形回帰
ノーマルブート数値ブートストラップを使用した線形回帰
ノルム.予測数値線形回帰、予測値
二次関数数値二次項の代入
数値無視できないデータのランダム インジケーター
ログレグバイナリロジスティック回帰
logreg.bootバイナリブートストラップを使用したロジスティック回帰
ポール順序付けられました比例オッズモデル
ポリレグ順序なし多項目ロジスティック回帰
LDA順序なし線形判別分析
2l.標準数値レベル 1 の通常の不均一分散
2リットル数値レベル 1 の通常の均一分散性、lmer
2リットルの鍋数値レベル 1 の通常のホモセダスティック、パン
2リットルビンバイナリレベル 1 ロジスティック、GLMER
2孤独な意味数値レベル2クラスの平均値
2ロンリーノルム数値レベル2クラスノーマル
R の MICE パッケージを使用して欠損値を補完する (2024)
Top Articles
Latest Posts
Article information

Author: Gregorio Kreiger

Last Updated:

Views: 6001

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Gregorio Kreiger

Birthday: 1994-12-18

Address: 89212 Tracey Ramp, Sunside, MT 08453-0951

Phone: +9014805370218

Job: Customer Designer

Hobby: Mountain biking, Orienteering, Hiking, Sewing, Backpacking, Mushroom hunting, Backpacking

Introduction: My name is Gregorio Kreiger, I am a tender, brainy, enthusiastic, combative, agreeable, gentle, gentle person who loves writing and wants to share my knowledge and understanding with you.