为什么Frechet发行版在scipy.stats与R

时间:2015-06-11 14:18:10

标签: python r scipy distribution

我在R中安装了一个frechet发行版,并希望在python脚本中使用它。但是在scipy.stats.frechet_r中输入相同的分布参数给了我一条非常不同的曲线。这是我的实施中的错误还是scipy的错误?

R分布: R frechet

vs Scipy发行版: scipy frechet

R frechet参数:loc = 17.440,shape = 0.198,scale = 8.153

python代码:

from scipy.stats import frechet_r
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(1, 1)

F=frechet_r(loc=17.440  ,scale= 8.153, c=   0.198)              
x=np.arange(0.01,120,0.01)
ax.plot(x, F.pdf(x), 'k-', lw=2)

plt.show()

修改 - 相关文档。

使用'evd'包http://cran.r-project.org/web/packages/evd/evd.pdf中的fgev函数在R中计算Frechet参数(第40页)

链接到scipy文档: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.frechet_r.html#scipy.stats.frechet_r

1 个答案:

答案 0 :(得分:2)

我没有使用scipy.stats中的frechet_r函数(当我快速测试它时,我得到了与你相同的情节)但你可以从scipy.stats中的genextreme获得所需的行为。值得注意的是,对于genextreme,Frechet和Weibull形状参数与通常具有“相反”的符号。也就是说,在您的情况下,您需要使用形状参数-0.198:

from scipy.stats import genextreme as gev
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(1, 1)

x=np.arange(0.01,120,0.01)
# The order for this is array, shape, loc, scale
F=gev.pdf(x,-0.198,loc=17.44,scale=8.153)

plt.plot(x,F,'g',lw=2)
plt.show()

Python Frechet distribution http://i66.tinypic.com/29sg46.png