Pythonモジュール「statsmodels」で回帰分析する方法についてソースコード付きでまとめました。
【statsmodelsとは】インストール方法
StatsModelsは、統計モデルを用いて推定や検定、探索ができるPythonライブラリです。
使用感は機械学習用ライブラリのcikit-learnと似ていますが、StatsModelsのほうが統計モデルに特化しているだけあって、統計モデルに関する機能は豊富です。
インストール
pipでインストール可能です。
pip install statsmodels
依存ライブラリは「numpy」「matplotlib」なので、まだ入れていない人はインストールしておきましょう。
【重回帰分析】サンプルコード
# -*- coding: utf-8 -*- import pandas as pd import numpy as np import statsmodels.api as sm # CSVファイルの読み込み data = pd.read_csv("C:\prog\python\\test\data.csv", sep=",") # 説明変数にx1とx2のデータを使用 X = data.loc[:, ['x1', 'x2']].values # 目的変数にx3のデータを使用 Y = data['x3'].values # 回帰モデルの呼び出し model = sm.OLS(Y, sm.add_constant(X)) # モデルの作成 results = model.fit() #結果の詳細を表示 print(results.summary()) """ OLS Regression Results ============================================================================== Dep. Variable: y R-squared: 0.662 Model: OLS Adj. R-squared: 0.623 Method: Least Squares F-statistic: 16.68 Date: Mon, 19 Aug 2019 Prob (F-statistic): 9.80e-05 Time: 19:35:26 Log-Likelihood: -56.837 No. Observations: 20 AIC: 119.7 Df Residuals: 17 BIC: 122.7 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 12.1847 19.105 0.638 0.532 -28.123 52.492 x1 0.7007 0.135 5.172 0.000 0.415 0.987 x2 -0.6467 0.904 -0.715 0.484 -2.555 1.262 ============================================================================== Omnibus: 2.244 Durbin-Watson: 2.280 Prob(Omnibus): 0.326 Jarque-Bera (JB): 1.590 Skew: -0.681 Prob(JB): 0.452 Kurtosis: 2.766 Cond. No. 927. ============================================================================== """
data.csv
サンプル数が20未満だと怒られるので適当に20個のサンプルを用意。
"x1","x2","x3" 45,17.5,30 38,17.0,25 41,18.5,20 34,18.5,30 59,16.0,45 47,19.0,35 35,19.5,25 43,16.0,35 54,18.0,35 52,19.0,40 45,17.5,30 38,17.0,25 41,18.5,20 34,18.5,30 59,16.0,45 47,19.0,35 35,19.5,25 43,16.0,35 54,18.0,35 52,19.0,40
詳細表示されている主なパラメータの説明は以下のとおり。
主なパラメータ | 概要 |
---|---|
R-squared | 決定係数。(1に近いほど精度の高いモデルであることを示す値) |
Adj. R-squared | 自由度調整済み決定係数。決定係数は説明変数が増えるほど1に近づく性質があるため、説明変数が多い場合は、決定係数ではなく自由度調整済み決定係数の値を利用。 |
AIC | モデルの当てはまり度を示す。小さいほど精度が高い。相対的な値である。 |
coef | 回帰係数 |
std err | 二乗誤差 |
t | t値。それぞれの説明変数が目的変数に与える影響の大きさを表します。つまり絶対値が大きいほど影響が強いことを意味します。1つの目安としてt値の絶対値が2より小さい場合は統計的にはその説明変数は目的変数に影響しないと判断します。 |
p | p値。それぞれの説明変数の係数の有意確率を表します。一般的に、有意確率が有意水準以下(5%を下回っている)ならば、その説明変数は目的変数に対して「関係性がある=有意性が高い」ということを示す。 |
[0.025 0.975] | 95%信頼区間。 |
– | 詳細記事 |
---|---|
1 | 【Python/statsmodels】重回帰分析と決定係数・t値の計算 |
– | 関連記事 |
---|---|
1 | 【Python入門】サンプル集・使い方 |
コメント