0

私は1サイクルあたり30日(毎月)で作業しているため、履歴データセットには約2サイクルあります。

Rスクリプトは、

library(forecast)
value <- c(117.2 , 224.2 , 258.0 , 292.1 , 400.1 , 509.9 , 626.8 , 722.9 , 826.1 , 883.6,916.6, 1032.1, 1151.2, 1273.4 ,1391.8, 1499.2, 1532.5 ,1565.9 ,1690.9, 1813.6,1961.4 ,2102.8 ,2208.2, 2256.8, 2290.8 ,2413.7, 2569.4 ,2730.3, 2882.9 ,2977.5, 117.2 , 224.2 , 258.0 , 292.1 , 400.1 , 509.9 , 626.8 , 722.9 , 826.1 , 883.6,916.6, 1032.1, 1151.2, 1273.4 ,1391.8, 1499.2, 1532.5 ,1565.9 ,1690.9, 1813.6,1961.4 ,2102.8 ,2208.2, 2256.8, 2290.8 ,2413.7, 2569.4 ,2730.3, 2882.9 ,2977.5)

sensor<-ts(value,frequency=30)#daily data of month,here only 2 month's data
fit <- auto.arima(sensor)
LH.pred<-predict(fit,n.ahead=30)
plot(sensor,ylim=c(0,4000),xlim=c(0,5),type="o", lwd="1")
lines(LH.pred$pred,col="red",type="o",lwd="1")
grid()

結果のグラフは 予測グラフ

しかし、私はその予測に満足していません。予測をその前の値の傾向に似せる方法はありますか(グラフを参照)?

4

1 に答える 1

8

auto.arima()たった2か月のデータを使用してモデルを見つけることをたくさん求めています。少なくとも季節の違いを提案することによってそれを少し助けてください。さらに、を使用しないでくださいpredictforecast関数ははるかに優れています。

forecast()「より良い」理由については、 2008年7月のJournal of Statistics Software、特にセクション4.4を参照してください。

Forecast()関数は汎用であり、さまざまな時系列モデル用のS3メソッドがあります。時系列モデルからポイント予測と予測区間を計算します。ets()、auto.arima()、Arima()、arima()、ar()、HoltWinters()、およびStructTS()を使用して適合されたモデルのメソッドが存在します。

tsオブジェクトのメソッドもあります。時系列オブジェクトがforecast()の最初の引数として渡された場合、関数はセクション2の指数平滑化アルゴリズムに基づいて予測を生成します。

ほとんどの場合、ほとんど同じことを行うことを目的とした既存のpredict()関数があります。残念ながら、predict()関数の結果のオブジェクトには、それぞれの場合に異なる情報が含まれているため、結果の汎用関数(plot()やsummary()など)を作成することはできません。したがって、代わりに、forecast()はpredict()のラッパーとして機能し、取得した情報を共通の形式(予測クラス)でパッケージ化します。また、既存のpredict()関数が存在しない場合に使用されるデフォルトのpredict()メソッドを定義し、関連するpredict()関数を呼び出します。したがって、predict()メソッドはprecast()メソッドと並列になりますが、後者はより使いやすい一貫した出力を提供します。

次のことを試してください。

fit <- auto.arima(sensor,D=1)
LH.pred <- forecast(fit,h=30)
plot(LH.pred)
grid()

ここに画像の説明を入力してください

于 2013-01-15T05:06:15.830 に答える