Pythonのstatsmodels.apiを用いてロジスティック回帰を行う
– How to estimate “logit” models using Python

Pythonのstatsmodels.apiを用いてロジスティック回帰を行う
– How to estimate “logit” models using Python

statsmodels.apiのLogitは、二項ロジスティック回帰を実施するためのクラスです。二項ロジスティック回帰は、2つのカテゴリをもつ従属変数(成功・失敗、0・1など)を予測するための統計モデルです。以下は、Logitクラスの主なプロパティとメソッドについての説明です。

statsmodels.apiのLogitクラス

Logitクラスの主なプロパティ:

  1. endog (依存変数):
    • 被説明変数(従属変数)を表します。
  2. exog (独立変数):
    • 説明変数(独立変数)を表します。
  3. formula (数式):
    • 回帰モデルの式を文字列で指定します。
  4. data (データフレーム):
    • 回帰分析に使用するデータを含むデータフレームです。

Logitクラスの主なメソッド:

  1. fit() メソッド:
    • ロジスティック回帰モデルを適合させます。
  2. predict() メソッド:
    • 新しいデータに対する予測値を計算します。
  3. summary() メソッド:
    • 回帰モデルの要約統計を表示します。

使用例:

import statsmodels.api as sm
import pandas as pd

# データの作成
data = {'y': [0, 1, 0, 1, 0, 1, 1, 1, 1, 0],
        'x1': [1, 2, 3, 4, 5, 1, 2, 3, 4, 5],
        'x2': [2, 3, 4, 5, 1, 2, 3, 4, 5, 1]}

df = pd.DataFrame(data)

# ロジスティック回帰モデルの作成
model = sm.Logit(df['y'], sm.add_constant(df[['x1', 'x2']]))

# モデルの適合
result = model.fit()

# モデルの要約統計を表示
print(result.summary())

この例では、x1とx2が説明変数、yが被説明変数として、二項ロジスティック回帰モデルを作成しています。fit()メソッドでモデルを適合させ、summary()メソッドで結果の要約統計を表示しています。

推定結果の読み方

推定結果は、具体的なデータセットに依存しますが、上記のコードでは示されたように、ロジスティック回帰モデルの各係数(const、x1、x2)に関する推定値、標準誤差、z値、p値などが表示されます。

以下は、典型的な回帰結果の一例です(出力は実際のデータによって変わります):

                           Logit Regression Results                           
==============================================================================
Dep. Variable:                      y   No. Observations:                   10
Model:                          Logit   Df Residuals:                        7
Method:                           MLE   Df Model:                            2
Date:                Mon, 01 Jan 2023   Pseudo R-squ.:                 0.09541
Time:                        12:34:56   Log-Likelihood:                -5.5879
converged:                       True   LL-Null:                       -6.1877
Covariance Type:            nonrobust   LLR p-value:                    0.3188
==============================================================================
                 coef    std err          z      P>|z|      [0.025      0.975]
------------------------------------------------------------------------------
const         -1.2022      2.639     -0.455      0.649      -6.384       4.980
x1             0.6394      1.064      0.601      0.548      -1.447       2.726
x2             0.2387      1.016      0.235      0.814      -1.755       2.233
==============================================================================

ロジスティック回帰の結果を読むためには、各係数(const、x1、x2)に注目します。以下にそれぞれの項目の解釈を示します:

  1. const (切片):
    • const の係数は -1.2022 です。これは x1 と x2 がゼロのときの応答変数(目的変数)の対数オッズ比の推定値です。
    • 対数オッズ比が正の場合、応答変数のオッズ(確率の対数)が増加する傾向があります。負の場合は逆です。
  2. x1 (説明変数1):
    • x1 の係数は 0.6394 です。これは説明変数 x1 の対数オッズ比の推定値です。
    • この係数が正であれば、x1 が増加すると応答変数のオッズが増加します。
  3. x2 (説明変数2):
    • x2 の係数は 0.2387 です。これは説明変数 x2 の対数オッズ比の推定値です。
    • この係数が正であれば、x2 が増加すると応答変数のオッズが増加します。
  4. P>|z| (z値のp値):
    • P>|z| は z 値の p 値です。各説明変数の係数が統計的に有意であるかどうかを示します。通常、この値が 0.05 より小さい場合、統計的に有意と見なされます。

上記の例では、各説明変数の p 値が 0.05 よりも大きいため、それぞれの係数は統計的に有意ではないと言えます。また、Pseudo R-squ. や Log-Likelihood などの統計的な評価指標も確認することが重要です。

ロジスティック回帰の説明

ロジスティック回帰は、二値分類問題におけるイベント発生の確率をモデル化します。基本理論は以下の通りです:

ロジスティック回帰モデル

ロジスティック回帰モデルは以下の式で表されます:

\[ \text{{logit}}(p) = \log\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \ldots + \beta_k x_k \]

主要用語:

  • \(p\): イベント発生の確率(応答変数)。
  • \(\text{{logit}}(p)\): オッズ比の自然対数を表すlogit関数。
  • \(\beta_0, \beta_1, \ldots, \beta_k\): 回帰係数。
  • \(x_0, x_1, \ldots, x_k\): 独立変数(特徴量)。

尤度関数:

尤度関数は以下のように表されます:

\[ L(\beta) = \prod_{i=1}^{n} p_i^{y_i} \cdot (1-p_i)^{1-y_i} \]

対数尤度関数:

対数尤度関数は:

\[ \text{{Log-Likelihood}}(\beta) = \sum_{i=1}^{n} \left[ y_i \log(p_i) + (1-y_i) \log(1-p_i) \right] \]

ロジスティック回帰モデルは最大尤度法によって尤度関数を最大化し、最適な回帰係数を得ることを目指します。

にほんブログ村 教育ブログへ
にほんブログ村
インターネット・コンピュータランキング
インターネット・コンピュータランキング
ブログ王ランキングに参加中!
PC関連ランキング
くる天 人気ブログランキング

Pythonのstatsmodels.apiを用いてロジスティック回帰を行う
– How to estimate “logit” models using Python
」への4件のフィードバック

コメントを残す

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