为什么 Frechet 分布在 scipy.stats 和 R 中不同
Why do the Frechet distributions differ in scipy.stats vs R
我在 R 中安装了一个 frechet 分布,并想在 python 脚本中使用它。但是,在 scipy.stats.frechet_r 中输入相同的分布参数会给我一条截然不同的曲线。这是我的实现错误还是 scipy 中的错误?
R分布:
与 Scipy 分布:
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()
编辑 - 相关文档。
Frechet 参数是使用 'evd' 包 http://cran.r-project.org/web/packages/evd/evd.pdf(第 40 页)
中的 fgev 函数在 R 中计算的
Link 到 scipy 文档:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.frechet_r.html#scipy.stats.frechet_r
我没有使用 scipy.stats 中的 frechet_r 函数(当我快速测试它时,我得到了和你一样的图)但是你可以从 [= 中的 genextreme 获得所需的行为17=]。值得注意的是,对于 genextreme,Frechet 和 Weibull 形状参数通常带有 'opposite' 符号。也就是说,在您的情况下,您需要使用形状参数 -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()
我在 R 中安装了一个 frechet 分布,并想在 python 脚本中使用它。但是,在 scipy.stats.frechet_r 中输入相同的分布参数会给我一条截然不同的曲线。这是我的实现错误还是 scipy 中的错误?
R分布:
与 Scipy 分布:
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()
编辑 - 相关文档。
Frechet 参数是使用 'evd' 包 http://cran.r-project.org/web/packages/evd/evd.pdf(第 40 页)
中的 fgev 函数在 R 中计算的Link 到 scipy 文档: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.frechet_r.html#scipy.stats.frechet_r
我没有使用 scipy.stats 中的 frechet_r 函数(当我快速测试它时,我得到了和你一样的图)但是你可以从 [= 中的 genextreme 获得所需的行为17=]。值得注意的是,对于 genextreme,Frechet 和 Weibull 形状参数通常带有 'opposite' 符号。也就是说,在您的情况下,您需要使用形状参数 -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()