如何为数据列表找到最佳拟合分布函数?
我知道Python里面有很多概率函数,都是在random
模块里。
我想知道,如果给我一个浮点数的列表,能不能找到一个最适合这个列表的分布方程?
我不太确定numpy能不能做到这一点,但这个功能可以和Excel里的“趋势”功能做个比较(虽然不完全一样,但有点像)。
那我该怎么做呢?
3 个回答
0
你可以试试在 statsmodels.tsa 里做时间序列分析。下面是一些代码供你参考:
from statsmodels.tsa.seasonal import seasonal_decompose
decomp = seasonal_decompose(df_train)
trend = decomp.trend
seasonal = decomp.seasonal
residual = decomp.resid
不过有一点需要注意。我发现季节性部分对异方差的处理不是很好——异方差指的是你的周期性函数的幅度随着时间的推移而增大。它会保持周期幅度不变(这就是季节性的一部分),然后你的残差(也就是实际值和预测值之间的差)会显示出周期性的影响。
1
还有一个叫做curve_fit的东西。
from scipy.optimize import curve_fit
13
numpy.polyfit(x, y, deg, rcond=None, full=False)
最小二乘法多项式拟合。
这个方法可以把一个多项式 p(x) = p[0] * x**deg + ... + p[deg](这里的 deg 是多项式的最高次数)拟合到一组点 (x, y) 上。它会返回一组系数 p,这些系数能让拟合的结果和实际数据之间的误差平方和最小。