การกำหนดพารามิเตอร์ (p, d, q) สำหรับการสร้างแบบจำลอง ARIMA


10

ฉันค่อนข้างใหม่สำหรับสถิติและอาร์ฉันต้องการทราบกระบวนการในการกำหนดพารามิเตอร์ ARIMA สำหรับชุดข้อมูลของฉัน คุณสามารถช่วยฉันคิดโดยใช้ R และในทางทฤษฎี (ถ้าเป็นไปได้)?

ช่วงข้อมูลตั้งแต่ Jan-12 ถึง Mar-14 และแสดงยอดขายรายเดือน นี่คือชุดข้อมูล:

99 58 52 83 94 73 97 83 86 63 77 70 87 84 60 105 87 93 110 71 158 52 33 68 82 88 84

และนี่คือแนวโน้ม:

ป้อนคำอธิบายรูปภาพที่นี่

ข้อมูลไม่แสดงแนวโน้มพฤติกรรมตามฤดูกาลหรือความเป็นวงจร

คำตอบ:


9

โดยทั่วไปแล้วขุดลงในตำราการวิเคราะห์อนุกรมเวลาขั้นสูง (โดยปกติแล้วหนังสือเบื้องต้นจะแนะนำให้คุณเชื่อถือซอฟต์แวร์ของคุณ) เช่นการวิเคราะห์อนุกรมเวลาโดยกล่องเจนกินส์และไรน์เซล นอกจากนี้คุณยังสามารถดูรายละเอียดเกี่ยวกับขั้นตอน Box-Jenkins โดย googling โปรดทราบว่ามีวิธีการอื่นที่นอกเหนือจาก Box-Jenkins เช่นที่ใช้ AIC

ใน R คุณจะแปลงข้อมูลของคุณเป็นวัตถุts(อนุกรมเวลา) และบอก R ว่าความถี่คือ 12 (ข้อมูลรายเดือน):

require(forecast)
sales <- ts(c(99, 58, 52, 83, 94, 73, 97, 83, 86, 63, 77, 70, 87, 84, 60, 105, 87, 93, 110, 71, 158, 52, 33, 68, 82, 88, 84),frequency=12)

คุณสามารถพล็อตฟังก์ชั่นความสัมพันธ์อัตโนมัติ (บางส่วน):

acf(sales)
pacf(sales)

สิ่งเหล่านี้ไม่ได้แนะนำพฤติกรรม AR หรือ MA ใด ๆ

จากนั้นคุณพอดีกับแบบจำลองและตรวจสอบมัน:

model <- auto.arima(sales)
model

ดู?auto.arimaเพื่อขอความช่วยเหลือ ดังที่เราเห็นauto.arimaเลือกรูปแบบง่าย ๆ (0,0,0) เนื่องจากมันไม่เห็นแนวโน้มหรือฤดูกาลหรือ AR หรือ MA ในข้อมูลของคุณ สุดท้ายคุณสามารถคาดการณ์และวางแผนอนุกรมเวลาและการคาดการณ์:

plot(forecast(model))

พยากรณ์

ดู?forecast.Arima(หมายเหตุเมืองหลวง A!)

หนังสือเรียนออนไลน์ฟรีนี้เป็นการแนะนำที่ยอดเยี่ยมเกี่ยวกับการวิเคราะห์อนุกรมเวลาและการพยากรณ์โดยใช้อาร์แนะนำเป็นอย่างยิ่ง


สวัสดี Stephan ฉันได้เพิ่มข้อมูลและพล็อตสำหรับชุดข้อมูลของฉัน อย่างที่คุณเห็นว่าฉันมีเพียง 27 จุดข้อมูลดังนั้นฉันจึงเรียกใช้ควันที่นี่ คุณช่วยแนะนำบางอย่างได้ที่นี่
Raunak87

ฉันแก้ไขคำตอบ ซีรี่ส์ของคุณไม่ได้มีโครงสร้างจำนวนมากดังนั้นคุณสามารถทำได้เพียงเล็กน้อยเท่านั้น เนื่องจากคุณมีสัญญาณรบกวนและอื่น ๆ เป็นหลักคุณจะได้รับช่วงการคาดการณ์ที่มาก
Stephan Kolassa

4

สองสิ่ง. อนุกรมเวลาของคุณเป็นรายเดือน, คุณต้องการข้อมูลอย่างน้อย 4 ปีสำหรับการประมาณค่า ARIMA ที่เหมาะสม, ตามที่สะท้อนให้เห็น 27 คะแนนไม่ได้ให้โครงสร้างสัมพันธ์อัตโนมัติ นี่อาจหมายความว่ายอดขายของคุณได้รับผลกระทบจากปัจจัยภายนอกมากกว่าที่จะมีความสัมพันธ์กับมูลค่าของมันเอง พยายามค้นหาปัจจัยที่มีผลต่อยอดขายของคุณและปัจจัยที่ถูกวัด จากนั้นคุณสามารถเรียกใช้การถดถอยหรือ VAR (Vector Autoregression) เพื่อรับการคาดการณ์

หากคุณไม่มีอะไรอย่างอื่นนอกจากค่าเหล่านี้วิธีที่ดีที่สุดของคุณคือการใช้วิธีการปรับให้เรียบแบบเอ็กซ์โปเนนเชียลเพื่อให้ได้การคาดการณ์ที่ไร้เดียงสา การปรับให้เรียบแบบเอ็กซ์โพเนนเชียลมีอยู่ใน R

ประการที่สองไม่เห็นยอดขายของผลิตภัณฑ์ที่แยกจากกันการขายของสองผลิตภัณฑ์อาจมีความสัมพันธ์เช่นการเพิ่มขึ้นของยอดขายกาแฟอาจสะท้อนถึงยอดขายชาที่ลดลง ใช้ข้อมูลผลิตภัณฑ์อื่นเพื่อปรับปรุงการคาดการณ์ของคุณ

ซึ่งมักเกิดขึ้นกับข้อมูลการขายในร้านค้าปลีกหรือซัพพลายเชน พวกเขาไม่แสดงโครงสร้างของความสัมพันธ์อัตโนมัติมากในซีรีส์ ในขณะที่วิธีการอื่น ๆ เช่น ARIMA หรือ GARCH มักจะทำงานร่วมกับข้อมูลตลาดหุ้นหรือดัชนีเศรษฐกิจที่คุณมักมีความสัมพันธ์อัตโนมัติ


3

นี่เป็นความคิดเห็นจริงๆ แต่เกินกว่าที่อนุญาตดังนั้นฉันจึงโพสต์มันเป็นคำตอบแบบเสมือนเพราะมันแนะนำวิธีที่ถูกต้องในการวิเคราะห์ข้อมูลอนุกรมเวลา .

ความจริงที่รู้จักกันดี แต่มักจะไม่สนใจที่นี่และที่อื่น ๆ คือทฤษฎี ACF / PACF ซึ่งใช้ในการสร้างแบบจำลอง ARIMA เบื้องต้นไม่ใช้พัลส์ / การเลื่อนระดับ / พัลส์ฤดูกาล / แนวโน้มเวลาท้องถิ่น นอกจากนี้ยังวางพารามิเตอร์ค่าคงที่และความแปรปรวนข้อผิดพลาดคงที่ตลอดเวลา ในกรณีนี้การสังเกตครั้งที่ 21 (ค่า = 158) จะถูกตั้งค่าสถานะอย่างง่ายดายว่าเป็นค่าผิดปกติ / พัลส์และการปรับค่าที่แนะนำที่ -80 ให้ค่าการปรับเปลี่ยนที่ 78 ACF / PACF ที่เป็นผลลัพธ์ของซีรีส์ที่แก้ไขนั้นแสดงให้เห็นว่ามีโครงสร้าง stochastic (ARIMA) เพียงเล็กน้อยหรือไม่มีเลย ในกรณีนี้การผ่าตัดประสบความสำเร็จ แต่ผู้ป่วยเสียชีวิต ACF ตัวอย่างขึ้นอยู่กับความแปรปรวนร่วม / ความแปรปรวนและความแปรปรวนที่พองเกิน / พองเกินไปทำให้เกิดความเอนเอียงลงสู่ ACF ศ. Keith Ord เคยเรียกสิ่งนี้ว่า "ผลของอลิซในแดนมหัศจรรย์"


2

เนื่องจากข้อมูลของ Stephan Kolassa ชี้ให้เห็นว่าไม่มีโครงสร้างข้อมูลของคุณมากนัก ฟังก์ชั่น autocorrelation ไม่แนะนำโครงสร้าง ARMA (ดูacf(sales), pacf(sales)) และforecast::auto.arimaไม่ได้เลือกคำสั่ง AR หรือ MA ใด ๆ

require(forecast)
require(tsoutliers)
fit1 <- auto.arima(sales, d=0, D=0, ic="bic")
fit1
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept
#        81.3704
#s.e.     4.4070

อย่างไรก็ตามโปรดสังเกตว่าโมฆะของปกติในส่วนที่เหลือถูกปฏิเสธในระดับนัยสำคัญ 5%

JarqueBera.test(residuals(fit1))[[1]]
#X-squared = 12.9466, df = 2, p-value = 0.001544

นอกเหนือหมายเหตุ: JarqueBera.testขึ้นอยู่กับฟังก์ชั่นที่มีอยู่ในแพคเกจjarque.bera.testtseries

รวมถึงสารเติมแต่งที่ผิดปกติในการสังเกต 21 ที่ตรวจพบด้วยการtsoutliersแสดงผลปกติในส่วนที่เหลือ ดังนั้นการประมาณค่าของการดักจับและการคาดการณ์จึงไม่ได้รับผลกระทบจากการสังเกตจากภายนอก

res <- tsoutliers::tso(sales, types=c("AO", "TC", "LS"), 
  args.tsmethod=list(ic="bic", d=0, D=0))
res
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept     AO21
#        78.4231  79.5769
#s.e.     3.3885  17.6072
#sigma^2 estimated as 298.5:  log likelihood=-115.25
#AIC=236.49   AICc=237.54   BIC=240.38
#Outliers:
#  type ind time coefhat tstat
#1   AO  21 2:09   79.58  4.52
JarqueBera.test(residuals(res$fit))[[1]]
#X-squared = 1.3555, df = 2, p-value = 0.5077

1
n=12n
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.