R의 auto.arima ()에서 xreg 인수를 설정하는 방법은 무엇입니까? [닫은]


19

고객 방문 데이터 (매일)를 측정하는 시계열이있는 작은 프로젝트를 진행하고 있습니다. 제 공변량은 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에 맞추는 방법 에서 많은 것을 배웠습니다 . 그러나 함수 의 xreg인수에서 공변량 또는 인형을 설정하는 방법은 여전히 ​​명확하지 않습니다 auto.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)

안녕하세요, 롭 교수님, 코드가 완벽하게 작동합니다. 귀하의 솔루션에 정말 감사합니다. 도와 주셔서 감사합니다!
Michelle

auto.arima (diff (visits), xreg = xreg)에서 동일한 오류가 발생합니다.
매니아

@MdAzimulHaque - 당신이 때 개체, 당신은 적어도 하나 명의 관찰에 의해 길이를 단축. 49의 외부 회귀자를 사용하여 48 개의 관측치에 ARIMA 모델을 적합하도록 요구 하고 있습니다 .difftsauto.arima(diff(visits), xreg = xreg)auto.arimanrow
Jubbles

@ Jubles 나는 얼마 전 대답을 얻었습니다. 이것을 처리하는 두 가지 방법이 있습니다. 첫 번째 방법 : auto.arima (diff (diff (visiff)), xreg = diff (diff (xreg))) 두 번째 방법 : auto.arima (visits, d = 2, xreg)
애호가
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.