Ric*_*all 1 python normal-distribution scipy
我正在将对数正态pdf拟合到一些合并的数据,但是我的曲线与数据不太匹配,请参见下图。我的代码是:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm
data = genfromtxt('data.txt')
data = np.sort(data)
# plot histogram in log space
ax.hist(data, bins=np.logspace(0,5,200),normed=1)
ax.set_xscale("log")
shape,loc,scale = lognorm.fit(data)
print shape, loc, scale
pdf = sp.stats.lognorm.pdf(data, shape, loc, scale)
ax.plot(data,pdf)
plt.show()
Run Code Online (Sandbox Code Playgroud)
看起来是这样的:
我是否需要以某种方式为形状,位置和比例提供合理的猜测?
谢谢!
您尝试拟合的数据看起来不像对数正态分布。当以对数x比例绘制时,对数正态分布应看起来像正态分布。您显示的情节中不是这种情况。当分布不完全适合数据时,您会得到奇怪的参数。
在尝试拟合数据之前,您将需要了解数据的实际分布方式(严格来说,这在SO上是不合时宜的)。
这是使用从对数正态分布中随机抽取的数据时得到的结果:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import lognorm
np.random.seed(42)
data = lognorm.rvs(s=0.5, loc=1, scale=1000, size=1000)
# plot histogram in log space
ax = plt.subplot(111)
ax.hist(data, bins=np.logspace(0,5,200),normed=1)
ax.set_xscale("log")
shape,loc,scale = lognorm.fit(data)
x = np.logspace(0, 5, 200)
pdf = lognorm.pdf(x, shape, loc, scale)
ax.plot(x, pdf, 'r')
plt.show()
Run Code Online (Sandbox Code Playgroud)