你好我正在使用以下代码进行回归分析:
for (i in 1:ncol(Ret1)){
r2.out[i]=summary(lm(Ret1[,1]~Ret1[,i]))$r.squared
}
r2.out
此代码对第一列中的数据框中的每列运行简单的OLS回归,并提供这些回归的R ^ 2 . At the Moment 回归使用列的所有数据点 . What I Need 现在是代码而不是使用列中的所有数据点只使用数据点的滚动窗口 . 所以他计算了整个时间框架内30天R ^ 2的滚动窗口 . 输出是矩阵,每个(1,i)对的每个滚动窗口具有所有R ^ 2 .
此代码执行滚动回归部分,但不对每个(1,i)对进行回归 .
dolm <- function(x) summary(lm(Ret1[,1]~Ret1[,i]))$r.squared
rollapplyr(Ret1, 30, dolm, by.column = FALSE)
我非常感谢您提供的任何帮助 .
1 回答
使用内置的
anscombe
数据框,我们针对x1
然后x2
等回退y1
列 . 为了说明的目的,我们在这里使用宽度3 .xnames
应设置为x变量的名称 . 在anscombe
数据集中,以x
开头的列名是x变量 . 作为另一个示例,如果除了第一列之外的所有列都是x变量,则可以使用xnames <- names(DF)[-1]
.我们定义一个R平方函数
rsq
,它使用索引,ix
和x变量名xname
. 然后我们在xnames
上sapply
,在1:n
上的每一个rollapply
.通过长度给出以下维度n - w 1的结果(xnames):
Variations
1)也可以通过以下方式反转
rollapply
和sapply
替换最后一行代码的顺序:2)另一种变化是用以下单个语句替换
rsq
和sapply / rollapply行的定义 . 它可能有点难以阅读,所以你可能更喜欢第一个解决方案,但它确实需要一个简化 - 即,xname
不再需要内部匿名函数的显式参数(取代上面的rsq
):Update: 有固定的线路,现在
n <- nrow(anscombe)