您可以使用delta method查找预测概率的近似方差 . 也就是说,
var(proba) = np.dot(np.dot(gradient.T, cov), gradient)
其中 gradient 是模型系数的预测概率导数的向量, cov 是系数的协方差矩阵 .
事实证明,Delta方法可以渐近地用于所有最大似然估计 . 但是,如果您有一个小的训练样本,渐近方法可能无法正常工作,您应该考虑自举 .
以下是将delta方法应用于逻辑回归的玩具示例:
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
# generate data
np.random.seed(1)
x = np.arange(100)
y = (x * 0.5 + np.random.normal(size=100,scale=10)>30)
# estimate the model
X = sm.add_constant(x)
model = sm.Logit(y, X).fit()
proba = model.predict(X) # predicted probability
# estimate confidence interval for predicted probabilities
cov = model.cov_params()
gradient = (proba * (1 - proba) * X.T).T # matrix of gradients for each observatio