我使用 scipy.stats.logistic.fit() 和固定位置值,来获得估计的尺度参数,而残差不保持 qqplot 的正态性。
我应该如何改进它以及如何可视化错误?还有其他方法来估计逻辑分布的参数吗?
谢谢你!
让我们创建一个综合数据集:
import numpy as np
from scipy import stats, optimize
np.random.seed(123456)
law = stats.logistic(loc=1.2, scale=2.3)
data = law.rvs(30000)
您可以使用固定参数进行拟合:
stats.logistic.fit(data, floc=1.2)
# (1.2, 2.30433453917283)
如果您想自己执行 MLE,只需说明可能性:
def factory(x, loc=0.):
def wrapped(p):
return - stats.logistic(loc=loc, scale=p[0]).logpdf(x).sum()
return wrapped
likelihood = factory(data, loc=1.2)
sol = optimize.minimize(likelihood, x0=[1])
# message: Optimization terminated successfully.
# success: True
# status: 0
# fun: 85067.14024628093
# x: [ 2.304e+00]
# nit: 7
# jac: [ 0.000e+00]
# hess_inv: [[ 1.238e-04]]
# nfev: 16
# njev: 8
这也为您提供了参数估计的不确定性 (
hess_inv
)。