【Python】臨床研究のための医学統計/線形回帰

この記事をシェアする

 

はじめに

RではなくPythonを使用して線形回帰を行いたいと思います。

今回使用するデータは、日本統計学会のサイトに掲載されてるダウンロード用データです。

日本統計学会公式認定 統計検定2級対応 統計学基礎

その中から、第二章の練習問題である「Mansion1.csv」データを使用したいと思います。

今回はターミナルではなくjupyter notebookを使用します。

 

Jupyter Notebookを起動させよう!

f:id:Medicmed:20180603015044p:plain

pandasのread_csv()を使用して"Mansion1.csv"データを読み込みます。

ヘッダーが日本語のままなので英語に変換しておきます。

日本語を英語に変換する!

f:id:Medicmed:20180603015243p:plain

データフレームのcolumns属性にアクセスして英語名に変換します。

変換が終わったら軽くデータをプロットしてみます。

 

家賃でヒストグラムを作成する!

f:id:Medicmed:20180603015514p:plain

家賃10万円が一番多いことが分かります。

今度は散布図で確認していきます。

家賃で散布図を作成する!

f:id:Medicmed:20180603015841p:plain

seabornを使用するとよりキレイに可視化できるのでそちらでも確認していきます。

 

Seabornでもグラフ作成してみる!

「近さ」で層別化してグラフを作成してみました。

f:id:Medicmed:20180603020136p:plain

「間取り」でも同じようにpairplotを使用してみます。

f:id:Medicmed:20180603020329p:plain

Rのggplot2みたいにキレイなグラフを作成することができました。

次に回帰直線を引いていきます。

 

Seabornを使用して線形回帰!

seabornの「lmplot()」を使用すると回帰直線を引くことができます。

 家賃と築年数で回帰直線!

f:id:Medicmed:20180603020802p:plain

 

家賃と部屋の大きさで回帰直線!

f:id:Medicmed:20180603020957p:plain

部屋が広くなると家賃も高くなるって当たり前のグラフです。

 

Numpyを使用して線形回帰!

今後はNumpyでの線形回帰を行いたいと思います。

f:id:Medicmed:20180603021244p:plain

そのままの状態では単回帰直線を求められないので、変換する必要があります。

二次元配列に変換するにはnumpyのvstack()関数を使用していきます。

f:id:Medicmed:20180603021351p:plain

リスト内包表記で作ったリストをarrayに変換します。

f:id:Medicmed:20180603021555p:plain

numpyの"linalg.lstsq()"を使用して、回帰係数と切片をa・bという変数に格納します。

家賃と築年数の単回帰直線グラフを作成!

f:id:Medicmed:20180603021752p:plain

seabornのlmplot()を使用して作成したグラフと同じグラフが作成できました。

 

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

終わり。 

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

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