Python Scipy Stats Rayleigh分布参数估计函数为尺度参数提供负值,ppf函数提供nan输出

lztngnrs  于 2023-06-23  发布在  Python
关注(0)|答案(1)|浏览(208)

我使用瑞利分布来估计尺度参数,并且得到负值,尽管数据集不包含任何负值。这个负值意味着什么?如果我有负值,那么ppf给出nan输出。

from scipy.stats import rayleigh

def baseline_rayleigh(data):
    pd = rayleigh.fit(data)
    B = pd[0]
    return B

p = 0.1
B = baseline_rayleigh(data)
ThreshL = rayleigh.ppf(1 - p, scale=B)

对于相同的数据,Matlab rayleigh函数给出非负值,并从raylinv函数获得有效输出,而Python等效的rayleigh.ppf给出nan输出。

pd = fitdist(data,'Rayleigh')
B = pd.B;
ThreshL = raylinv(1-p,B);
rlcwz9us

rlcwz9us1#

rayleigh.fit(data)返回2元组location, scale。简单修复:

B = pd[1]  # instead of pd[0]

您还可以通过固定位置参数来改进估计:

pd = rayleigh.fit(data, floc=0)

双参数瑞利分布的解释here。请注意,它以不同的方式定义了scale参数,例如\lambda = 1/2\sigma^2。scipy估计并返回\sigma,而不是\lambda

相关问题