欠損値補完
このページでは、データセット内の欠損値に対して、統計的手法を用いた補完処理の機能を提供します。
解説
欠損値とは
欠損値とは、データセット内で値が記録されていない箇所を指します。 欠損値は統計解析において重要な問題であり、適切に処理しないと解析結果に偏りが生じる可能性があります。
- 欠損の種類:
- MCAR (Missing Completely At Random): 欠損が完全にランダムに発生
- MAR (Missing At Random): 観測されたデータに基づいて欠損が発生
- MNAR (Missing Not At Random): 欠損自体に意味がある場合
補完手法の分類
個別補完手法
各変数を独立して補完する手法です。変数間の関係性を考慮しません。
- 数値変数向け:
- 平均値補完: 欠損値を該当変数の平均値で置換
- 中央値補完: 欠損値を該当変数の中央値で置換
- 線形補間: 前後の値を用いた線形補間
- スプライン補間: スプライン関数を用いた滑らかな補間
- カルマンスムージング: 時系列データに適用される高度な補間手法
- カテゴリ変数向け:
- 最頻値補完: 欠損値を該当変数の最頻値で置換
- 全データ型対応:
- k近傍法 (kNN): 類似したデータポイントの値を用いて補完
多重代入法 (MICE)
MICE (Multivariate Imputation by Chained Equations) は、変数間の関係性を考慮した高度な補完手法です。
- 特徴:
- 各変数を他の変数で予測するモデルを構築
- 反復的に補完値を更新し、収束させる
- 複数の補完データセットを生成し、不確実性を考慮
- MICEの補完手法:
- PMM (Predictive Mean Matching): 数値変数のデフォルト手法
- ロジスティック回帰: 二値カテゴリ変数
- 多項ロジスティック回帰: 多値カテゴリ変数
- ランダムフォレスト: 全データ型に対応
- 平均値補完: 単純な数値補完
- 線形回帰: 正規分布を仮定した補完
MICE vs 個別補完の比較
項目 | 多重代入法 (MICE) | 個別補完 |
---|---|---|
変数間関係 | 考慮する | 考慮しない |
計算時間 | 長い | 短い |
補完精度 | 高い | 中程度 |
適用場面 | 複雑なデータ | 単純なデータ |
不確実性 | 考慮可能 | 考慮しない |
設定
基本設定
- 補完対象変数: 欠損値を補完したい変数を選択します。
- 予測変数: 補完の予測に使用する追加変数を選択します。
- 空の場合は全変数が予測に使用されます。
- 予測変数に欠損値がある場合は自動的に補完されます。
補完方式の選択
- 多重代入法 (MICE) モード (推奨): 変数間の関係性を考慮した高精度な補完
- デフォルト設定: MICEが自動的に最適な手法を選択
- 数値変数→PMM (予測平均マッチング)
- カテゴリ変数→ロジスティック回帰/多項ロジスティック回帰
- すべての変数が相互に関連性を考慮して補完される
- 個別指定: 各変数のMICE補完手法を手動で選択
- 変数ごとにPMM、ランダムフォレスト、線形回帰等を指定
- 変数間の関係性は維持されたまま、手法のみカスタマイズ
- 例: 年齢→PMM、性別→ロジスティック回帰、収入→ランダムフォレスト
- 個別補完モード: 変数ごとに独立した手法で補完
パラメータ設定
- MICE 設定:
- 繰り返し回数: 補完の収束に必要な反復回数 (通常5-10回)
- k近傍法 設定:
- k値: 近傍として使用するデータポイント数 (通常3-10個)
- 乱数シード: 再現可能な結果を得るためのシード値
結果の解釈
統計量比較
補完前後の基本統計量 (平均値、標準偏差、中央値など) を比較し、補完が適切に行われたかを確認できます。
分布の比較
補完前後のデータ分布をヒストグラム (数値変数) や棒グラフ (カテゴリ変数) で視覚的に比較できます。理想的には、補完後の分布が元の分布と類似している必要があります。
注意事項
- 欠損値補完は強力な手法ですが、安易な適用は誤った解釈につながりますから、手法について理解したうえで適切に適用する必要があります。
- 欠損率が高い場合は、補完結果の信頼性が低下する可能性があります。
- 補完はあくまで統計的推定であり、真の値を復元するわけではありません。
- 補完結果は分析の前提条件や目的に応じて適切性を判断する必要があります。
- カテゴリ変数での完全分離 (各カテゴリが明確に分かれている場合) では、一部の変数で補完が実行できない場合があります。
- 補完前のデータの質 (測定誤差、外れ値など) は補完結果に影響するため、事前のデータクリーニングが重要です。
- 時系列データでは、時間的順序を考慮した補完手法を使用する必要がありますが、Reactive stat ではサポートしておりません。
- データ数が多く計算に時間がかかりすぎる場合には、クラウド R がタイムアウトしてしまいます。その場合は、通常の R での処理をお願いします。
参考資料
- MICE package documentation - mice パッケージ開発者サイト
{{title}}
{{title}}
{{ item.full }}
{{title}}
{{group}}
{{title || 'カラム選択'}}
{{title || 'カラム選択'}}
{{ title }} カテゴリー変数を選択してください。複数選択すると組み合わされます
...(選択肢が多すぎます)
それぞれに設定する値を入力してください。異なる分類に同じ値を設定することもできます。順位の数値を入れれば、順序カテゴリカル変数として扱えるようになります。
分類内容 | 値 | |
{{ item.tag }} |
データの取り扱い
- データインポート
- データの読み込みは、ブラウザ内で完結し、外部へのデータ送信は発生しません。
- データ保持
- 読み込んだデータはブラウザ内に保持されます。
- ブラウザのセッションが終了または全てのタブが閉じられると、保持していたデータは自動的に破棄されます。
- データの安全性
- ブラウザがクラッシュした場合でも、10分経過すれば次回の起動時にデータは安全に消去されます。
- 共用のPCでの使用も考慮し、データの外部漏洩のリスクを最小化しています。
クラウド R を利用する時のデータ送信
- 最小限のデータ送信
- 外部のRサーバーへ送信されるデータは、数値計算に必要な最小限のセットに制限されています。
- 送信データは解析に必要なサブセットのみに限られます。
- ユーザーコントロール下のデータ送信
- 送信前に、どのデータが外部サーバーへ送信されるのか内容を確認することが可能です。
- データの送信はユーザーの操作により行われ、自動的な送信は行いません。
- クラウド R 出力結果の保持
- クラウド R からの出力結果は、将来の自動翻訳や自動解説の機能実現のため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
- 通信経路も全て暗号化していますので、たとえプライバシーに関わる情報が含まれていたとしても、通常は漏洩する恐れはありません。
AI による解説を利用する時のデータ送信
- 最小限のデータ送信
- 外部のAIサーバーへ送信されるデータは、クラウド R の出力結果と、用いた統計手法の徐放です。
- ただし、クラウド R の出力結果に連続した数値データが含まれる場合は、AI にデータ形式を認識させる目的で、連続データの最初の行のみを送信します。
- クラウド R 出力結果の保持
- AI による解説内容は、将来の品質向上などのため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
新しい列 (カラム) 名:
ここで設定した値に完全一致するデータを欠損値として扱います。
新しい列 (カラム) 名:
Reactive stat において、統計データの変数は、通常の数値や文字列として扱われます。 したがって、日付や時間の概念は直接的にはサポートされていません。
統計計算を行う際には、日付や時間の差分を数値として事前に用意しておく必要があります。
計算結果プレビュー:
新しい列 (カラム) 名:
チェックされた行が削除対象となります
削除対象の行
データ入力
{{ errorMessage || dataStatus + 'です'}}
設定とオプション
R の出力結果
R出力図形
AI による R 出力結果の解説
変換設定:
(
変換元の単位:
変換先の単位:
)
変換結果プレビュー:
新しい列 (カラム) 名:
計算式の入力:
数式:
- データ: カラム名 (列名) をそのまま記述するか、"列名" のようにダブルクォートで挟んで指定
- 算術演算子: +, -, *, /, ()
- 基本関数: abs(), sqrt(), pow(), exp(), log(), log10()
- 三角関数: sin(), cos(), tan(), asin(), acos(), atan()
- 丸め関数: round(), floor(), ceil()
体重 / pow(身長, 2)
, "体重" / ("身長" * "身長")
利用可能なカラム:
{{ column }}
変換結果プレビュー:
{{ errorMessage }}
新しい列 (カラム) 名:
区切り文字の選択:
欠損値の処理:
プレビュー:
{{ preview }}
新しい列 (カラム) 名:
確認
変換結果プレビュー:
新しい列 (カラム) 名:
{{title}}
データがありません
データ
設定
補完設定
変数名 | 変数タイプ | 欠損値数 | 欠損値比率 | 補完方法 |
---|---|---|---|---|
{{ column }} | {{ getColumnType(column) }} | {{ getMissingCount(column) }} | {{ getMissingRatio(column) }}% | MICE (多重代入法・自動選択) |
パラメータ設定
多重代入法 (MICE) の繰り返し回数
k近傍法 (kNN) のk値
乱数シード
結果
クラウド R 分析
欠損値補完結果
補完前後の統計量比較 (数値変数)
変数名 | 補完前 | 補完後 | ||||||
---|---|---|---|---|---|---|---|---|
N | 平均値 | 標準偏差 | 中央値 | N | 平均値 | 標準偏差 | 中央値 | |
{{ column }} | {{ getSummaryStatsBefore(column).n }} | {{ getSummaryStatsBefore(column).mean }} | {{ getSummaryStatsBefore(column).sd }} | {{ getSummaryStatsBefore(column).median }} | {{ getSummaryStatsAfter(column).n }} | {{ getSummaryStatsAfter(column).mean }} | {{ getSummaryStatsAfter(column).sd }} | {{ getSummaryStatsAfter(column).median }} |
補完前後の統計量比較 (カテゴリ変数)
変数名 | 補完前 | 補完後 | ||||||
---|---|---|---|---|---|---|---|---|
N | 最頻値 | カテゴリ数 | 欠損値数 | N | 最頻値 | カテゴリ数 | 欠損値数 | |
{{ column }} | {{ getSummaryStatsBefore(column).n }} | {{ getSummaryStatsBefore(column).mean }} | {{ getSummaryStatsBefore(column).sd }} | {{ getSummaryStatsBefore(column).median }} | {{ getSummaryStatsAfter(column).n }} | {{ getSummaryStatsAfter(column).mean }} | {{ getSummaryStatsAfter(column).sd }} | {{ getSummaryStatsAfter(column).median }} |
{{ column }} の分布
補完結果をデータテーブルに追加しました。
- 上のボタンを押すと、元の変数名に "_imputed" サフィックスを付けた新しいカラムを作成します。
- 実行後は、必要に応じてファイルにダウンロードして保存してください。