Weibull:R与Python的结果略有不同

2024-06-16 12:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用scipy.stats在Python中复制R的fitdist()结果(引用,无法修改R代码)。结果非常接近,但仍然不同(差异处于不可接受的水平)。有人知道为什么结果不同吗?如何减少结果之间的差异

scipy_stats.weibull_min定义(https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.weibull_min.html)似乎与R的weibull(https://stat.ethz.ch/R-manual/R-devel/library/stats/html/Weibull.html)相同

数据示例:

data = [2457.145, 878.081, 855.118, 1157.135, 1099.82]

R:

parameters <- fitdist(data, 'weibull',"mle")$estimate

R结果:

     shape      scale 
   2.30804 1463.88528

Python:

import scipy.stats as st
st.weibull_min.fit(data, floc=0)

Python结果:

(2.307899817944195, 0, 1463.7712925885176)

Tags: 代码httpsorgdocsdata定义htmlstats
1条回答
网友
1楼 · 发布于 2024-06-16 12:20:15

这种差异似乎是优化器使用的默认相对公差(以及正常浮点不精确)造成的。如果在R计算中收紧公差,则结果更接近SciPy结果:

> parameters <- fitdist(data, "weibull", method="mle", control=list(reltol=1e-14))$estimate
> parameters
    shape     scale 
   2.3079 1463.7715

相关问题 更多 >