小编E. *_*. B的帖子

使用 scipy truncnorm 拟合数据

我有遵循高斯分布的数据。然而,数据仅对于一系列值 [xa,xb] 来说才是真正的高斯分布,因此我想使用scipy.stats.truncnorm拟合截断正态分布,同时使用我知道范围 [xa,xb] 的事实。我的目标是找到地点和规模。

我不明白如何在拟合中修复 xa 和 xb 。形状参数是“a”和“b”,但这些参数取决于位置和比例,这是我的未知数。而且,似乎无法对'a'和'b'进行初步猜测(它们只能用fa和fb冻结?)。当我做:

par = truncnorm.fit(r, a=a_guess, b=b_guess, scale= scale_guess, loc = loc_guess)
Run Code Online (Sandbox Code Playgroud)

我明白了

未知参数:{'a':0.0,'b':2.4444444444444446}。

而且,我得到的配合非常不稳定。这是一个例子:

from scipy.stats import truncnorm
import matplotlib.pyplot as plt

xa, xb = 30,250 
loc, loc_guess = 50, 30
scale, scale_guess = 75, 90
a,b = (xa-loc)/scale, (xb-loc)/scale

fig, ax = plt.subplots(1, 1)
x = np.linspace(xa,xb,10000)    
ax.plot(x, truncnorm.pdf(x, a, b, loc=loc, scale=scale),
        'r-', lw=5, alpha=0.6, label='truncnorm pdf')

r = truncnorm.rvs(a, b, loc=loc, scale=scale, size=10000)
par = truncnorm.fit(r, …
Run Code Online (Sandbox Code Playgroud)

python scipy

6
推荐指数
1
解决办法
4908
查看次数

标签 统计

python ×1

scipy ×1