簡體   English   中英

Python:如何針對統計模型HuberT線性回歸按時間加權數據?

[英]Python: How to weight data by time for a statsmodel HuberT linear regression?

我正在使用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()

這給出了正常的輸出。 但是,我還想對數據加權,以使最新數據比舊數據更重要。 我正在考慮使用某種指數衰減來計算權重。 在計算線性回歸時,是否有任何方法可以將此權重考慮在內?

此頁面上有一個使用指數衰減進行縮放的示例,但我不確定是否可以使用相同的技術(也許它僅適用於繪圖,但您可以嘗試縮放自己的變量) http ://blog.yhat.com/posts/predicting-the-presidential-election.html

weight <- function(i) {
  exp(1)*1 / exp(i)
}

w <- data.frame(poll=1:8, weight=weight(1:8))
ggplot(w, aes(x=poll, weight=weight)) +
  geom_bar() +
  scale_x_continuous("nth poll", breaks=1:8) +
  scale_y_continuous("weight")

或者,您可以使用numpy並按此處提供的答案生成指數衰減的級數:

熊貓:可變權重的指數衰減總和

目前無法使用這種重量。

請參閱statsmodels-魯棒線性回歸中的權重以獲取相關答案。

因為HuberT在較小的殘差處局部為平方,所以按該答案中的權重對數據進行重新縮放可以作為近似值。 但是,這並不等同於每次觀察對目標函數的貢獻增加權重。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM