此问题在此处已有答案:
Scipy lognorm fitting to histogram(1个答案)
Scaling and fitting to a log-normal distribution using a logarithmic axis(3个答案)
Scaling the fitted PDF of a log-normal distribution to the histogram(1个答案)
21天前关闭
我想检查我的数据的拟合度,我怀疑数据是对数正态分布的,使用直方图并将对数正态PDF作为一条线覆盖。我从数据中估计对数正态参数并生成n=1000个数据点(与数据相同的数字)。data_list是一个包含1000个整数数据点的列表。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm
...
data = np.array(data_list)
plt.hist(data, bins=32, density=True, alpha=0.6, color='g', label='Data')
sigma, _, mu = lognorm.fit(np.log(data), floc=0)
x = np.linspace(min(data), max(data), 1000)
lognormal_data = lognorm.pdf(x, sigma, scale=np.exp(mu))
plt.plot(x, lognormal_data, 'r-', lw=2, label='Lognormal Distribution')
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.legend()
plt.title('Histogram Overlay with Lognormal Distribution')
plt.grid(True)
plt.show()
字符串
但是,结果图如下:
看起来对数正态分布的初始参数偏离了,因为它与数据不一致。此外,曲线看起来比对数正态分布更正常。有人看到我在这里做错了吗?>
1条答案
按热度按时间vmjh9lq91#
我不是统计学家,但如果你怀疑
data
有对数正态分布,你不应该试着拟合data
而不是np.log(data)
吗?fit方法的文档声明它返回以下内容:
任何形状参数的估计值(如适用),然后是位置和尺度的估计值。
相同的文档指出,
lognorm.pdf
具有以下签名:pdf(x, s, loc=0, scale=1)
。因此,我将尝试以下做法:
字符串
输出量:
的数据