目前,我正在使用R中的数据框,其中第一列是日期的数字。我现在按照日期的升序排序数据。我想要一个模型(我提供的代码是一个简单的OLS模型)为期20天,但现在我不得不假设我每天有124个观察,要求我使用for循环,然而事实并非如此。我有没有办法在不做出假设的情况下包含20天的窗口?我现有的算法如下。任何帮助将非常感激。输入是一个数据集和两个整数,预测和预测。
rollerOLS <- function(data, predict, predictor){
res <- list()
alpha <- c()
beta <- c()
m <- dim(data)[1]
for(i in 1:(floor(m/124)-10)){
data.new <- as.data.frame(data[c((1+(124*(i-1))):((i+9)*124)),])
data.pred <- as.data.frame(data[c((1+(124*(i+9))):((i+10)*124)-1),])
n <- dim(data.new)[1]
k <- dim(data.pred)[1]
x <- data.new[-1,predictor]
y <- data.new[-n, predict]
mod <- lm(y ~ x)
ts <- mod$coefficients[1] + mod$coefficients[2]*data.pred[-1,predictor]
actual <- data.pred[-k,predict]
alpha[i] <- mod$coefficients[1]
beta[i] <- mod$coefficients[2]
}
coef <- as.data.frame(cbind(alpha, beta))
res$coefs <- coef
res <- as.data.frame(res)
return(res)
}