微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 st.gumbel_r.ppf() 时的不同结果

如何解决使用 st.gumbel_r.ppf() 时的不同结果

我想使用 st.gumbel_r.ppf() 计算给定概率的值。我正在将它与解析解进行比较,它给了我完全不同的结果,有人知道为什么吗? 我使用方法的矩获得了比例和位置的值

P_class = [0.14285714,0.28571429,0.42857143,0.57142857,0.71428571,0.85714286,0.999999]

u = 8.590342451210152
alpha = 0.1841827435642898

h_class1 = st.gumbel_r.ppf(P_class,scale = u,loc = alpha)
h_class = u-np.log(-np.log(P_class))/alpha

Results
h_class1 = [ -5.53466431,-1.7516637,1.6076281,5.17091797,9.54112426,16.24661736,118.86414528]
h_class = [4.97583548,7.36682128,9.49000861,11.74212971,14.50424958,18.74235061,83.60013865]

我想在使用 scipy 函数时得到相同的 h_class 结果

解决方法

给定您的比例位置值,您定义的右偏 Gumpel 分布是

dist = sps.gumbel_r(loc=alpha,scale=u)
x = np.linspace(dist.ppf(.0001),dist.ppf(.99999),1000)
pdf = dist.pdf(x)
cdf = dist.cdf(x)
fig,ax = plt.subplots(1,2,figsize=(12,4))
ax[0].plot(x,pdf)
ax[0].set_title('PDF')
ax[1].plot(x,cdf)
ax[1].set_title('CDF')
for p in P_class:
    ax[1].axhline(p,color='r',ls='--',lw=1)
    ax[1].axvline(dist.ppf(p),color='k',ls=':',lw=1)
    print('CDF:',p,'X:',dist.ppf(p))
plt.show()

使用 ppf(百分比点函数),您在累积密度函数 (CDF) 的值 x 处评估 p 的值

enter image description here

CDF: 0.14285714 X: -5.534664397573627
CDF: 0.28571429 X: -1.7516635973033354
CDF: 0.42857143 X: 1.6076281292815586
CDF: 0.57142857 X: 5.170917935306729
CDF: 0.71428571 X: 9.541124106213145
CDF: 0.85714286 X: 16.246617550548397
CDF: 0.999999 X: 118.86414527936681

因此,可能是您获得的比例位置错误,或者您要搜索的内容不同。

,

您混淆了比例和位置参数,h_class 的正确表达式如下。

import scipy.stats as st
P_class = [0.14285714,0.28571429,0.42857143,0.57142857,0.71428571,0.85714286,0.999999]

u = 8.590342451210152
alpha = 0.1841827435642898

h_class1 = st.gumbel_r.ppf(P_class,scale = u,loc = alpha)
h_class = alpha-np.log(-np.log(P_class))*u
print(h_class1)
print(h_class)

和你完美匹配

[ -5.5346644   -1.7516636    1.60762813   5.17091794   9.54112411
  16.24661755 118.86414528]
[ -5.5346644   -1.7516636    1.60762813   5.17091794   9.54112411
  16.24661755 118.86414528]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。