【初心者必見】RでのNA補完に要注意!平均・中央値での補完が危険な理由を医学研究の実例で解説

  • URLをコピーしました!

こんにちは。ほしのはやしです。

Rを使ったデータ分析で欠損値(NA)があると、「とりあえず平均値や中央値で埋めておけばいい」と考えがちです。

たしかに、これらの手法はコードも簡単で、tidyverseを使えば数行で実装できます。
補完の基礎について以下のページで解説しました。

しかし、とくに生物学・医学の研究分野では、安易なNA補完が統計的な歪みや誤解を生み、重大な結論の誤りにつながることがあります。

本記事では、具体例を交えて平均値・中央値での補完が“危険”なケースをご紹介したいと思います。

目次

例1:CRP(C反応性蛋白)などの炎症マーカー

背景: CRPは炎症の強さを反映するマーカーで、感染症や悪性腫瘍などで急上昇する。

なぜ平均補完がダメ?

値の分布が極端に右に偏っている(多くは正常値だが、一部が非常に高い)。
平均値で補完すると、非現実的に高い値で埋められてしまう

代替案としては、中央値補完をする、もしくは「疾患の有無」などでグループ別に補完することです。

# 例えば感染群と非感染群で分けて中央値補完
data %>%
  group_by(infection_status) %>%
  mutate(crp = if_else(is.na(crp), median(crp, na.rm = TRUE), crp))

例2:臨床試験での体重・BMIの欠損

背景: 一部の患者は重症で測定不能(例:集中治療室で臥床)、あるいは観察から脱落。

なぜ平均・中央値補完がダメ?

・欠損がランダムではなく、「重症な患者に偏って」発生している可能性が高い(= MNAR: Missing Not At Random)
・平均で埋めると「重症患者も普通の患者と同じような体重」とみなしてしまい、治療効果や予後解析が歪む

代替案としては、補完せずに除外したり(バイアスに注意)、miceパッケージを用いた多重代入法(Multiple imputation)を行う方法があります。

library(mice)
imp <- mice(data, method = "pmm", m = 5) # Predictive mean matching
completed_data <- complete(imp)

多重代入法(Multiple Imputation)

欠損値(NA)をただ1つの値で補うのではなく、複数の異なる plausible(もっともらしい)な値で補完して、それぞれの分析結果を統合する方法です。

星柴くん

mice使うやつってイメージしにくいのだ

黒星柴くん

めっちゃ簡単にいうと、「NAに1つの適当な値を入れるだけじゃ偏るから、5つくらいの”ありそうな値”を作って、それぞれで分析したあとに結果をまとめる!」って感じやで!

例3:発現データ(RNA-seqなど)での欠損

背景: 遺伝子発現データでは、検出感度の限界で一部の遺伝子が0またはNAになる。

なぜ平均補完がダメ?

・欠損の原因は技術的な理由(検出限界)であり、値が本当に「平均的」かどうかわからない。
・平均で補完すると、非発現の遺伝子を「ちょっとだけ発現している」ことにしてしまう

代替案としては、補完せず0として扱ったり、検出限界値(Limit of Detection, LOD)の半分を代入したりする方法があります。この場合は補完値を0, LOD/2, LODと3種類変えて結果が変わらないことを証明することがあります。

もちろん、欠損をもつ遺伝子を解析対象から除外する方法も一つです(その条件下での検査の精度が担保されないときなど)。

まとめ

本記事では、補完方法を選ぶときに考慮すべきポイントについて解説しました。

検討ポイント補完方法候補
分布が極端に偏っているCRP、BNPなどのマーカー中央値、層別中央値
欠損がランダムでない重症例の体重、ICU患者のBMI多重代入、除外も検討
欠損が技術的な理由遺伝子発現データ0, LOD/2で補完、または除外

欠損値の処理については、分野によってやり方がある程度決まっていたりするので、既報の論文の手法を踏襲するのも一つですね!

皆様のお役に立てたなら幸いです。

  • URLをコピーしました!

この記事を書いた人

柴犬をこよなく愛する読書家。
街歩きとお菓子作りを趣味にしています。
研究や論文に役立つ情報をわかりやすくお伝えします。

コメント

コメントする

目次