Closed3
【Python】ロジスティック回帰で限界効果を求める
参考
定義
導出は
レコード
全体の限界効果を出すためには、この
- レコード単位で限界効果を算出してからレコード数で平均を取る
- 説明変数を平均してから
の式に代入するMPE_{ij}
実装
Pythonでロジスティック回帰を行う場合、 statsmodels
と scikit-learn
が候補に上がるだろう。
それぞれの場合で限界効果を算出するコードを書いてみた。
statsmodels
では限界効果を算出するメソッドが実装されており非常に楽チンなので、限界効果を算出したい際は statsmodels
を利用するのが良さそうである。
statsmodels
回帰の結果である statsmodels.discrete.discrete_model.LogitResults
というクラスに get_margeff
というメソッドが生えており、これを利用すれば良い。
import statsmodels.api as sm
model = sm.Logit(y, X)
res = model.fit()
# 限界効果に関するSummary
print(res.get_margeff(at='overall').summary())
scikit-learn
statsmodels
のような便利メソッドはないので、自力で算出する必要がある。
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
lr.fit(X, y)
y_pred = lr.predict_proba(X)[:, 1]
for i, col in enumerate(X.columns):
# statsmodelsの at='overall' に相当
ampe = (y_pred * (1 - y_pred) * lr.coef_[0][i]).mean()
print(col, ampe)
このスクラップは2024/01/06にクローズされました