2014-01-20 152 views
0

我試圖使用Hyndman and Athana­sopou­los's Forecasting Principles and Practice進行預測,當嘗試使用我自己的數據進行預測時(使用forecast軟件包),我遇到了一些令人討厭的問題。使用預測軟件包進行R預測

我的問題是:由meanf產生

  1. 預測具有索引1,而不是樣品的端部,因此繪製變得有點混亂(因此在x,y的東西,在下面的代碼)。這似乎並沒有發生用於h &一個在他們的教科書......使用snaivezoo產生

  2. 預測時,我居然有日期的日期(而不是數字)似乎打了一些問題,因爲一旦通過預測(bikefit3),數據有6個NA,然後是每週1次,而不是每週的每一天。

  3. 大多數未成年人 - 因爲我在這裏預測樣本不足,當我點擊總結時,我會得到特定「訓練樣本」的預測誤差。有什麼方法可以確定這個時期是什麼?我試圖找出手動,但數字看起來很奇怪。

我的R代碼裏面(這應該是可再現的,因爲我從Dropbox的加載數據)是:

no_f <- 21 
bike <-repmis::source_DropboxData("bike_hires.csv","8s4bpjft6zrt4jz",sep = ",",header = TRUE) 
bike$date <- as.Date(bike$Day,format="%d/%m/%Y") 
dat.xts <- xts(bike$Number.of.Bicycle.Hires,order.by=bike$date) 
bike.z <- zoo(dat.xts,order.by=index(dat.xts),frequency=7) 
bikefit1 <- meanf(bike.z,h=no_f) 
bikefit2 <- naive(bike.z, h=no_f) 
bikefit3 <- snaive(bike.z, h=no_f) 
x <- bikefit1$mean 
y <- seq(1251/7,(1251+no_f-1)/7,1/7) 

plot(bike.z[1100:1251],xlim=range(1100/7,(1251+no_f-1)/7),ylim=range(bike.z[1100:1251]),type="l",col=1,main="Forecasts for daily bike hires",xlab="",ylab="") 
par(new=T) 

plot(y,x,xlim=range(1100/7,(1251+no_f-1)/7),ylim=range(bike.z[1100:1251]),type="l",col=4,xaxt="n",yaxt="n",xlab="",ylab="") 
lines(bikefit2$mean,col=2) 
lines(bikefit3$mean,col=3) 
mtext("Day",side=1,line=3,font=2) 
mtext("Number of Bike Hires",side=2,line=3,font=2) 
legend("topright",lty=1,col=c(4,2,3), legend=c("Mean method","Naive method","Seasonal naive method")) 

預先感謝任何幫助你能提供給我!

回答

0

meanf,naivesnaive預測包中的函數被設計爲與ts對象一起使用。您正在使用zoo對象。這些功能可能會起作用,但它們可能不會。在調用函數之前將數據轉換爲ts對象。

培訓數據由您在調用功能時使用的所有數據組成。