R移动窗口模型适合可变窗口大小

时间:2017-07-25 13:38:44

标签: r time-series linear-regression modeling

目前,我正在使用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)
}

0 个答案:

没有答案