3

このデータを含むデータフレーム (stock という名前) をロードします。

day               value
2000-12-01 00:00:00 11.809242 
2000-12-01 06:00:00 10.919792 
2000-12-01 12:00:00 13.265208 
2000-12-01 18:00:00 13.005139 
2000-12-02 00:00:00 10.592222  
2000-12-02 06:00:00 8.873160 
2000-12-02 12:00:00 12.292847 
2000-12-02 18:00:00 12.609722 
2000-12-03 00:00:00 11.378299 
2000-12-03 06:00:00 10.510972  
2000-12-03 12:00:00 8.297222  
2000-12-03 18:00:00 8.110486  
2000-12-04 00:00:00 8.066154

これでarima()モデルを使用して予測を実装しようとします:

requires(forecast)
fit <- Arima(stock$value,c(3,1,2))
fcast <- forecast(fit, h = 5)

その後、予測プロセスからプロットを取りたいと思います。しかし、私はx軸に日を持たせようとしています。今まで私はこれを持っています:

x = as.POSIXct( stock$day , format = "%Y-%m-%d %H:%M:%S" )

plot(fcast, xaxt="n")
a = seq(x[1], by="min", length=nrow(stock))
axis(1, at = a, labels = format(a, "%Y-%m-%d %H:%M:%S"), cex.axis=0.6)
4

1 に答える 1

2

zoo、時系列オブジェクトを操作するので、やのような ts-packages を使用することをお勧めします。パッケージはxts、そのようforecastなオブジェクトで動作するように設計されているようです。

## read the zoo object
## I add a virtual colname aaa here 
## for some reason index=0:1 don't work
library(zoo)
stock <- read.zoo(text='aaa day value
2000-12-01 00:00:00 11.809242 
2000-12-01 06:00:00 10.919792 
2000-12-01 12:00:00 13.265208 
2000-12-01 18:00:00 13.005139 
2000-12-02 00:00:00 10.592222  
2000-12-02 06:00:00 8.873160 
2000-12-02 12:00:00 12.292847 
2000-12-02 18:00:00 12.609722 
2000-12-03 00:00:00 11.378299 
2000-12-03 06:00:00 10.510972  
2000-12-03 12:00:00 8.297222  
2000-12-03 18:00:00 8.110486  
2000-12-04 00:00:00 8.066154',header=TRUE,
                tz='',
                index=1:2)

##  arima works well with zoo objects
fit <- Arima(stock,c(3,1,2))
fcast <- forecast(fit, h = 20)
plot(fcast, xaxt="n")

日付軸をプロットするには、axis.POSIXctまたはを使用する必要がありますaxis.Dateaxis日付オブジェクトに相当するものがあります。ただし、最初に日付インデックスを作成する必要があります。ここでは、関数によって生成された元の日付と予測された日付を集計しforecastます。

  a <- c(as.POSIXct(index(stock)),
         as.POSIXct(index(fcast$mean),origin='1970-01-01 00:00.00 UTC'))

次に、次のようなものを使用して軸をプロットします。

## Note the use of las to rotate the axis 
## you can play with format here
axis.POSIXct(1,at=a,format="%a %H",las=2,cex=0.5)

ここに画像の説明を入力

于 2013-06-15T11:14:55.757 に答える