2017-10-25 17 views
0

私は以下のような動物園のデータフレーム上に複数の線形回帰を実行するためにルックバックウィンドウを使用していますR - 計算/特定の日に時系列モデルを評価

df 
         y   X1   X2   X3   X4 
2015-01-05 -0.017697886 -0.0303143773 -0.037748414 -2.015346e-02 0.12078726 
2015-01-06 0.026334273 -0.0003695332 -0.005050541 -7.924213e-03 -0.02709586 
2015-01-07 -0.033780880 0.0051106504 0.006257167 8.340199e-03 -0.02316465 
2015-01-08 0.012420844 0.0330091413 0.035152040 2.311611e-02 -0.08373201 
2015-01-09 -0.005641188 -0.0194103325 -0.029843684 -1.053020e-02 0.10505671 
2015-01-12 -0.005053201 0.0137312764 0.013474812 4.306844e-05 0.03234955 
2015-01-13 0.011951128 0.0161338800 0.015979652 6.252886e-03 -0.04066445 
2015-01-14 -0.023470817 -0.0125438934 -0.014201182 -2.378026e-02 0.03254407 
2015-01-15 0.014655518 0.0217170617 0.021671946 1.712123e-02 -0.01567272 

lm <- lm(df[,1] ~ df[,-1])

私は、LMを使用してY〜X1 + X2 + X3 + X4を回帰し210個の

と得られた最良のフィッティングパラメータ:私はX1、X2、X3、X4の値を持っているところ

> coef(sum_lm) 
          Estimate Std. Error t value Pr(>|t|) 
    (Intercept)   -0.02360827 0.007349594 -3.212187 0.03252117 
    merge_n.tmp[, -1]X1 8.99408519 2.341094738 3.841829 0.01843072 
    merge_n.tmp[, -1]X2 -7.13439870 1.913985874 -3.727509 0.02034096 
    merge_n.tmp[, -1]X3 -0.91469896 0.640218236 -1.428730 0.22628243 
    merge_n.tmp[, -1]X4 -0.17417599 0.133629611 -1.303424 0.26238975 

は今、私は特定の日でyを評価したいです。例えば:私はそれをしない小さなスクリプトを書くことができますが、私はR内の関数があるかどうかをお聞きしたかったの前に

X1(2015-01-15) = 0.0217170617 
X2(2015-01-15) = 0.021671946 
X3(2015-01-15) = 1.712123e-02 
X4(2015-01-15) = -0.01567272 

:2015年1月15日に私の最高のフィットモデルの値はそれを知っているものですスクリプトやループを使わずに直接これを行うことができます。

前回の質問への拡張: もう一つの質問は、私が将来の先を予測したいのですが? predictは、dfとは異なる日付のデータフレームを入力すると問題が発生します。

+2

を新しいデータでモデルをテストするには、 '?predict.lm'のヘルプと例を参照してください。 – OdeToMyFiddle

+0

@OdeToMyFiddle将来的に先を予測したいのですが? 'predict'は、dfと異なる日付のデータフレームを入力すると問題が発生します。 – stem

答えて

1

汎用機能predict()を探している場合は、ヘルプページ?predict?predict.lmを参照してください。小さな例は次のとおりです。

## lets make up some data and fit model: 
library(zoo) 
myTs <- zoo(mtcars, seq(as.Date("2016-01-01"), length.out = nrow(mtcars), by = 1)) 
fit <- lm(mpg ~ cyl + disp, data = myTs) 

今、私たちはすべての既存の観測に予測:

> predict(fit) 
2016-01-01 2016-01-02 2016-01-03 2016-01-04 2016-01-05 2016-01-06 2016-01-07 2016-01-08 
    21.84395 21.84395 26.08886 19.82676 14.55267 20.50602 14.55267 25.29227 
2016-01-09 2016-01-10 2016-01-11 2016-01-12 2016-01-13 2016-01-14 2016-01-15 2016-01-16 
    25.41371 21.68752 21.68752 16.28581 16.28581 16.28581 12.24731 12.49431 
2016-01-17 2016-01-18 2016-01-19 2016-01-20 2016-01-21 2016-01-22 2016-01-23 2016-01-24 
    12.90598 26.69196 26.75371 26.84839 25.83979 15.41718 15.70536 14.75851 
2016-01-25 2016-01-26 2016-01-27 2016-01-28 2016-01-29 2016-01-30 2016-01-31 2016-02-01 
    13.72933 26.68578 25.83568 26.35438 14.73792 22.15271 15.76711 25.82127 

や新しい観測のためのNEWDATA引数使用:関数 `predict`が使用されている

predict(fit, newdata = data.frame(cyl = 6, disp = 180)) 
21.43228 
+0

ありがとう。先行きの予測をしたいのですが?'predict'では、dfと異なる日付のデータフレームを入力すると問題が発生します – stem

+0

日付を入力として使用しているように聞こえますが、線形モデルをフィッティングする前に日付を時間(整数)に変換したいと思うかもしれません。特定の開始点からの日、time = myDates - as.Date( "2000-01-01")。 'as.integer(myDates)'を使用すると、これは開始点として "1970-01-01"になります。その後、あなたはいつものように上記を使用することができます。 –

0

modelr::add_predictions(df, lm)は、適合した値でデータフレームを補強します。信頼区間も必要な場合は、ciTools::add_ci(df, lm)を使用できます。

編集:決して気にしないでください。明らかに、これらのパッケージでは、動物園のデータフレームはサポートされていません。

+0

@ありがとうございますが、これはうまくいかないようです。あなたの例に加えて、私は 'lm(df [、1]〜)を使う代わりに' lm(y〜X1 + X2 + X3 + X4、data = df) 'という実際の変数名でlm式の名前を変更しようとしました。 add_predictions(df、lm) 'に加えて' add_predictions(coredata(df)、lm) 'を使用しようとしましたが、これらのエラーが出ます: "データのエラー[ (モデル、データ): " "を置き換える要素よりも多くの要素を指定しましたmodel.frame.defaultのエラー(用語、newdata、na.action = na.action、xlev = object $ xlevels): 'data'は、行列や配列ではなく、data.frameでなければなりません。 – stem

+0

単純な 'predict(lm、df)'は、ジョブを実行します – stem