【Python】臨床研究のための医学統計/重回帰モデル・残差プロット

この記事をシェアする

 

はじめに

 前回のPythonによる単回帰はコチラ。

 

www.medicalmed.press

 

 今回は重回帰分析と残差プロットを行いたいと思います。

 

 

sklearnを使用して重回帰分析

とりあえずsklearnをインポートします。

LinearRegressionを使用していきます。

f:id:Medicmed:20180603175235p:plain

読み込んだきたMansion1.csvのデータフレームから不要なものを削除する際には「drop()」を使用します。

今回、説明変数はSizeとYearのふたつにしたいのでそれ以外を削除します。

f:id:Medicmed:20180603175539p:plain

複数行を削除するにはリストの形で指定する必要があります。

SizeとYearだけのデータフレームをX_multi変数に格納できました。

重回帰モデルを作成する!

f:id:Medicmed:20180603175739p:plain

目的変数であるPriceはY_target変数に格納しておきます。

lreg.fit()を使用して重回帰モデルを作成することができました。

回帰係数を見やすい形に変形する!

f:id:Medicmed:20180603175930p:plain

今の状態だと回帰係数が見にくいため、データフレームの形に変形させた方が良いです。

f:id:Medicmed:20180603180042p:plain

このようにデータフレームの形式にするとだいぶ見やすくなりました。

次に残差プロットを作成していきます。

残差プロットを作成する!

学習データとテストデータに分割する

f:id:Medicmed:20180603181006p:plain

X_multiデータから学習データとテストデータのふたつに分割します。

train_test_split()を使用すると学習データとテストデータに勝手に分割してくれます。

実際に分割した後に確認してみると、学習データがテストデータが3対1の割合で分割されていることがわかります。

得られた学習データから重回帰モデルを作成します。

手順はさきほどと同じです。

学習データから重回帰モデルを作成する

f:id:Medicmed:20180603181337p:plain

簡単にモデルを作成することができました。

次に予測値を求めていきます。

学習データとテストデータからの予測値を求める

f:id:Medicmed:20180603181459p:plain

lreg.predict()を使用すると学習データ・テストデータからの予測値をそれぞれ求めることができます。

これらを利用して残差プロットを描いていきます。

残差プロットを作成する

f:id:Medicmed:20180603182711p:plain

残差プロットを作成することができました。

残差プロットで均一に分布していると線形回帰のモデルが悪くないことが分かります。

 

ぜひ参考にしてみてください。

終わり。

 

Pythonで学ぶあたらしい統計学の教科書

Pythonで学ぶあたらしい統計学の教科書