2017-07-20 21 views
0

私はデータセットを持っており、本質的にローリング時間ウィンドウ付きの線形モデルに適合し、適合した値を見つけ出し、推定値の誤差を計算したいと考えています。私はエラーを計算する関数を持っていますが、アルゴリズムの開始点がありますが、以下のアルゴリズムではnullの時系列が得られます。誰でもそれを修正することができますか?ローリングウィンドウ回帰 - エラー計算

rollerOLS <- function(data, measure, predict, predictor){ 
    error <- c() 
    m <- dim(data)[1] 
    for(i in 1:(floor(m/142)-10)){ 
    data.new <- as.data.frame(data[c((1+(142*(i-1))):((i+9)*142)),]) 
    data.pred <- as.data.frame(data[c((1+(142*(i+9))):((i+10)*142)-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 <- predict.lm(mod, newdata = data.frame(data.pred[, predictor]), interval="none") 
    actual <- data.pred[-k,predict] 
    error[i] <- measure(ts, actual) 
    } 
    return(mod) 
} 

142は私のデータセットに固有のものです。

答えて

0

問題はts行にありましたが、ここに修正があります。

rollerOLS <- function(data, measure, predict, predictor){ 
    error <- c() 
    m <- dim(data)[1] 
    for(i in 1:(floor(m/142)-10)){ 
    data.new <- as.data.frame(data[c((1+(142*(i-1))):((i+9)*142)),]) 
    data.pred <- as.data.frame(data[c((1+(142*(i+9))):((i+10)*142)-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] 
    error[i] <- measure(ts, actual) 
    } 
    return(error) 
} 
関連する問題