线性回归分析 - 跨行滚动
Linear Regression Analysis - rolling across rows
我需要有关如何获得结果的建议
我对一个对象的回归分析。
我不想逐行执行回归分析
window 为 20 天。
对象 Slope 应保存 window.
每天回归分析的结果(斜率)
#Loading Library
require(quantmod)
#Initiation of Example
mc_result <- matrix(sample(c(1:200)), ncol = 200, nrow =1)
mc_result1 <- matrix(sample(c(1:200)), ncol =200, nrow =1)
mc_result <- rbind(mc_result, mc_result1)
a <- c(1:200)
Slope <- matrix(ncol=2, nrow=181)
注意这个不起作用的循环。
循环应该按行应用 Rollapply
并将每天的结果保存在对象 Slope 中。
然而,结果应该是这样的,但是斜率值发生了变化。目前斜率值稳定,不知道为什么。
for (i in 1:2) {
Slope[,i] <- rollapply(data =mc_result[i,], width=20,
FUN = function(z)
summary(lm(mc_result[i,] ~ a, data = as.data.frame(z)))$coefficients[2], by.column = FALSE)
}
我认为您想要的是以下内容(在您的 mc_result[i,] 的代码 none 中,或者 a 滚动数据中的索引,这就是为什么线性回归系数是没有改变,因为你在同一个数据集上训练,只有 z 在改变,你需要将代码更改为如下所示):
#Loading Library
require(quantmod)
#Initiation of Example
mc_result <- matrix(sample(c(1:200)), ncol = 200, nrow =1)
mc_result1 <- matrix(sample(c(1:200)), ncol =200, nrow =1)
mc_result <- rbind(mc_result, mc_result1)
a <- c(1:200)
Slope <- matrix(ncol=2, nrow=181)
for (i in 1:2) {
Slope[,i] <- rollapply(data = 1:200, width=20,
FUN = function(z) {
summary(lm(mc_result[i,z] ~ a[z]))$coefficients[2]
}, by.column = FALSE)
}
head(Slope)
[,1] [,2]
[1,] 1.3909774 2.0278195
[2,] 1.0315789 2.8421053
[3,] 1.5082707 2.8571429
[4,] 0.0481203 1.6917293
[5,] 0.2969925 0.2060150
[6,] 1.3526316 0.6842105
我需要有关如何获得结果的建议 我对一个对象的回归分析。
我不想逐行执行回归分析 window 为 20 天。 对象 Slope 应保存 window.
每天回归分析的结果(斜率) #Loading Library
require(quantmod)
#Initiation of Example
mc_result <- matrix(sample(c(1:200)), ncol = 200, nrow =1)
mc_result1 <- matrix(sample(c(1:200)), ncol =200, nrow =1)
mc_result <- rbind(mc_result, mc_result1)
a <- c(1:200)
Slope <- matrix(ncol=2, nrow=181)
注意这个不起作用的循环。 循环应该按行应用 Rollapply 并将每天的结果保存在对象 Slope 中。
然而,结果应该是这样的,但是斜率值发生了变化。目前斜率值稳定,不知道为什么。
for (i in 1:2) {
Slope[,i] <- rollapply(data =mc_result[i,], width=20,
FUN = function(z)
summary(lm(mc_result[i,] ~ a, data = as.data.frame(z)))$coefficients[2], by.column = FALSE)
}
我认为您想要的是以下内容(在您的 mc_result[i,] 的代码 none 中,或者 a 滚动数据中的索引,这就是为什么线性回归系数是没有改变,因为你在同一个数据集上训练,只有 z 在改变,你需要将代码更改为如下所示):
#Loading Library
require(quantmod)
#Initiation of Example
mc_result <- matrix(sample(c(1:200)), ncol = 200, nrow =1)
mc_result1 <- matrix(sample(c(1:200)), ncol =200, nrow =1)
mc_result <- rbind(mc_result, mc_result1)
a <- c(1:200)
Slope <- matrix(ncol=2, nrow=181)
for (i in 1:2) {
Slope[,i] <- rollapply(data = 1:200, width=20,
FUN = function(z) {
summary(lm(mc_result[i,z] ~ a[z]))$coefficients[2]
}, by.column = FALSE)
}
head(Slope)
[,1] [,2]
[1,] 1.3909774 2.0278195
[2,] 1.0315789 2.8421053
[3,] 1.5082707 2.8571429
[4,] 0.0481203 1.6917293
[5,] 0.2969925 0.2060150
[6,] 1.3526316 0.6842105