我有一组天文数据,我正在尝试拟合一条曲线:
我的合适代码为
param = stats.norm.fit(df['delta z'].dropna()) # Fit a normal distribution to the data
pdf_fitted = stats.norm.pdf(df['delta z'], *param)
x = np.linspace(*df['delta z'].agg([min, max]), 1000) # x-values
binwidth = np.diff(edges).mean()
ax.plot(x, stats.norm.pdf(x, *param)*h.sum()*binwidth, color = 'r')
产生
现在,我显然以错误的方式执行此操作,因为曲线根本不适合数据。我所见过的所有教程,例如here都涉及到制作一组数据,在这种情况下,我们已经知道平均值和偏斜之类的东西。 This question使我用来估计参数
a_estimate, loc_estimate, scale_estimate = stats.skewnorm.fit(df['delta z'])
ax.plot(x, skewnorm.pdf(x, a_estimate, loc_estimate, scale_estimate), 'r-', lw=5, alpha=0.6, label='skewnorm pdf')
产生
那我该如何绘制这些参数的拟合度呢?
答案 0 :(得分:0)
在注释中,您声明您不知道如何绘制曲线:这是拟合和绘制偏斜范数的小示例。
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
data = ss. expon.rvs(size=1000)
P = ss.expon.fit(data)
rX = np.linspace(min(data), max(data), 50)
rP = ss.skewnorm.pdf(rX, *P)
plt.hist(data,bins=25, normed=True, color='slategrey')
plt.plot(rX, rP, color='darkturquoise')
plt.show()