我想观察线性回归系数随时间的变化。更准确地说,让我们有一个 2 年的时间范围,其中线性回归将始终使用范围为 1 年的数据集。在第一次回归之后,我们再移动一周(即我们添加一个新周,但也从开头减去一周),只要我们到达最终日期,就会再次进行回归:总共会有 52 次回归。
我的问题是数据集中有一些假期,我们不能简单地添加 7 天,就像人们很容易建议的那样。我想要一些包装函数,可以对来自不同包的许多其他函数执行上述操作,例如来自forecast
包的forecast.lm()
函数或人们可以想到的任何函数:每种情况下的目标都是每周找到线性回归参数的演变。
如果您以清晰的方式编辑/细分您的问题,您可能会得到更多答案。 (1)我如何找到假期(不清楚你对假期的定义是什么)?(2) 如何相应地对数据集进行切片?(3) 如何在每个块中运行线性回归?
(1)查找假期:在这里真的帮不上忙,因为我不知道它们在您的数据集中是如何定义/编码的。 library(sos); findFn("holiday")
找到一些选项
(2) 根据假期/周末间隔对数据集进行分区。 下面的示例假设假日编码为 1,非假日编码为零。
(3) 运行每个块的线性回归并提取系数。
d <- data.frame(holiday=c(0,0,0,1,1,0,0,0,0,1,0,0,0,0),
x=runif(14),y=runif(14))
per <- cumsum(c(1,diff(d$holiday)==-1)) ## maybe use rle() instead
dd <- with(d,split(subset(d,!holiday),per[!holiday]))
t(sapply(lapply(dd,lm,formula=y~x),coef))