我正在研究R中的以下数据:

# Getting stock data
library(quantmod)
tickers <- c("ASC.OL",  "AFG.OL",   "AKA.OL",   "AKER.OL",  "AKERBP.OL",    "AKSO.OL",  "AKVA.OL",  "AMSC.OL",  "APP.OL",   "AQUA.OL",  "ARCHER.OL",    "ARCUS.OL", "AFK.OL",   "ASETEK.OL",    "ATEA.OL",  "ATLA-NOK.OL",  "AURG.OL",  "AUSS.OL",  "AVANCE.OL",    "AVM.OL",   "AXA.OL",   "B2H.OL",   "BAKKA.OL", "BEL.OL",   "BERGEN.OL",    "BGBIO.OL", "BIOTEC.OL",    "BON.OL",   "BOR.OL",   "BRG.OL",   "BOUVET.OL",    "BWLPG.OL", "BWO.OL",   "BMA.OL",   "COV.OL",   "CXENSE.OL",    "DAT.OL",   "DESSC.OL", "DNB.OL",   "DNO.OL",   "DOF.OL",   "EIOF.OL",  "EKO.OL",   "EMGS.OL",  "EMAS.OL",  "ENTRA.OL", "EPR.OL",   "FAR.OL",   "FOE.OL",   "FRO.OL",   "FUNCOM.OL",    "GIG.OL",   "RISH.OL",  "GJF.OL",   "GOGL.OL",  "GOD.OL",   "GSF.OL",   "GYL.OL",   "HNA.OL",   "HNB.OL",   "HAVI.OL",  "HYARD.OL", "HELG.OL",  "HEX.OL",   "HIDDN.OL", "HLNG.OL",  "HSPG.OL",  "IMSK.OL",  "IDEX.OL",  "INC.OL",   "ISSG.OL",  "INSR.OL",  "IOX.OL",   "ITX.OL",   "ITE.OL",   "JIN.OL",   "JAEREN.OL",    "KID.OL",   "KIT.OL",   "KOA.OL",   "KOG.OL",   "KVAER.OL", "LSG.OL",   "LINK.OL",  "MHG.OL",   "MEDI.OL",  "MELG.OL",  "MULTI.OL", "NAPA.OL",  "NAVA.OL",  "NEL.OL",   "NEXT.OL",  "NGT.OL",   "NANO.OL",  "NOD.OL",   "NHY.OL",   "NSG.OL",   "NRS.OL",   "NAS.OL",   "NOR.OL",   "NOFI.OL",  "NPRO.OL",  "NRC.OL",   "NTS.OL",   "OCY.OL",   "OTS.OL",   "ODL.OL",   "ODF.OL",   "ODFB.OL",  "OLT.OL",   "OPERA.OL", "ORK.OL",   "PEN.OL",   "PARB.OL",  "PGS.OL",   "PDR.OL",   "PHO.OL",   "PLCS.OL",  "POL.OL",   "PRS.OL",   "PROTCT.OL",    "QFR.OL",   "QEC.OL",   "RAKP.OL",  "REACH.OL", "REC.OL",   "RENO.OL",  "SDSD.OL",  "SAFE.OL",  "SALM.OL",  "SADG.OL",  "SAS-NOK.OL",   "SSO.OL",   "SCHA.OL",  "SCHB.OL",  "SBX.OL",   "SDRL.OL",  "SBO.OL",   "SEVDR.OL", "SEVAN.OL", "SIOFF.OL", "SKBN.OL",  "SKI.OL",   "SKUE.OL",  "SOLON.OL", "SOFF.OL",  "SOFFB.OL", "SOLV.OL",  "SONG.OL",  "SBVG.OL",  "NONG.OL",  "RING.OL",  "MING.OL",  "SRBANK.OL",    "SOAG.OL",  "MORG.OL",  "SOR.OL",   "SVEG.OL",  "SPOG.OL",  "SPU.OL",   "STL.OL",   "SNI.OL",   "STB.OL",   "STORM.OL", "STRONG.OL",    "SUBC.OL",  "TIL.OL",   "TRVX.OL",  "TEAM.OL",  "TECH.OL",  "TEL.OL",   "TGS.OL",   "SSC.OL",   "THIN.OL",  "TOM.OL",   "TOTG.OL",  "TRE.OL",   "TTS.OL",   "VEI.OL",   "VVL.OL",   "WWL.OL",   "WEIFA.OL", "WRL.OL",   "WWI.OL",   "WWIB.OL",  "WILS.OL",  "XXL.OL",   "YAR.OL",   "ZAL.OL")
dataEnv <- new.env()
out <- sapply(tickers, function(s) tryCatch({ getSymbols(s , env = dataEnv) }, error = function(e) NA))
plist <- eapply(dataEnv, Ad)
pframe <- do.call(merge, plist)
names(pframe) <- gsub(".Adjusted", "", names(pframe))
names(pframe) <- gsub(".X", "", names(pframe))
pframe <- log(pframe)
pframe <- diff(pframe, lag = 1)
pframe<-t(pframe)
library(reshape2)
pframe<- melt(pframe)
library(data.table)
setnames(pframe, old=c("Var1","Var2", "value"), new=c("Ticker", "Date", "Returns"))

# Getting index data
index <- c("^GSPC")
dataEnv1 <- new.env()
out1 <- sapply(index, function(s) tryCatch({ getSymbols(s , env = dataEnv1) }, error = function(e) NA))
index <- eapply(dataEnv1, Ad)
index <- do.call(merge, index)
names(index) <- gsub(".Adjusted", "", names(index))
names(index) <- gsub(".X", "", names(index))
index <- log(index)
index <- diff(index, lag = 1)
index<-t(index)
index<- melt(index)
library(data.table)
setnames(index, old=c("Var1","Var2", "value"), new=c("Index", "Date", "Index_Returns"))

# Getting curr data
curr <- c("NOK=X")
dataEnv1 <- new.env()
out1 <- sapply(curr, function(s) tryCatch({ getSymbols(s , env = dataEnv1) }, error = function(e) NA))
curr <- eapply(dataEnv1, Ad)
curr <- do.call(merge, curr)
names(curr) <- gsub(".Adjusted", "", names(curr))
names(curr) <- gsub(".X", "", names(curr))
curr <- log(curr)
curr <- diff(curr, lag = 1)
curr<-t(curr)
curr<- melt(curr)
library(data.table)
setnames(curr, old=c("Var1","Var2", "value"), new=c("NOK", "Date", "NOK_Returns"))

NOK_index <- merge(index, curr, by="Date")
NOK_index$Index <- NULL
NOK_index$NOK <- NULL

Final <- merge(pframe, NOK_index, by="Date")
Final <- na.omit(Final)

我试图在名为“Final”的数据集中按组运行移动/滚动时间序列回归 . group-id是名为“Ticker”的变量 . 我想要的窗口是基于至少120个观察,最多240个 . 我想在“Market_ret”上回归“返回” . 对于每天我想要有一个beta的不同,使用之前的120到240个观察值进行回归 . 目前正在处理下面的回归代码,试图让回归滚动 . 有什么建议吗?

library(dplyr)
library(magrittr)   
library(broom)
## Fit models
fitted_model <- Final %>% group_by(Ticker) %>% do(tidy(lm(Returns ~ Index_Returns + NOK_Returns, data = .)))

最终显示如下:

Date      Ticker       Returns Index_Returns   NOK_Returns
316    2007-01-04      NRC.OL -0.0374163851  1.227532e-03  8.821413e-03
382    2007-01-05      NRC.OL  0.0087596430 -6.103168e-03  6.781505e-03
573    2007-01-08      NRC.OL  0.0454647126  2.217857e-03 -3.668920e-03
930    2007-01-09      NRC.OL -0.0111738655 -5.168099e-04  3.024291e-03
952    2007-01-10      NRC.OL -0.0227294199  1.938472e-03  1.341967e-02
1290   2007-01-11      NRC.OL -0.0086585150  6.319861e-03  4.891726e-03
1333   2007-01-12      NRC.OL  0.0028945097  4.841427e-03 -4.783106e-03
1520   2007-01-16      NRC.OL -0.0052913027  8.174609e-04  1.476038e-03
1803   2007-01-17      NRC.OL -0.0053194495 -8.943372e-04 -1.382750e-03
1923   2007-01-18      NRC.OL  0.0079686006 -2.975161e-03  4.993729e-03
2232   2007-01-19      NRC.OL  0.0439938878  2.891282e-03 -2.044104e-03

我有多个代码......