0

私は時系列データを持っています:

x データ フレームの出力:

Date  vol
1990  12
1991  13
1992  15
1994  18
1995  20
1996  35

このデータをプロットして、以下のように 4 年先を予測しようとしています。

plot(x$Date, x$vol, col="blue")
x.lm<-lm(x$Vol ~ x$Date)
x.pre<-predict(x.lm, n.ahead=4)
abline(x.pre, col="red")

次のエラーが表示されます。

Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : 
  invalid a=, b= specification

誰かが私が間違っていることを教えてもらえますか?

4

1 に答える 1

4

で「Vol」を大文字にしましたx.lm<-lm(x$Vol ~ x$Date)

試す

x.lm<-lm(x$vol ~ x$Date)

また、追加の変更なしでは、そのように値predict()を渡すことはできません。abline洗練された予測を行っているわけではなく、実際には線形適合をプロットしたいだけなので、次を使用して線をプロットできます

abline(x.lm, col="red")

変数を分離して で newdata パラメータを使用するとpredict、実際の予測を取得できるはずです。それがおそらく最もクリーンな方法でしょう。例えば:

y <- x$vol
x <- x$Date
x.lm <- lm(y~x)
predict(x.lm, data.frame(x=1997:2000))

これにより、1997 年から 2000 年までの予測が返されます。「x」は、x 変数としてdata.frame(x=1997:2000)入力した変数と一致する必要があるlm()と思います。あなたの場合、ドル記号のアクセサーがあり、全体が少し複雑になります。上記のアプローチを取り、lm()関数に渡された x コンポーネントの名前を、後で参照できる有効な変数名に変更するだけです。

于 2012-04-17T18:30:14.917 に答える