2024-06-16 12:32:37 发布
网友
Polyfit是一个很好的工具来拟合一条线到一组点。然而,我的数据具有不同程度的统计意义。在
例如,对于一个点(x1,y2),我可能只有10个观测值,而对于另一个点(x2,y2),我可能有10000个观测值。我通常至少有10个点,我想在使用polyfit时根据统计显著性对每个点进行加权。有没有什么方法(或类似的功能)可以做到这一点?在
更直接:
import numpy as np result = np.polynomial.polynomial.polyfit(x,y,deg,w=weight of each observation)
我不知道numpy,但是你可以写你自己的polyfit函数。Polyfit就是解线性方程。在
http://en.wikipedia.org/wiki/Polynomial_regression#Matrix_form_and_calculation_of_estimates (在您的例子中,epsilon可能是0)
您可以看到,您只需将y中的每一行和x中的每一行乘以您的系数。 这应该是10行代码(我记得我花了4小时才重新发明了minsquare方程,但在MATLAB中只有2行代码)
一种可能性是在^{}中使用加权最小二乘法
大致:
y是响应或内生变量(endog)
endog
x是你的一维解释变量
在你的权重数组中,这个观察值的权重越高
得到多项式矩阵,并拟合
import numpy as np import statsmodels.api as sm exog = np.vander(x, degree+1) result = sm.WLS(y, exog, weight=w).fit()
参数在result.params中。拟合值以result.fittedvalues为单位
result.params
result.fittedvalues
预测在版本之间发生了变化。对于版本0.4,您可以使用
更直接:
我不知道numpy,但是你可以写你自己的polyfit函数。Polyfit就是解线性方程。在
http://en.wikipedia.org/wiki/Polynomial_regression#Matrix_form_and_calculation_of_estimates
(在您的例子中,epsilon可能是0)
您可以看到,您只需将y中的每一行和x中的每一行乘以您的系数。
这应该是10行代码(我记得我花了4小时才重新发明了minsquare方程,但在MATLAB中只有2行代码)
一种可能性是在^{} 中使用加权最小二乘法
大致:
y是响应或内生变量(
endog
)x是你的一维解释变量
在你的权重数组中,这个观察值的权重越高
得到多项式矩阵,并拟合
参数在
result.params
中。拟合值以result.fittedvalues
为单位预测在版本之间发生了变化。对于版本0.4,您可以使用
^{pr2}$相关问题 更多 >
编程相关推荐