你如何在scipy genextreme发行版中设置'尾概率'?

时间:2014-01-27 03:12:47

标签: statistics scipy

有没有人知道如何在scipy的'genextreme'发行版中设置'q'参数(控制下尾概率)?

  

#/ usr / bin / env python

     

将numpy导入为np
  将pylab导入为plt
  来自scipy.stats import genextreme

     

mu,sigma = 10,4   #问题:如何在genextreme中设置q,下尾或上尾概率?
  rv = genextreme(c = [0],loc = mu,scale = sigma)
  x = np.linspace(0,40,50)#从0-40

生成50个值      

y_pdf = rv.pdf(x)
  plt.plot(x,y_pdf,'ro-',label ='PDF')

     

y_cdf = rv.cdf(x)
  plt.plot(x,y_cdf,'b * - ',label ='CDF')

     

plt.legend()
  plt.show()

@Warren:感谢您提供的信息。我是scipy stats的新手。如何移动分布以使pdf在高端更加重要?我尝试将'c'参数更改为[0.9],但是输出非常波动,有一个快速上升,然后是一个戏剧性的几乎直线下降到零的位置。

1 个答案:

答案 0 :(得分:1)

q不是scipy genextreme distribution的参数。它是方法ppf(cdf的反转)和isf(生存函数的反转)的参数。如果你查看其他发行版的文档 - 例如。 normgamma - 您会看到所有类级文档字符串在其“参数”中列出q,但该文档概述了所有方法的参数。 genextreme具有标准的位置和比例参数,以及一个形状参数c

示例:

>>> genextreme.cdf(genextreme.ppf(0.95, c=0.5), c=0.5)
0.94999999999999996

您可以找到有关generalized extreme distribution on wikipedia的更多信息,但请注意,scipy中使用的shape参数与维基百科文章中的形状参数符号相反。例如,以下内容生成维基百科图:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import genextreme

# Create the wikipedia plot.
plt.figure(1)
x = np.linspace(-4, 4, 201)
plt.plot(x, genextreme.pdf(x, 0.5), color='#00FF00', label='c = 0.5')
plt.plot(x, genextreme.pdf(x, 0.0), 'r', label='c = 0')
plt.plot(x, genextreme.pdf(x, -0.5), 'b', label='c = -0.5')
plt.ylim(-0.01, 0.51)
plt.legend(loc='upper left')
plt.xlabel('x')
plt.ylabel('Density')
plt.title('Generalized extreme value densities')
plt.show()

结果:

genextreme densities

c< 0,分布支持的左端是loc + scale / c。以下内容使用c = -0.25scale = 5loc = -scale / c创建分布图(因此支持的左端为0):

c = -0.25
scale = 5
loc = -scale / c
x = np.linspace(0, 80, 401)
pdf = genextreme.pdf(x, c, loc=loc, scale=scale)
plt.plot(x, pdf)
plt.xlabel('x')
plt.ylabel('Density')

简介:

genextreme example

scipy文档网站上的stats tutorial提供了有关分发类的更多信息,包括shifting and scaling a distribution部分。