非季節モデルの予測精度を評価する
データサイエンスでは、学習用データ(training set) は関係性を見つけるために使うデータ、テストデータ(test set) は見つかった関係性の強さを検証するために使うデータです。データをこれらに分割する際は、一般に学習により多く、テストにより少なく割り当てます。
学習用データとテストデータを作成するのに使える関数の1つが subset() です。これは、任意の start と end 引数にインデックスを指定して、時系列から部分系列を取り出します。
> # x は数値ベクトルまたは時系列
> # 101 から 500 までの観測を抽出
> train <- subset(x, start = 101, end = 500, ...)
> # 先頭から 500 観測を抽出
> train <- subset(x, end = 500, ...)
動画で見たように、accuracy() は予測値と対応する実測値を与えると、さまざまな予測精度指標を計算します。予測対象以外の観測を多めに渡しても、関連する観測を自動で見つけてくれます。
> # f はクラス "forecast" のオブジェクト
> # x は数値ベクトルまたは時系列
> accuracy(f, x, ...)
提供される精度指標には、二乗平均平方根誤差(RMSE) が含まれます。これは平均二乗誤差(MSE)の平方根です。RMSE を最小化すること(精度が上がること)は、MSE を最小化することと同じです。
あらかじめ読み込まれている時系列 gold には、1108 日分の金の終値が含まれています。ここでは最初の 1000 日を学習用データとし、残りの 108 日を予測します。これらの予測を、実際の値と比較します。用いるのは、この章で以前に使った単純予測の naive() と、全観測の平均と同じ値を予測する meanf() です。どちらの関数でも、予測したい先の数を指定するキーワード h を設定する必要があります。
この演習はコースの一部です
Rで学ぶ予測入門
演習の手順
subset()を使って、goldの先頭 1000 観測からなる学習用データを作成し、trainとして保存します。- 残りのデータからなるテストセットに対して
naive()で予測を計算し、naive_fcに代入します。hを適切に設定してください。 - 同じテストセットに対して
meanf()で予測を計算し、mean_fcに代入します。hを適切に設定してください。 accuracy()関数を使って、2 つの方法の予測精度指標を比較します。- 上記の結果に基づき、より精度の高い方の予測を
bestforecastsとして保存します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create the training data as train
train <- subset(___, end = ___)
# Compute naive forecasts and save to naive_fc
naive_fc <- naive(___, h = ___)
# Compute mean forecasts and save to mean_fc
mean_fc <- meanf(___, h = ___)
# Use accuracy() to compute RMSE statistics
accuracy(___, gold)
___(___, gold)
# Assign one of the two forecasts as bestforecasts
bestforecasts <- ___