R:zoo矩阵对象上的Rollapply lm回归

R:zoo矩阵对象上的Rollapply lm回归,r,zoo,R,Zoo,我想对单个zoo对象中的多对数据序列使用lm执行滚动回归 虽然我能够通过以下代码对zoo对象中的一对数据序列执行滚动回归: FunLm <- function(x,Param,Days) coef(lm(AAA ~ Z, data = as.data.frame(x), weights=Param*(seq(Days,1,by=-1)))) DataLmCoef <- rollapplyr(Data, Days, FunLm, Param, Days, by.column = FAL

我想对单个zoo对象中的多对数据序列使用lm执行滚动回归

虽然我能够通过以下代码对zoo对象中的一对数据序列执行滚动回归:

FunLm <- function(x,Param,Days) coef(lm(AAA ~ Z, data = as.data.frame(x), weights=Param*(seq(Days,1,by=-1))))
DataLmCoef <- rollapplyr(Data, Days, FunLm, Param, Days, by.column = FALSE)
我的问题是,如果我有以下目标:

                Z   AAA BBB CCC
2012-07-01      1   853 123 65
2012-07-04      2   864 124 62
2012-07-05      3   865 126 63
2012-07-06      4   873 120 66
2012-07-07      5   870 121 68
2012-07-08      6   874 123 69

如果不使用循环,我如何在Z~AAA、Z~BBB、Z~CCC、Z~DDD……上执行类似的滚动回归。。。。得到两个zoo矩阵对象,一个存储截距,另一个存储斜率

遵循
rollapply

您可以在滚动功能中添加多个测试 比如说

> seat <- as.zoo(log(UKDriverDeaths))
> time(seat) <- as.yearmon(time(seat))
> seat <- merge(y = seat, y1 = lag(seat, k = -1),
  y12 = lag(seat, k = -12), all = FALSE)
> fm <- rollapply(seat, width = 36,
  FUN = function(z) 
    data.frame(
        test1 = t(coef(lm(y ~ y1 + y12, data = as.data.frame(z)))),
        test3 = t(coef(lm(y ~ y12, data = as.data.frame(z))))
        ) , 
  by.column = FALSE, align = "right")

感谢haki,我必须对许多对(Z~AAA,Z~BBB,Z~CCC,…)进行回归,而不是在每对上键入回归,这在我的情况下是不可能的,因为我有1000多对,有没有一种方法可以不使用循环来实现这一点?
> seat <- as.zoo(log(UKDriverDeaths))
> time(seat) <- as.yearmon(time(seat))
> seat <- merge(y = seat, y1 = lag(seat, k = -1),
  y12 = lag(seat, k = -12), all = FALSE)
> fm <- rollapply(seat, width = 36,
  FUN = function(z) 
    data.frame(
        test1 = t(coef(lm(y ~ y1 + y12, data = as.data.frame(z)))),
        test3 = t(coef(lm(y ~ y12, data = as.data.frame(z))))
        ) , 
  by.column = FALSE, align = "right")
> head(fm)
         test1..Intercept.   test1.y1 test1.y12 test3..Intercept. test3.y12
דצמ 1972         0.9629793 0.15344243 0.7240740          1.530598 0.8026003
ינו 1973         1.1336058 0.13920023 0.7155899          1.570067 0.7973688
פבר 1973         0.9978077 0.14346100 0.7293183          1.440635 0.8145803
מרץ 1973         0.9879002 0.12929214 0.7442218          1.375245 0.8226257
אפר 1973         1.2281307 0.11700612 0.7250115          1.545356 0.8003661
מאי 1973         1.4483700 0.08860055 0.7245032          1.706343 0.7792279