Rのauto.arima()でxreg引数を設定する方法は?[閉まっている]


19

私は、顧客の訪問データ(毎日)を測定する1つの時系列を持つ小さなプロジェクトに取り組んでいます。私の共変量は、Dayデータ収集の最初の日から経過した日数を測定する連続変数と、その日がクリスマスであるか、曜日であるかなどのダミー変数です。

データの一部は次のようになります。

Date    Customer_Visit  Weekday Christmas       Day
11/28/11        2535       2        0            1   
11/29/11        3292       3        0            2   
11/30/11        4103       4        0            3   
12/1/11         4541       5        0            4   
12/2/11         6342       6        0            5  
12/3/11         7205       7        0            6   
12/4/11         3872       1        0            7   
12/5/11         3270       2        0            8   
12/6/11         3681       3        0            9   

私の計画は、ARIMAXモデルを使用してデータを近似することです。これは、関数を使用してRで実行できますauto.arima()xreg引数に共変量を入力する必要があることは理解していますが、この部分のコードは常にエラーを返します。

ここに私のコードがあります:

xreg     <- c(as.factor(modelfitsample$Christmas), as.factor(modelfitsample$Weekday), 
              modelfitsample$Day)
modArima <- auto.arima(ts(modelfitsample$Customer_Visit, freq=7), allowdrift=FALSE, 
                       xreg=xreg)

Rが返すエラーメッセージは次のとおりです。

Error in model.frame.default(formula = x ~ xreg, drop.unused.levels = TRUE) 
 :variable lengths differ (found for 'xreg')

ARIMAXモデルをRに合わせる方法から多くを学びましたか?しかしxregauto.arima()関数の引数に共変量またはダミーを設定する方法はまだ明確ではありません。

回答:


32

主な問題は、あなたxregが行列ではないことです。私は次のコードがあなたが望むことをすると思います。人工データを使用して、それが機能することを確認しました。

library(forecast)
# create some artifical data
modelfitsample <- data.frame(Customer_Visit=rpois(49,3000),Weekday=rep(1:7,7),
                             Christmas=c(rep(0,40),1,rep(0,8)),Day=1:49)

# Create matrix of numeric predictors
xreg <- cbind(Weekday=model.matrix(~as.factor(modelfitsample$Weekday)), 
                  Day=modelfitsample$Day,
              Christmas=modelfitsample$Christmas)

# Remove intercept
xreg <- xreg[,-1]

# Rename columns
colnames(xreg) <- c("Mon","Tue","Wed","Thu","Fri","Sat","Day","Christmas")

# Variable to be modelled
visits <- ts(modelfitsample$Customer_Visit, frequency=7)

# Find ARIMAX model
modArima <- auto.arima(visits, xreg=xreg)

こんにちは、Prof.Rob、コードは完璧に動作します。あなたのソリューションに感謝します。本当にありがとうございました!
ミシェル

auto.arima(diff(visits)、xreg = xreg)は同じエラーをスローします。
愛好家

@MdAzimulHaque -あなたのオブジェクト、あなたは少なくとも一つの観察によってその長さを短くします。求めていると外部の説明変数を使用して48回の観測にARIMAモデルを合わせて49のdifftsauto.arima(diff(visits), xreg = xreg)auto.arimanrow
Jubbles

@Jubbles私はしばらく前に答えを得ました。これを処理するには2つの方法があります。1番目の方法:auto.arima(diff(diff(visits))、xreg = diff(diff(xreg)))2番目の方法:auto.arima(visits、d = 2、xreg)
愛好家
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.