統計モデルを使用してロジスティック回帰を実行する方法


Python のstatsmodelsモジュールは、さまざまな統計モデルを適応させるためのさまざまな関数とクラスを提供します。

次のステップバイステップの例は、statsmodels 関数を使用してロジスティック回帰を実行する方法を示しています。

ステップ 1: データを作成する

まず、3 つの変数を含む pandas DataFrame を作成しましょう。

  • 学習時間(全体値)
  • 勉強法(A法またはB法)
  • 試験結果(合否)

学習時間と学習方法を使用してロジスティック回帰モデルを当てはめ、学生が特定の試験に合格するかどうかを予測します。

次のコードは、pandas DataFrame を作成する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' result ': [0, 1, 0, 0, 0, 0, 0, 1, 1, 0,
                              0, 1, 1, 1, 0, 1, 1, 1, 1, 1],
                   ' hours ': [1, 2, 2, 2, 3, 2, 5, 4, 3, 6,
                            5, 8, 8, 7, 6, 7, 5, 4, 8, 9],
                   ' method ': ['A', 'A', 'A', 'B', 'B', 'B', 'B',
                             'B', 'B', 'A', 'B', 'A', 'B', 'B',
                             'A', 'A', 'B', 'A', 'B', 'A']})

#view first five rows of DataFrame
df. head ()

	result hours method
0 0 1 A
1 1 2 A
2 0 2 A
3 0 2 B
4 0 3 B

ステップ 2: ロジスティック回帰モデルを当てはめる

次に、 logit()関数を使用してロジスティック回帰モデルを近似します。

 import statsmodels. formula . api as smf

#fit logistic regression model
model = smf. logit (' result~hours+method ', data=df). fit ()

#view model summary
print ( model.summary ())

Optimization completed successfully.
         Current function value: 0.557786
         Iterations 5
                           Logit Regression Results                           
==================================================== ============================
Dept. Variable: result No. Observations: 20
Model: Logit Df Residuals: 17
Method: MLE Df Model: 2
Date: Mon, 22 Aug 2022 Pseudo R-squ.: 0.1894
Time: 09:53:35 Log-Likelihood: -11.156
converged: True LL-Null: -13.763
Covariance Type: nonrobust LLR p-value: 0.07375
==================================================== ============================
                  coef std err z P>|z| [0.025 0.975]
-------------------------------------------------- -----------------------------
Intercept -2.1569 1.416 -1.523 0.128 -4.932 0.618
method[TB] 0.0875 1.051 0.083 0.934 -1.973 2.148
hours 0.4909 0.245 2.002 0.045 0.010 0.972
==================================================== ============================

出力のcoef列の値は、試験に合格する対数オッズの平均変化を示します。

例えば:

  • 勉強法 B を使用すると、勉強法 A を使用した場合と比較して、試験に合格する対数オッズが平均0.0875増加します。
  • 追加の学習時間が 1 時間増えるごとに、試験に合格する対数オッズが平均0.4909増加します。

P>|z|の値列は各係数の p 値を表します。

例えば:

  • この研究方法の p 値は0.934です。この値は 0.05 未満ではないため、学習時間と試験の合格との間に統計的に有意な関係がないことを意味します。
  • 学習時間の p 値は0.045です。この値は 0.05 未満であるため、学習時間と学生が試験に合格するかどうかの間に統計的に有意な関係があることを意味します。

ステップ 3: モデルのパフォーマンスを評価する

ロジスティック回帰モデルの品質を評価するには、出力内の 2 つのメトリクスを確認します。

1. 愛称 R-2乗

この値は、線形回帰モデルの R 二乗値の代替値と考えることができます。

これは、ヌル モデルから完全モデルへの最大化された対数尤度関数の比率として計算されます。

この値の範囲は 0 から 1 で、値が大きいほどモデルの適合性が高いことを示します。

この例では、擬似 R 二乗値は0.1894であり、非常に低い値です。これは、モデルの予測変数が応答変数の値をうまく予測していないことを示しています。

2. LLR p 値

この値は、線形回帰モデルの全体的な F 値のp 値の代替として考えることができます。

この値が特定のしきい値 (たとえば、α = 0.05) を下回っている場合、モデル全体が「有用」であると結論付けることができ、予測変数のないモデルと比較して応答変数の値をより正確に予測できます。

この例では、LLR の p 値は0.07375です。選択した有意水準 (0.01、0.05、0.1 など) に応じて、モデル全体が有用であると結論付ける場合もあれば、そうでない場合もあります。

追加リソース

次のチュートリアルでは、Python で他の一般的なタスクを実行する方法について説明します。

Python で線形回帰を実行する方法
Python で対数回帰を実行する方法
Python で分位点回帰を実行する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です