1

我想观察线性回归系数随时间的演变。更准确地说,让我们有一个 2 年的时间框架,其中线性回归将始终使用范围为 1 年的数据集。在第一次回归之后,我们进一步移动一周(即我们添加了新的一周,但也从开头减去了一周)并且只要到达最终日期就再次进行回归:总共将有 52 次回归。

我的问题是数据集中有一些假期,我们不能像人们容易建议的那样简单地添加 7 天。我想要一些包装函数,可以对来自不同包的许多其他函数执行上述操作,例如forecast.lm()来自forecast包或任何可以想到的函数:在每种情况下的目标都是找到线性回归参数的演变一周一周。

4

1 回答 1

1

如果您以清晰的方式编辑/细分您的问题,我认为您可能会得到更多答案。(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))
于 2011-05-19T20:30:22.570 回答