プロビット回帰分析

プロビット回帰分析とは?

プロビット回帰分析は、二値応答変数(例えば、「成功/失敗」や「はい/いいえ」のようなカテゴリー)を持つデータに対して用いられる統計的手法です。プロビット回帰は、応答変数が正規分布に従うと仮定することで、ロジスティック回帰とは異なるアプローチを取ります。

この記事では、プロビット回帰分析を行ってみます。
環境はGoogle Corabです。

シミュレーションデータの生成

平均0、分散1の正規分布に従う乱数を100個生成し、Xに格納しています。これが説明変数になります。またXにノイズを加えた値が0より大きいかどうかを判定して、1または0の応答変数を生成しています。

import numpy as np

np.random.seed(0)
n = 100
X = np.random.normal(size=n)
Y = (X + np.random.normal(size=n) > 0).astype(int)

プロビット回帰モデル

statsmodels ライブラリに含まれるProbitクラスを利用してモデルを実装します。

import statsmodels.api as sm

X_with_const = sm.add_constant(X)

probit_model = sm.Probit(Y, X_with_const)
probit_result = probit_model.fit()

probit_result.summary()

fit()による適合後、summary()でモデルの適合結果を要約して表示します。下記の要約が表示されます。

結果の要約

基本統計情報

  • Current function value: 0.527309: 最適化された対数尤度関数の値を示しています。

  • Iterations 6: 最適化に要した反復回数です。

モデルの概要

  • Dep. Variable: y: 応答変数の名前です。この場合、y です。

  • No. Observations: 100: 観測データ数

  • Model: Probit: 適用されたモデルの種類を示しています。この場合はプロビット回帰です。

  • Df Residuals: 98: 自由度残差です。データの数から推定されたパラメータの数を引いた値です(100 - 2 = 98)。

  • Method: MLE: 最尤推定法(Maximum Likelihood Estimation)を用いてパラメータを推定しています。

  • Df Model: 1: モデルの自由度です。この場合、説明変数の数を示しています。

  • Date: モデルの適合が行われた日付です。

  • Pseudo R-squ.: 0.2373: 疑似R二乗値です。これはモデルの適合度を示す指標で、通常のR二乗値に類似しています。

  • Log-Likelihood: -52.731: モデルの対数尤度です。対数尤度はモデルの適合度を評価するための指標です。

  • converged: True: モデルの最適化が収束したことを示しています。

  • LL-Null: -69.135: Nullモデル(説明変数なしのモデル)の対数尤度です。

  • Covariance Type: nonrobust: 共分散タイプです。

可視化

最後に回帰分析の結果を可視化してみます。

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.scatter(X, Y, color='blue', label='Actual')
plt.scatter(X, predicted_prob, color='red', label='Predicted')
plt.xlabel('X')
plt.ylabel('Probability')
plt.title('Probit Regression Results')
plt.legend()
plt.show()