วิธีตั้งค่าอาร์กิวเมนต์ xreg ใน auto.arima () ใน R [ปิด]


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 เพื่อให้พอดีกับข้อมูล 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? แต่ฉันยังไม่ชัดเจนว่าจะตั้งค่า covariates หรือหุ่นในการ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)

สวัสดี Prof.Rob รหัสทำงานได้สมบูรณ์แบบ ขอบคุณมากสำหรับโซลูชันของคุณ ผมขอขอบคุณความช่วยเหลือของคุณ!
มิเชล

auto.arima (ต่าง (การเข้าชม), xreg = xreg) ส่งข้อผิดพลาดเดียวกัน
ผู้ที่ชื่นชอบ

@MdAzimulHaque - เมื่อคุณวัตถุคุณตัดความยาวของตนโดยอย่างน้อยหนึ่งสังเกต ขอให้พอดีกับแบบจำลอง ARIMA จากการสังเกตการณ์ 48 ครั้งโดยใช้ regressors ภายนอกจำนวน 49 ข้อdifftsauto.arima(diff(visits), xreg = xreg)auto.arimanrow
Jubbles

@ Jubbles ฉันได้รับคำตอบในขณะที่ผ่านมา มี 2 ​​วิธีในการจัดการกับสิ่งนี้ วิธีที่ 1: auto.arima (diff (diff (การเข้าชม)) xreg = diff (diff (xreg))) วิธีที่ 2: auto.arima (การเข้าชม, D = 2 xreg)
คนที่กระตือรือร้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.