重回帰分析
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に正の影響を与えることが示唆されています。