簡體   English   中英

在滾動窗口中對數據框的列應用總和乘積

[英]Apply sum product on columns of a dataframe in rolling windows

我有一組定義的權重,我想在時間序列數據幀上的滾動窗口中計算收益的加權總和。 我相信我們會在這里使用rollapplyr ,但我不確定如何在數據幀的每一行上執行滾動窗口功能。

在下面找到數據樣本的 dput 輸出:

tempVar <- structure(c(NA, -0.0081833512947922, 0.00508150903899551, -0.0072202479734873, 
0.00345258369231161, NA, 0, -0.00847462699097257, -0.00794638265247283, 
0.00445091892889238, NA, NA, NA, NA, NA, NA, 0, -0.0136462286616492, 
-0.00638979809877149, -0.00109950533341685), class = c("xts", 
"zoo"), .indexCLASS = "Date", .indexTZ = "UTC", tclass = "Date", tzone = "UTC", index = structure(c(946598400, 
946857600, 946944000, 947030400, 947116800), tzone = "UTC", tclass = "Date"), .Dim = 5:4, .Dimnames = list(
    NULL, c("TY00.USA", "CGB00.MOD", "G10L00.IFEU", "RLI00.IFEU"
    ))) 

和簡單,讓我們考慮權重是:

tempWeights <- c(1.09,0.89,0)

注意:權重表明截至評估日期,該日期的回報沒有權重。這些權重之和並非設計為 1

我希望輸出是:

tempRRI <- structure(c(NA, NA, NA, -0.00439731, -0.0008871759, NA, NA, NA, 
-0.00754241803, -0.0163096243, NA, NA, NA, NA, NA, NA, NA, NA, 
-0.01214514381, -0.02056130983), .Dim = 5:4, .Dimnames = list(
    NULL, c("TY00.USA", "CGB00.MOD", "G10L00.IFEU", "RLI00.IFEU"
    )), index = structure(c(946598400, 946857600, 946944000, 
947030400, 947116800), tzone = "UTC", tclass = "Date"), .indexTZ = "UTC", class = c("xts", 
"zoo"), .indexCLASS = "Date", tclass = "Date", tzone = "UTC")

希望類似於weighted.mean()但對於總和,或者如果有人可以請建議我如何使用tempWeights每列的總和(滾動基礎)。 weighted.sum()不做同樣的事情。

tempRRI <- rollapplyr(tempVar, width = 3, function(x) {weighted.mean(x,tempWeights)}, by.column = TRUE) 

您可以通過將 weighted.mean() 與權重總和相乘來調整公式:

tempRRI <- rollapplyr(tempVar, width = 3, function(x) {weighted.mean(x,tempWeights)*sum(tempWeights)}, by.column = TRUE)

暫無
暫無

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

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