落ちこぼれナースの統計チャレンジ

元落ちこぼれ看護師(保健師)が、私と同じく統計にドキドキしている看護学生や保健師さんに、簡単な言葉で届けるために始めたブログです。

まずはデータをきれいにしよう!!〜実務に強いデータ前処理と特徴量エンジニアリング〜


今回のテーマは「データ前処理と特徴量エンジニアリング」についてです。
……と聞いて「なんだか難しそう」と思った方、大丈夫です!!

保健師さんであれば、欠損値(=足りないデータ)を整えた経験がある方もいらっしゃるのではないでしょうか。看護学生さんも卒業研究でやることがあるかもしれませんね。

今回のお話は、きっと実務でも役に立つと思います。

しっかり、でもリラックスしながら読んでくださいね!!(矛盾してる…

それでは、レッツゴーーーーー!!!!!


欠損値処理:穴の空いたデータをどうする?

健診データを見たら、体温が書かれていない人がいる……。これが「欠損値」です。

現場でも「患者さん、体温を測り忘れてます!」なんてありますよね。

では、このような方はどのように対応すればいいでしょうか?

ここで、欠損値処理をします。

欠損値処理は、現場でカルテに空白があった時の「埋め方」に近いんです。

欠損値はデータ分析から除外する、という方もいると思いますが、実は方法はそれだけではなく、メリットもデメリットもあります。

6種類紹介するので、1つずつ見ていきましょう。

① 欠損を外す(除外する)

これは「測り忘れた体温の患者さんは集計から外す」という選択です。

  • メリット:シンプルでわかりやすい。「記録が揃っている人だけで比べればいいや」と割り切れる。
  • デメリット:せっかくの患者さんのデータが無かったことになってしまう。サンプルが減って、分析の信頼性が落ちることも。

データがある人数が万単位なら1人分減ったくらいでは痛くも痒くもないですが、10人しかいなかったら大きな痛手です。

② 平均値補完

これは「他の患者さんの平均体温を代わりに書き込んでおく」イメージです。

  • メリット:実装が簡単。サンプル数を減らさずに済む。
  • デメリット:データが均一化されすぎてしまい、バラつきが小さく見える。外れ値(すごく高い熱とか、低すぎる熱とか)に引っ張られやすい。

つまり「とりあえず病棟全員の平均体温を入れとけ!」みたいな対応です。医師や先輩看護師に怒られそうです。当たり前。

③中央値補完

これは「みんなの真ん中あたりの体温を入れる」イメージです。

  • メリット:外れ値に強い。平均値よりも現実に即している場合が多い。
  • デメリット:平均補完と同じで、データのバラつきを過小評価する。欠損が多いと全員同じ体温みたいになってしまう。

臨床なら「この人、きっと36.5度くらいだろう。普通はそのくらいだし」というノリです。うわーなんて適当なんだ。

④最頻値補完

一番よく出てくる値(最頻値、mode)で欠損を埋める方法です。

  • メリット:カテゴリデータ(性別、部署名、病棟名など)に使いやすい。実装が簡単、データの分布に沿った補完ができる。
  • デメリット:出現頻度の高いカテゴリに偏るため、多様性が失われる。最頻値が2つ以上ある場合、どれを採用するか決めなければならない。数値データに使うと、代表値としてはやや不自然なことが多い。

例として集団の身長の最頻値が170cmだった場合、欠損した人も170cmとしちゃう訳です。でもそうすると人類がいきなり170cmまみれになります。

いいなぁ…背が低い私には羨ましいよ。

⑤回帰補完(Regression Imputation)

ここからちょっと賢い方法になります。
年齢や体重、基礎疾患などから「この人の血圧は多分これくらい」と予測して埋めるやり方です。

  • メリット:他の情報を使えるので、よりその人らしい補完が可能。
  • デメリット:モデル作り(どの指標を使ってデータを保管するか?を決める)が必要で手間がかかる。しかも誤差を無視すると、補完値が直線上に並んでしまって現実味が減る。

臨床なら「この人BMI高いから血圧も高いはず」とカルテに勝手に書く感じです。ちょっと強引ですが、平均よりは個性が反映されています。

⑥ 多重代入法(Multiple Imputation)

最後は奥義・多重代入法です。
「補完の不確実性も考慮して、複数パターンの欠損補完をつくり、その結果を総合して分析する」方法です。

  • メリット:欠損の不確実性まで織り込めるので、理論的に最も信頼性が高い。
  • デメリット:手間も計算量もかかる。ちょっとした研究や実務ではオーバースペックに思えることも。

臨床なら「この人の体温、37.0℃・37.2℃・37.4℃の3パターンを仮に書いて、それぞれで診断してから総合判断する」みたいな感じ。手間ですが、かなり丁寧です。

要するに、どの方法も良し悪しがあるから、ケースバイケースで判断するように!!ということです。

標準化・正規化:身長と体重を同じ土俵に

さて、次は「スケーリング」。
これも現場のイメージに置き換えると簡単です。

身長170cm、体重70kg。この2つをそのまま比べたら、単位が違って不公平ですよね。
「cm」と「kg」を一緒に扱うために、数値のスケールを整える必要があります。

では、どうすればいいでしょうか?

標準化(Zスコア)

「平均0、標準偏差1に揃える」ということです。
正規分布に対してこれを行うと標準正規分布になります。
模試の偏差値もこの考え方が利用されています。
偏差値70は、上位約2.28%しかいないのです。天才だ……

正規化(min-maxスケーリング)

数字を「0〜1の範囲にギュッと縮める」ということです。
身長も体重もすべて0〜1のスケールに変えてしまえば、比較がしやすくなります。

カテゴリ変数の扱い:血液型はA型?B型?それとも……

最後は「カテゴリ変数」の説明です。
例えば「血液型」「性別」「職業」など、本来数値では表せないものです。

統計や機械学習は数字が大好きです。
でも「A型」「B型」と文字で書いてあっても計算できません。
そこで変換が必要になります。

ダミー変数(One-Hot Encoding)

「A型=1、他は0」のようにフラグを作ります。
これは「糖尿病あり=1、なし=0」と同じ感覚ですね。

糖尿病の有無では0、1の二択でいいのですが、
血液型など3つ以上の比較は0、1、2、3としてはいけないのです。
なぜなら、このようにすると「お??これは順序があるデータだな??B型の3倍はO型だな?」と統計ソフト等に誤解されてしまうことがあるからです。B型の方、怒っていいよ。

そこで、このように表示します。

患者A型B型AB型O型
患者1(A型)1000
患者2(O型)0001
患者3(AB型)0010
患者4(B型)0100

これなら、A型は「A型=1, 他=0」で表せます。大小関係もなく、フェアですね。

ただし、ここでもまた、3択以上の選択肢がある場合は注意点があるのです。

A型・B型・AB型・O型の4列すべてを回帰分析に入れてしまうと、「合計が必ず1になる」ため、多重共線性が起きます。
これは「4つの列のうちどれか1つを見れば、残り3つも自動的に決まってしまう」という完全な重複関係があるからです。

これでは回帰分析を行うのに不便です。

そこでよくやるのが、1つを基準にしてデータを落とすやり方です。

たとえば O型を基準にすると、A型列、B型列、AB型列の3列だけを説明変数として使います。

このとき回帰係数は「O型と比べてA型はどうか」「O型と比べてB型はどうか」と解釈できるようになります。

回帰分析を行う際は、覚えておきましょう。

まとめ

長々と書きましたが、要するに、

  • 欠損値処理:空欄をどう埋めるか?それとも分析対象から外すか?
  • 標準化・正規化:数値の単位をそろえて比べやすくする
  • ダミー変数:文字情報を数字に変える

この3つを押さえれば、データ分析がしやすくなります。
是非覚えておいてくださいね。

次回は、ここに数式を足して「数学的にどう考えるのか」を見ていきましょう。
お楽しみに!!!!


コメントを残す