我使用statsmodel,这是我用来生成多线性回归的代码:
def regression():
Data = pd.read_csv("CSV_file")
DependentVariable = Data[["Variable1"]].values.tolist()
IndependentVariables = Data[["Variable2","Variable3","Variable4"]].values.tolist()
huber_t = sm.RLM(DependentVariable, IndependentVariables, M=sm.robust.norms.HuberT())
hub_results = huber_t.fit()
return hub_results.summary()
这会产生正常输出。不过,我还想对我的数据进行加权,以便较新的数据比旧的数据更重要。我在考虑用某种指数衰减来计算重量。在计算线性回归时,有没有办法把这个权重考虑进去?在
目前无法使用这种权重。在
有关答案,请参见statsmodels weights in robust linear regression。在
因为在小残差下,HuberT局部是二次的,所以通过该答案中的权重重新缩放数据可以作为近似值。然而,它并不等同于通过每次观察对目标函数的贡献增加权重。在
这页上有一个指数衰减的缩放例子,但我不确定同样的技术是否适用(也许它只在绘图的上下文中有效,但是你可以尝试缩放自己的变量) http://blog.yhat.com/posts/predicting-the-presidential-election.html
或者,您可以使用numpy生成一个指数衰减序列,答案如下:
Pandas: Exponentially decaying sum with variable weights
相关问题 更多 >
编程相关推荐