2017-06-04 85 views
1

我想知道是否有人可以引導我通過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,所以任何幫助非常感謝。

謝謝!

+0

看看這個答案:https://stackoverflow.com/a/23163104/7357438 – Lstat

回答

1

嘗試更換用函數(Rollingregression)函數(Z)...

coeffs < - rollapply(Rollingregression,寬度= 52,FUN =函數(Rollingregression COEF LM Rollingregression $〇一二三二七五九〇九四四四四二八六六二七三二一〇〜Rollingregression $ OBX()( + Rollingregression $ SMB + Rollingregression $ HML + Rollingregression $ PR1YR + Rollingregression $ LIQ,data = as.data.frame(Z))),by.column = FALSE,align =「right」)

(ref Eric Zivot )