我有一个条形图,我需要描述数据的分布。现在,我肯定我的数据遵循几何分布,但我无法在数据上拟合曲线,也无法绘制概率质量函数。
plt.bar(range(len(freq)), [val[1] for val in freq], log=True, alpha=0.75)
plt.xticks(range(len(freq)), [val[0] for val in freq])
plt.xticks(rotation=70)
plt.xlabel('Times a word appears in the collection',labelpad=1)
plt.ylabel('Number of words appearing x times')
如何在此数据上拟合曲线以证明我的数据遵循几何分布?
我还应该注意,我的数据是一个元组列表。
答案 0 :(得分:0)
如果你替换这个例子中的数据和功能,我认为它接近你所要求的。
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# "x" is data, a,b,c are parameters
def func(x, a, b, c):
return a + b*x + c*x*x # example function
xData = np.array([1,2,3,4,5,6])
yData = np.array([1,3,5,6,2,1])
# curve fit the data using curve_fit's default inital parameter estimates
fittedParameters, pcov = curve_fit(func, xData, yData)
y_fit = func(xData, *fittedParameters)
plt.bar(xData, yData) # plot the raw data as bar chart
plt.plot(xData, y_fit) # plot the equation using the fitted parameters
plt.show()
print(fittedParameters)