重回帰分析
Pythonで重回帰分析を行うサンプルコードを示します。
重回帰分析は複数の説明変数を用いて、目的変数との関係を分析する手法です。
Pythonではstatsmodelsライブラリを使うと簡単に実装できます。
1 | import statsmodels.formula.api as smf |
statsmodels.formula.apiモジュールを使うと、回帰式を文字列で指定できます。
fit()メソッドでモデルを学習させた後、summary()メソッドで分析結果の概要表を出力します。
[実行結果]
OLS Regression Results
==============================================================================
Dep. Variable: Y R-squared: 1.000
Model: OLS Adj. R-squared: 1.000
Method: Least Squares F-statistic: 1.056e+30
Date: Fri, 20 Oct 2023 Prob (F-statistic): 9.47e-31
Time: 07:55:58 Log-Likelihood: 164.00
No. Observations: 5 AIC: -322.0
Df Residuals: 2 BIC: -323.2
Df Model: 2
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 3.0000 4.67e-15 6.43e+14 0.000 3.000 3.000
X1 0.9901 3.52e-15 2.81e+14 0.000 0.990 0.990
X2 0.0990 3.52e-16 2.81e+14 0.000 0.099 0.099
X3 -4.441e-16 5.81e-16 -0.764 0.525 -2.95e-15 2.06e-15
==============================================================================
Omnibus: nan Durbin-Watson: 0.667
Prob(Omnibus): nan Jarque-Bera (JB): 0.839
Skew: 0.408 Prob(JB): 0.657
Kurtosis: 1.167 Cond. No. 7.27e+17
==============================================================================
このようにPythonでは重回帰分析を簡潔に実行できるのが強みです。
ソースコード解説
このPythonコードで行っている重回帰分析について説明します。
最初に
statsmodels.formula.apiモジュールをsmfとしてインポートしています。
これにより回帰式を文字列で指定できるようになります。次に
pandasを使って、解析に使用するデータフレームdfを準備しています。
Yが目的変数、X1~X3が説明変数です。smf.ols()により重回帰モデルを定義しています。
第一引数に回帰式’Y ~ X1 + X2 + X3’を指定し、第二引数にデータフレームを渡しています。fit()メソッドで定義したモデルをデータにフィッティングしています。
これによりモデルの係数が学習されます。最後に
summary()メソッドで分析結果の概要表を出力しています。
ここには決定係数、F値、p値、各説明変数の係数とp値などが表示されます。
このように、Pythonで重回帰分析を簡潔に実行できることが分かります。
statsmodelsは線形回帰分析を扱う強力なライブラリです。
結果解説
この重回帰分析の結果を見ていきましょう。
R-squaredとAdj. R-squaredが1.0に近い値を取っていることから、このモデルの説明力は非常に高いことが分かります。
F値が大きく、p値が0に近いことから、全体の回帰モデルは統計的に有意であることが支持されています。
X1とX2の係数は正で、X3の係数は0に近い負の値を取っています。
X1とX2のp値が0に非常に近いため、これらの変数はYに対して統計的に有意な正の影響を与えていると判断できます。
X3のp値は高いため、この変数はYとの関係が統計的に有意ではないと考えられます。
標準誤差は非常に小さい値を取っていることから、係数の推定精度は高いことが伺えます。
残差の正規性や多重共線性等にも大きな問題は見られません。
以上のことから、このモデルは非常に高い適合度と説明力を持ち、X1とX2がYに正の影響を与えることが示唆されています。








