Pythonでデータサイエンスを試す(重回帰2)

かつてこの記事を書いた時にOrangeというパッケージを使っていたのですが、もっぱらstatsmodelsなので、 書き直します。

esu-ko.hatenablog.com

当時とおなじく、用いるのはこの本のデータです。
本の中ではR実装です。

コード

import pandas as pd

df =  #いい感じにデータを読み込む

#statsmodels
import statsmodels.api as sm
#フォーミュラ式
import statsmodels.formula.api as smf

#モデルを作る
res = smf.ols(formula='Revenue ~ CM + Temp + Firework', data=df2).fit()


res.summary()

中段に回帰係数の情報がでます

coef std err t   P>|t|    [0.025  0.975]
Intercept   17.2338 12.405  1.389   0.177   -8.266  42.733
CM  -0.0428 0.078   -0.551  0.586   -0.203  0.117
Temp    0.9872  0.179   5.501   0.000   0.618   1.356
Firework    3.1816  0.960   3.314   0.003   1.208   5.155

本書と同じでした。

その他

summaryで帰ってくる表は人間の目で見る分にはいいのですが、再活用すると使いにくいので、別の取り出し方を把握しておきます。

#回帰係数
res.params

#p値
res.pvalus

#t値
res.tvalues

#R^2
res.rsquared
res.rsquared_adj

#aic,bic
res.aic
res.bic

#resid
res.resid
#可視化
pd.Series(res.resid).plot()

▼statsmodelsのglmやフォーミュラについて書いたのこちら esu-ko.hatenablog.com