线性回归系数随时间的演变
Posted
技术标签:
【中文标题】线性回归系数随时间的演变【英文标题】:Evolution of linear regression coefficients over time 【发布时间】:2011-08-25 02:58:41 【问题描述】:我想观察。更准确地说,让我们有一个 2 年的时间框架,其中线性回归将始终使用范围为 1 年的数据集。在第一次回归之后,我们再移动一周(即我们增加了一个新的一周,但也从一开始减去了一周),只要我们到达最后的日期,就再次进行回归:总共会有 52 次回归。
我的问题是数据集中有一些假期,我们不能像人们容易建议的那样简单地添加 7 天。我想要一些包装函数,可以对来自不同包的许多其他函数执行上述操作,例如来自forecast
包的forecast.lm()
或任何可以想到的函数:在每种情况下,目标都是找到线性回归参数逐周演变。
【问题讨论】:
Alex,你的“问题”中有很多事情正在发生,但没有问题。你想要帮助的一件事是什么?如果是日期问题,您在寻找关于假期的哪种类型的解决方案?如果您正在寻求“包装器”功能的帮助,请定义您尝试过的内容以及您的问题所在。按照目前的情况,这个问题应该以它不是一个问题为由关闭。 您想在window()
中进行本地化回归吗? stat.ethz.ch/R-manual/R-patched/library/stats/html/window.html ......
我知道这是一个非常广泛的话题,所以简而言之。第一:数据集包括假期,我需要处理它。第二:我想得到 lin 的系数。每周一回归(并保留一年的数据库长度——正如我之前所说——增加一周,但删除一周)。这就像将整个时期切成几周,创建 52 个时间向量(长度为一年)并为每个时间向量进行回归。
【参考方案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))
【讨论】:
以上是关于线性回归系数随时间的演变的主要内容,如果未能解决你的问题,请参考以下文章