我想知道是否有人可以引導我通過R中的滾動函數。我想用fama-french因子進行1年滾動迴歸。數據集在Excel中準備,包含2011-2017年的每週數據。因此時間窗口設定爲52周。我想計算2012-2017年期間的1年滾動係數,所以時間窗口將從2011年的第一週起從[1:52]到[2:53]。我有幾個定價因素,這個意味着我必須運行多重線性迴歸。從滾動的1年迴歸計算公司特定的法瑪 - 法國貝塔係數
這是我到目前爲止已經試過:
Rollingregression <- read_excel("C:/Users/neri_/Desktop/Fama French Regression.xlsx", col_names = TRUE, sheet = 1)
Rollingregression <- xts(Rollingregression[,2:7],order.by = Rollingregression[,1])
coeffs <- rollapply(Rollingregression, width=52, FUN = function(Z) coef(lm(Rollingregression$`Excess Return` ~ Rollingregression$OBX + Rollingregression$SMB + Rollingregression$HML + Rollingregression$PR1YR + Rollingregression$LIQ, data = as.data.frame(Z))), by.column=FALSE, align="right")
不過,我不明白這5年每週滾動貝塔值,而是迴歸在整個階段:
(Intercept) Rollingregression$OBX Rollingregression$SMB
[1,] 0.0001511391 0.7529416 -0.007408397
[2,] 0.0001511391 0.7529416 -0.007408397
[3,] 0.0001511391 0.7529416 -0.007408397
[4,] 0.0001511391 0.7529416 -0.007408397
[5,] 0.0001511391 0.7529416 -0.007408397
在整個期間,輸出也給了我相同的其他fama-french因子的beta。
2011-01-04
2011-01-11
2011-01-18
2011-01-25
2011-02-01
我以爲XTS代碼我做將確保的是,R瞭解,TJE數據集的時間序列。
我也試過這樣:
coeffs <- (rollapply(zoo(Rollingregression), width=52, FUN = function(Z){t = lm(Rollingregression$`Excess Return` ~ Rollingregression$OBX + Rollingregression$SMB + Rollingregression$HML + Rollingregression$PR1YR + Rollingregression$LIQ, data = as.data.frame(Z), model = TRUE); return(t$coef)}, by.column = FALSE, align = "right"))
仍然給我相同的輸出。
我相當新的R,所以任何幫助非常感謝。
謝謝!
看看這個答案:https://stackoverflow.com/a/23163104/7357438 – Lstat