Python 为什么Frechet分布在scipy.stats和R中有所不同
我在R中安装了一个frechet发行版,并希望在python脚本中使用它。然而,在scipy.stats.frechet_r中输入相同的分布参数会给我一个非常不同的曲线。这是我的实现中的错误还是scipy中的错误 R分布: vs Scipy分布: R-frechet参数:loc=17.440,形状=0.198,比例=8.153 python代码:Python 为什么Frechet分布在scipy.stats和R中有所不同,python,r,scipy,distribution,Python,R,Scipy,Distribution,我在R中安装了一个frechet发行版,并希望在python脚本中使用它。然而,在scipy.stats.frechet_r中输入相同的分布参数会给我一个非常不同的曲线。这是我的实现中的错误还是scipy中的错误 R分布: vs Scipy分布: R-frechet参数:loc=17.440,形状=0.198,比例=8.153 python代码: from scipy.stats import frechet_r import matplotlib.pyplot as plt import
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”包中的fgev函数在R中计算Frechet参数(第40页)
链接到scipy文档:
我没有使用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版本和R版本文档的链接(或发布代码)?最有可能的是参数化的不同。@BenBolker替代参数化的解释也是我所想的。如果我是神秘的Visionnnn,我可能会尝试使用scale=1/8.153或c=1/0.198,看看它们是否与R给出的匹配。不过最好是追踪文档。