有沒有人遇到過計算時間序列數據集中的歷史平均對數回報?時間序列的均值回報 - 在NA值之後重新啓動 - rstudio
該數據集按個別安全性按照各自安全性首先按時間排序。我試圖形成一個歷史平均日誌回報,即每個證券的每個時間點的安全性從數據集中的第一次出現到現在的平均日誌回報。
幸運的是,返回時間序列包含不同證券的回報之間的NAs。我的想法是計算出現每個NA後重新啓動的歷史數據。
一個簡單的cumsum()可能不會這樣做,因爲NA將不得不放棄。
我想過使用rollmean(),如果我只知道一個有效的方法來指定'寬度'參數連續前面的非NAs向量的長度。 基於Count how many consecutive values are true,我採用的當前方法花費的時間太長,因爲我正在使用的數據集的大小。 對於形x的任意x:[R(1)R(2)... R(N)],其中R(2)是在時間段2中的日誌返回:
df <- data.frame(x, zcount = NA)
df[1,2] = 0 #df$x[1]=NA by construction of the data set
for(i in 2:nrow(df))
df$zcount[i] <- ifelse(!is.na(df$x[i]), df$zcount[i-1]+1, 0)
不知道如何加快這一點將不勝感激!
請參閱[MCVE。 –
請參閱[本示例](https://stackoverflow.com/a/42617491/4421870)使用'rollapply'排除NAs – Mako212
謝謝@ Mako212。我也看過rollapply,但正如我理解它,它不會完成我正在尋找的東西。我可能會誤解它。如上所述,我並不是試圖從計算中排除NA,而是在NA發生時儘快重置「計算窗口」。 rollapply()需要指定參數'width',這就是爲什麼我想出了創建附加變量來計算連續非NA值'zcount'的方法的原因。然後將rollapply()中的'width'參數設置爲'zcount'。 –