R'de auto.arima () 'da xreg argümanı nasıl kurulur? [kapalı]


19

Müşteri ziyaret verilerini (günlük) ölçen bir kerelik serilerle küçük bir proje üzerinde çalışıyorum. Değişkenlerim Day, veri toplamanın ilk gününden bu yana kaç gün geçtiğini ölçmek için sürekli bir değişkendir ve o günün Noel olup olmadığı ve haftanın hangi günü olduğu gibi kukla değişkenlerdir.

Verilerimin bir kısmı şöyle görünüyor:

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   

Planım, verilere uyması için ARIMAX modelini kullanmak. Bu, R ile fonksiyon ile yapılabilir auto.arima(). Değişkenlerimi ortak değişkenlere koymak zorunda olduğumu anlıyorum xreg, ancak bu bölüm için kodum her zaman bir hata döndürüyor.

İşte benim kod:

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 tarafından döndürülen hata mesajı:

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

ARIMAX modelini R ile nasıl takacağımdan çok şey öğrendim ? Ama hala işlevdeki xregargümanda ortak değişkenlerin veya mankenlerin nasıl kurulacağı konusunda net değilim auto.arima().

Yanıtlar:


32

Asıl sorun sizin xregmatris olmamasıdır. Aşağıdaki kod istediğini yapar düşünüyorum. Çalışıp çalışmadığını kontrol etmek için bazı yapay veriler kullandım.

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)

Merhaba Prof.Rob, kod mükemmel çalışıyor. Çözümünüz için çok teşekkürler. Yardımın için sağol!
Michelle

auto.arima (fark (ziyaretler), xreg = xreg) aynı hatayı atar.
Meraklısı

@MdAzimulHaque - diffbir tsnesne yaptığınızda uzunluğunu en az bir gözlemle kısaltırsınız. auto.arima(diff(visits), xreg = xreg)soruyor auto.arimaharici regressors kullanılarak 48 gözlemlere ARIMA modeli sığacak şekilde nrow49'un
Jubbles

Bir süre önce cevabı ben aldım. Bununla başa çıkmanın 2 yolu vardır. 1. yöntem: auto.arima (fark (fark (ziyaretler)), xreg = fark (fark (xreg))) 2. yöntem: auto.arima (ziyaretler, d = 2, xreg)
Meraklısı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.