Python による重回帰分析

statsmodels.formula.api.ols() コマンドで重回帰分析を行う。

Python を起動し、必要なライブラリを import する。

import pandas as pd
import statsmodels.formula.api as smf

通常は Excel 等で作成した CSV ファイルを pandas に読み込んで分析する。しかし、ここでは便宜的に以下の簡単なデータフレームを作成し、data という変数に格納しておく。

data = pd.DataFrame({"出血量":[10,200,300,5,5,3,250,500], "手術方法":["内視鏡","開腹","開腹","内視鏡","内視鏡","内視鏡","開腹","開腹"], "手術時間":[60,50,60,60,30,40,60,50]})

data の内容を確認する。

data

statsmodels.formula.api.ols() コマンドで重回帰分析を行う。単回帰分析を行うこともできる。手術方法のような2値データはダミーに変換される。

lm = smf.ols("出血量 ~ 手術時間 + 手術方法", data).fit()
lm.summary() #結果の表示。

statsmodels.formula.api.glm() コマンドを使い、一般化線形モデルとして重回帰分析を行うこともできる。この場合、検定は t 検定ではなく、Wald 検定が行われる。リンク関数は恒等関数が自動的に選択される。また、summary() コマンドで AIC(赤池情報量基準)は表示されない。

import statsmodels.api as sm #確率分布指定のために必要
glm = smf.glm(formula = "出血量 ~ 手術時間 + 手術方法", data = data, family = sm.families.Gaussian()).fit()
glm.summary() #結果の表示
glm.aic #赤池情報量基準