मेरे पास परिभाषित वजन का एक सेट है और मैं एक समय श्रृंखला डेटाफ्रेम पर रोलिंग विंडो में रिटर्न की भारित राशि की गणना करना चाहता हूं। मेरा मानना ​​​​है कि हम यहां 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) 
0
Shriv 29 नवम्बर 2019, 13:39

1 उत्तर

सबसे बढ़िया उत्तर

आप भार के योग के साथ weighted.mean() गुणा करके सूत्र को समायोजित करते हैं:

tempRRI <- rollapplyr(tempVar, width = 3, function(x) {weighted.mean(x,tempWeights)*sum(tempWeights)}, by.column = TRUE)
0
Shriv 5 पद 2019, 15:01