重回帰分析の例

ここに「重症度, 総コレステロール, 中性脂肪」を列記したデータがある(N=10)。 これについて回帰分析を試みる。

「総コレステロール, 中性脂肪」を材料にして「重症度」を推定できるか調べる。

患者No. 総コレステロール 中性脂肪 重症度
1 220 110 0
2 230 150 1
3 240 150 2
4 240 250 1
5 250 200 3
6 260 150 3
7 260 250 2
8 260 290 1
9 270 250 4
10 280 290 4

相関の確認

まず、「重症度, 総コレステロール, 中性脂肪」の各要素の組みについて相関係数を算出する。

それを表形式で示すと次のとおり。

  重症度 総コレステロール 中性脂肪
重症度 1 0.827 0.386
総コレステロール 0.827 1 0.753
中性脂肪 0.386 0.753 1

目的変数と各説明変数の組みに関する散布図は図1〜図2のようになる。

図1:散布図

図2:散布図


回帰式と決定係数

回帰分析を行った結果、次のような推定のための計算式(回帰式)が求められた。

「重症度」 = -18.5014 + 0.09162236 × 「総コレステロール」 + -0.01146323 × 「中性脂肪」

次に決定係数関連の情報を列記する。

決定係数 0.8137019
自由度調整済み決定係数 0.7604739
F検定の値 15.28709(df: 2 〓 7)
F検定のp値 0.002790805

今回の決定係数 0.8137019 という値は、「重症度」の変動が「総コレステロール, 中性脂肪」の変動によって 81.4%だけ説明できることを意味している。

残りの18.6%は、回帰式に含まれていない別の要素が関係しているとみられる。

決定係数の信頼性はF検定の結果により判断する。もっともっと幅広く 調査したとき、もしかすると決定係数が0になるかもしれない。その危険性を 示すのがF検定のp値である。これが0.05(5%)とか0.01、あるいは0.001より 小さければ、そのレベルに応じた有意性が認められることになる。

このp値が0.05以上だと、「母集団において決定係数が0である」 という仮説を、母集団に関して棄却できないと判断する。


回帰係数

回帰係数(coefficient:y切片や偏回帰係数)についての情報を 掲げると次のとおり。

  見積り 標準誤差 t検定値 t検定時のp値
定数項 -18.5013972443237 3.85620225141615 -4.7978285468635 0.00197122423421542
総コレステロール 0.0916223559091791 0.0183291541405596 4.99872253823393 0.00156753202654268
中性脂肪 -0.0114632253056472 0.00519335137833611 -2.2072886023976 0.0630490540761245

この表で、1行目の「定数項」の「見積り」はy切片の値であり、 2行目の「総コレステロール」の「見積り」の欄は 当該説明変数の偏回帰係数の値である。

表の右端の「t検定時のp値」は、該当の変数が実は影響力を 持たないかもしれない危険性(確率)を示す。

偏回帰係数が0であれば、該当の説明変数の値が何であっても 目的変数の値に影響を与えない。

「総コレステロール」の係数が0.09162236と見積もられてはいるが、 もっともっと調査対象を拡げると、実は0ということもあるかもしれない。 その「かもしれない」の確率がp値である。 p値が十分小さければ、有意性が認められることになる。

定数項のp値については、レポートなどで言及することは少ないと思うが、 もっともっと幅広く調査した時にy切片が0であるかもしれない確率を示す。


残差等の分布

参考まで、残差(誤差)および目的変数の実測値の2つについて、 その分布に関する主な数値を掲げる。 残差は、回帰式の値(予測値)と実測値との差。

  Min. 1st Qu. Median Mean 3rd Qu. Max.
残差 -0.9961 -0.4396 0.1596 -5.559e-18 0.3413 0.8885
重症度 0 1 2 2.1 3 4

参考情報と補足

今回の重回帰分析は、下のサイトを参考にさせていただきました。 素材データも、そこに掲げられているものです。

統計学入門−第7章

上のサイトでは、統計的な値の算出方法をはじめ、 いろいろな事柄について丁寧に解説されています。 重回帰分析に限らず、様々な分析についての解説があります。

オリジナルの表にあったTC, TGは、私にはイメージしにくい用語だったので
TC:総コレステロール、TG:中性脂肪
と変更した上で統計処理を行っています。

当該webを出力するためのrubyスクリプトは lm_m.rb です。
回帰分析の簡単なレポート作成 で紹介しているrubyスクリプトを重回帰分析用に書き換えました。

  ruby lm_m.rb [enter]

上のように実行すると lm_m.htm が書き出されます。 それをブラウザで開くと、当該webと同じ内容になっているはずです。

用いているruby用ライブラリは次のとおり。 括弧内は私のところでインストールしてあるバージョンの番号です。

なお、webから素材データをちゃんと取得できたかを後で確認できるよう、 src_data.csv を書き出すようにしました。これには、統計の素材としたテーブルと、 webにあったオリジナルのテーブルの2つが含まれています。

また、markdownの原稿をmkd_m.txt というファイルに書き出すようにしました。 これをkramdownでhtmlに変換したのが当該webです。

〜 以上 〜