政治学者は、欠損データを分析するために広く使用されているリストごとの削除方法よりも多重代入の方が優れた戦略であることを認識し始めています。
これを非常に明確に示したのが、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 が(わずかに)減少しました(うーん)。
私はカート方式を選択しましたが、欠損値のあるデータの特性に応じてさまざまな方式があります。
組み込みの一変量代入メソッドは次のとおりです。
午後 | どれでも | 予測平均マッチング |
ミッドアタッチ | どれでも | 加重予測平均マッチング |
サンプル | どれでも | 観測値からのランダムなサンプル |
カート | どれでも | 分類木と回帰木 |
RF | どれでも | ランダムフォレスト代入 |
平均 | 数値 | 無条件平均代入 |
標準 | 数値 | ベイジアン線形回帰 |
ノルムノブ | 数値 | モデル誤差を無視した線形回帰 |
ノーマルブート | 数値 | ブートストラップを使用した線形回帰 |
ノルム.予測 | 数値 | 線形回帰、予測値 |
二次関数 | 数値 | 二次項の代入 |
リ | 数値 | 無視できないデータのランダム インジケーター |
ログレグ | バイナリ | ロジスティック回帰 |
logreg.boot | バイナリ | ブートストラップを使用したロジスティック回帰 |
ポール | 順序付けられました | 比例オッズモデル |
ポリレグ | 順序なし | 多項目ロジスティック回帰 |
LDA | 順序なし | 線形判別分析 |
2l.標準 | 数値 | レベル 1 の通常の不均一分散 |
2リットル | 数値 | レベル 1 の通常の均一分散性、lmer |
2リットルの鍋 | 数値 | レベル 1 の通常のホモセダスティック、パン |
2リットルビン | バイナリ | レベル 1 ロジスティック、GLMER |
2孤独な意味 | 数値 | レベル2クラスの平均値 |
2ロンリーノルム | 数値 | レベル2クラスノーマル |