研究データには、しばしば「欠測値(Missing Values)」という問題がつきまとう。この欠測値を適切に処理することは、研究結果の信頼性や妥当性を確保するために不可欠である。本記事では、欠測率の基本的な計算方法から、統計解析ソフトウェアRを用いた具体的な計算例、そして論文に欠測状況をどのように記載すべきかについて詳しく解説する。研究データの質を高め、説得力のある論文を作成するための一助となれば幸いである。
概要
欠測率とは、データセット全体のうち、特定の変数や観測値においてデータが存在しない(欠損している)割合を示す指標である。欠測率を正確に把握することは、欠測メカニズムの推測や適切な欠測値処理方法の選択、さらには結果の解釈に大きな影響を与える。
欠測率は、通常以下のシンプルな式で計算される。
$$ \text{欠測率 (%)} = \frac{\text{欠測値の数}}{\text{全観測値の数}} \times 100 $$
この計算は、変数ごとに行うことも、データセット全体で行うことも可能である。
具体例
ある健康調査において、年齢、性別、BMI、喫煙習慣、運動習慣の5つの変数について100人の回答者からデータを収集したとする。このうち、BMIのデータが5人、運動習慣のデータが10人分欠損していた場合を考える。
- 全観測値の数(各変数): 100人
- BMIの欠測値の数: 5人
- 運動習慣の欠測値の数: 10人
具体例のRでの計算例
Rを使って上記の欠測率を計算してみよう。
まず、サンプルデータを作成する。
R スクリプト例:
# サンプルデータの作成
set.seed(123) # 再現性のためのシード設定
data <- data.frame(
Age = round(sample(20:70, 100, replace = TRUE)),
Gender = sample(c("Male", "Female"), 100, replace = TRUE),
BMI = round(rnorm(100, mean = 23, sd = 3), 1),
Smoking = sample(c("Yes", "No"), 100, replace = TRUE),
Exercise = sample(c("Yes", "No"), 100, replace = TRUE)
)
# 欠測値を意図的に生成
data$BMI[sample(1:100, 5)] <- NA # BMIに5つの欠測値
data$Exercise[sample(1:100, 10)] <- NA # Exerciseに10の欠測値
# 変数ごとの欠測率を計算
missing_rate_bmi <- sum(is.na(data$BMI)) / nrow(data) * 100
missing_rate_exercise <- sum(is.na(data$Exercise)) / nrow(data) * 100
cat("BMIの欠測率:", round(missing_rate_bmi, 2), "%\n")
cat("運動習慣の欠測率:", round(missing_rate_exercise, 2), "%\n")
# データセット全体の欠測率(個々の値の欠測率)
total_missing_values <- sum(is.na(data))
total_observations <- prod(dim(data)) # 行数 * 列数
overall_missing_rate <- total_missing_values / total_observations * 100
cat("データセット全体の欠測率:", round(overall_missing_rate, 2), "%\n")
# 各変数の欠測数を一括で確認する
library(naniar) # 欠測値処理に便利なパッケージ
# install.packages("naniar") # 必要であればインストールしてください
miss_var_summary(data)
実行結果:
> cat("BMIの欠測率:", round(missing_rate_bmi, 2), "%\n")
BMIの欠測率: 5 %
> cat("運動習慣の欠測率:", round(missing_rate_exercise, 2), "%\n")
運動習慣の欠測率: 10 %
> cat("データセット全体の欠測率:", round(overall_missing_rate, 2), "%\n")
データセット全体の欠測率: 3 %
> miss_var_summary(data)
# A tibble: 5 × 3
variable n_miss pct_miss
<chr> <int> <num>
1 Exercise 10 10
2 BMI 5 5
3 Age 0 0
4 Gender 0 0
5 Smoking 0 0
結果解釈
上記の例では、BMIの欠測率が5%、運動習慣の欠測率が10%であった。データセット全体の欠測率は、全データポイント(100人 × 5変数 = 500点)に対する欠測値の合計数(5 + 10 = 15点)の割合として計算され、3%となる。
欠測率の高さは、その後の分析の信頼性に影響を与える可能性がある。一般的に、欠測率が5%未満であれば問題が少ないとされるが、5%を超えると欠測値処理の必要性が高まり、10%を超えると慎重な検討が必要となる。ただし、これはあくまで一般的な目安であり、研究分野やデータの内容によって解釈は異なる。
論文への書き方
論文において欠測状況を明確に記載することは、研究の透明性と再現性を高める上で非常に重要である。以下の要素を含めることが推奨される。
- 欠測状況の全体像:
- 「本研究では、データ収集において一部欠測値が認められた。」など、簡潔に欠測が存在することを述べる。
- 各変数の欠測率:
- 主要な変数や解析に用いる変数について、それぞれの欠測数と欠測率を記載する。表形式で示すことが一般的で、視覚的にも分かりやすくなる。
- 例:「表1に各変数の記述統計量および欠測状況を示す。BMIは5名(5.0%)、運動習慣は10名(10.0%)の欠測が認められた。」
- 欠測メカニズムに関する考察(もし可能であれば):
- 欠測がランダムに発生しているのか(MCAR: Missing Completely at Random, MAR: Missing at Random)、あるいは特定の要因に基づいて発生しているのか(MNAR: Missing Not at Random)について、考察を述べることが望ましい。ただし、MNARの判断は困難な場合が多い。
- 例:「欠測値のパターンを検証した結果、BMIの欠測は特定の属性に偏りがないことから、MCARに近い状態であると考えられた。」
- 欠測値処理方法:
- 欠測値に対してどのような処理を行ったかを具体的に記載する。
- 削除法 (Deletion): リストワイズ削除 (Listwise Deletion)、ペアワイズ削除 (Pairwise Deletion)
- 補完法 (Imputation): 平均値補完、中央値補完、最頻値補完、回帰補完、多重代入法 (Multiple Imputation) など
- 直接モデル化法: 最大尤度法 (Full Information Maximum Likelihood; FIML) など
- 選択した方法の理由も簡潔に述べると良いだろう。
- 例:「欠測値処理には、多重代入法(MICEパッケージを使用、50回の代入)を用いた。」
- 例:「本研究では、欠測率が低くMCARの可能性が高いと判断されたため、リストワイズ削除を行った。」
- 欠測値に対してどのような処理を行ったかを具体的に記載する。
最大尤度法 (Full Information Maximum Likelihood; FIML) とは
最大尤度法(Full Information Maximum Likelihood; FIML)は、欠測値が存在するデータセットにおいて、統計モデルのパラメーターを推定するための高度な手法の一つである。これは、欠測値のある行やケースを単に削除する(リストワイズ削除)のではなく、利用可能なすべての情報を用いて、最もらしい(尤もらしい)パラメーターを推定しようとするものである。
最大尤度法の基本的な考え方:
FIMLは、「完全情報」最大尤度法とも呼ばれるように、各観測値が持つすべての利用可能なデータポイントを最大限に活用する。具体的には、データ全体の確率密度関数(尤度関数)を構築し、その尤度関数が最大になるようなモデルのパラメーター(例:平均、分散、回帰係数など)を推定する。
欠測値がある場合、その観測値の尤度関数は、観測されているデータのみに基づいて計算される。つまり、欠測値が存在する行であっても、観測されている部分のデータは推定に利用されるため、情報の損失が最小限に抑えられる。
FIMLの利点:
- 情報の有効活用: リストワイズ削除のように、欠測値を含む観測値を丸ごと捨てることがないため、情報の損失が少なく、統計的検出力(パワー)が向上する。
- バイアスの軽減: MCAR (Missing Completely at Random) の仮定が満たされていなくても、MAR (Missing at Random) の仮定が満たされていれば、バイアスのない(不偏な)パラメーター推定値が得られる可能性が高い。MARとは、「欠測の発生が、観測されている他の変数によって説明できる」という仮定である。
- 標準誤差の正確な推定: 欠測の不確実性を考慮に入れた標準誤差の推定が可能であり、より信頼性の高いP値や信頼区間が得られる。
FIMLの注意点:
- 計算の複雑さ: 特に大規模なデータセットや複雑なモデルでは、計算に時間がかかり、専門的な統計ソフトウェア(Rの
lavaan
パッケージ、Mplus、SASなど)が必要となる場合がある。 - MAR仮定の重要性: FIMLはMARの仮定に基づいている。この仮定が満たされていない(MNAR: Missing Not at Random)場合、バイアスが生じる可能性がある。MNARは、欠測の発生が欠測している値そのものに依存している状態であり、FIMLを含むほとんどの標準的な欠測値処理法では適切に対応できない。
- モデル指定の重要性: FIMLはモデルベースのアプローチであるため、適切な統計モデルが指定されていることが重要である。モデルが不適切だと、推定値にバイアスが生じる可能性がある。
FIMLは、構造方程式モデリング(SEM)などの多変量解析の分野で広く利用されており、欠測値の取り扱いにおいて非常に強力な手法とされている。
記載例(論文の「方法」セクションなど):
データの欠測と処理
本研究で収集したデータには一部欠測値が含まれていた。特に、BMI変数において5名(5.0%)、運動習慣変数において10名(10.0%)の欠測が確認された。その他の変数には欠測は認められなかった(表1参照)。欠測のパターンを検討した結果、欠測は観測されている変数によって説明できるランダムな欠測(MAR)である可能性が高いと判断された。そのため、統計解析には、欠測値を含むすべての情報を活用できる最大尤度法(Full Information Maximum Likelihood; FIML)を採用した。FIMLは、欠測値が存在するデータにおいても、利用可能なデータから最も尤もらしいモデルパラメータを推定する手法であり、情報の損失を最小限に抑え、バイアスのない推定値を得ることを可能にする。
まとめ
欠測率の計算と論文への適切な記載は、研究の質を向上させる上で不可欠なステップである。正確な欠測率の把握は、データの問題点を明らかにし、適切な欠測値処理方法を選択するための第一歩となる。そして、その状況と処理方法を論文で明確に記述することは、研究の透明性と信頼性を担保し、読者が研究結果をより深く理解するために貢献する。自身の研究の信頼性を高めるためにも、本記事の内容を参考に、欠測値に丁寧に向き合ってほしい。
コメント