วิธีตีความและพยากรณ์โดยใช้แพ็คเกจ tsoutliers และ auto.arima


9

ฉันได้รับข้อมูลรายเดือนตั้งแต่ปี 1993 ถึงปี 2558 และต้องการคาดการณ์ข้อมูลเหล่านี้ ฉันใช้แพ็คเกจ tsoutliers เพื่อตรวจหาค่าผิดปกติ แต่ฉันไม่รู้ว่าฉันจะคาดการณ์ข้อมูลชุดของฉันได้อย่างไร

นี่คือรหัสของฉัน:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

นี่คือผลลัพธ์ของฉันจากแพ็คเกจ tsoutliers

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

นี่คือแผนของฉัน

ฉันมีข้อความเตือนเหล่านี้เช่นกัน

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

สงสัย:

  1. หากฉันไม่ผิดแพ็คเกจ tsoutliers จะลบค่าผิดปกติที่ตรวจพบและผ่านการใช้ชุดข้อมูลที่ลบค่าผิดปกติมันจะให้แบบจำลอง arima ที่ดีที่สุดสำหรับชุดข้อมูลถูกต้องหรือไม่
  2. ชุดข้อมูลชุดข้อมูลการปรับข้อมูลจะถูกเลื่อนลงมากเนื่องจากการลบระดับกะ ฯลฯ นี่ไม่ได้หมายความว่าหากการคาดการณ์เสร็จสิ้นในชุดที่ปรับปรุงแล้วผลลัพธ์ของการพยากรณ์จะไม่ถูกต้องมากเนื่องจากข้อมูลล่าสุดมีมากกว่า 12 อยู่แล้วในขณะที่ข้อมูลที่ปรับเปลี่ยนไปอยู่ที่ประมาณ 7-8
  3. ข้อความเตือน 4 และ 5 หมายถึงอะไร? มันหมายความว่ามันไม่สามารถทำ auto.arima โดยใช้ชุดที่ปรับได้หรือไม่?
  4. [12] ใน ARIMA (0,1,0) (0,0,1) [12] หมายถึงอะไร เป็นเพียงความถี่ / ช่วงเวลาของชุดข้อมูลซึ่งฉันตั้งเป็นรายเดือนหรือไม่ และนี่ก็หมายความว่าชุดข้อมูลของฉันเป็นไปตามฤดูกาลด้วยหรือไม่
  5. ฉันจะตรวจสอบฤดูกาลในชุดข้อมูลของฉันได้อย่างไร จากการสร้างภาพข้อมูลของอนุกรมเวลาฉันไม่เห็นแนวโน้มที่ชัดเจนใด ๆ และถ้าฉันใช้ฟังก์ชันการสลายตัวมันจะสมมติว่ามีแนวโน้มตามฤดูกาลหรือไม่ ดังนั้นฉันจึงเชื่อว่าสิ่งที่ผู้ประกาศใช้บอกฉันว่ามีแนวโน้มของฤดูกาลอยู่ที่ไหนเนื่องจากมีคำสั่งซื้อของ MA 1 อยู่
  6. ฉันจะทำการคาดการณ์ของฉันกับข้อมูลนี้ต่อไปหลังจากระบุค่าผิดปกติเหล่านี้ได้อย่างไร
  7. วิธีการรวมค่าผิดปกติเหล่านี้เข้ากับแบบจำลองการคาดการณ์อื่น ๆ - การปรับแบบเอกซ์โพเนนเชียล, ARIMA, แบบจำลองเชิงพื้นที่, Random Walk, theta? ฉันแน่ใจว่าฉันไม่สามารถลบค่าผิดปกติเนื่องจากมีการเลื่อนระดับและถ้าฉันใช้เฉพาะข้อมูลอนุกรมที่ปรับแล้วค่าจะเล็กเกินไปฉันจะทำอย่างไร

ฉันจำเป็นต้องเพิ่มค่าผิดปกติเหล่านี้เป็น regressor ใน auto.arima เพื่อการคาดการณ์หรือไม่ แล้วมันทำงานยังไง?

คำตอบ:


5

ความคิดเห็นเหล่านี้ยาวเกินไป ... จึงเป็น "คำตอบ"

  1. คุณผิดที่ไม่ปรับและระบุ ARIMA (ตามที่ AUTOBOX ทำ) สันนิษฐานว่าไม่มีการปรับการแทรกแซงจากนั้นจึงรีบเร่งเพื่อระบุรูปแบบ ARIMA ที่อาจได้รับผลกระทบจากการไม่รักษาความผิดปกติ บ่อยครั้งที่หนึ่งต้องปรับเปลี่ยนสำหรับทั้งชุดข้อมูลเชิงสาเหตุที่ผู้ใช้ระบุและ / หรือโครงสร้างที่กำหนดไม่ได้รับการระบุ (ค่าผิดปกติ / การเลื่อนระดับพัลส์ตามฤดูกาลแนวโน้มเวลาท้องถิ่น) ก่อนระบุโครงสร้าง ARIMA ดูตัวอย่างของ dignosis ที่ไม่ดีซึ่งทำให้เกิดความผิดพลาดในการสร้างความแตกต่างโดยไม่จำเป็นในขณะที่สภาวะที่แท้จริง / ถูกต้องของธรรมชาติไม่ต้องการความแตกต่างใด ๆ การไม่อยู่กับที่ไม่ได้แปลว่าจำเป็นต้องมีความแตกต่างกัน แต่มักจะสามารถแนะนำการปรับความหมายแบบ iethe สำหรับการเปลี่ยนระดับ / ค่าเฉลี่ย

  2. การพยากรณ์ที่ถูกต้องจะทำจากชุดดั้งเดิมเสมอดังนั้นการคาดการณ์ควรเป็นที่เชื่อได้ในประวัติศาสตร์

  3. ฉันไม่มีความคิดเนื่องจากฉันไม่ได้ใช้ขั้นตอนนี้อย่างแข็งขัน ฉันแนะนำให้คุณเพราะคุณขอวิธีแก้ปัญหาฟรี r ไม่ได้เพราะฉันคิดว่ามันดีหรือเพียงพอเนื่องจากการสร้างแบบจำลอง ARIMA เป็นกระบวนการตรวจสอบตัวเองซ้ำ ๆ (หลายขั้นตอน)

  4. แบบจำลองชี้ให้เห็นว่ามันคิดว่าข้อมูลมีส่วนประกอบของฤดูกาล (12) แต่สิ่งนี้อาจสะท้อนถึงความต้องการของชีพจรตามฤดูกาล

  5. แนวคิดของแนวโน้มตามฤดูกาลเป็นสิ่งที่คลุมเครือที่สุด

  6. คำตอบของฉันจะชัดเจนเกินไปและทำให้หายไปเอง


1
tu มากมาก @ricardo
IrishStat

4

แพ็คเกจ 'tsoutliers' ใช้ขั้นตอนที่อธิบายโดยChen และ Liu (1993) [1] คำอธิบายของแพ็คเกจและขั้นตอนจะได้รับในเอกสารนี้ด้วย

สรุปขั้นตอนประกอบด้วยสองขั้นตอนหลัก:

  1. การตรวจจับค่าผิดปกติตามรุ่น ARIMA ที่เลือก
  2. เลือกและ / หรือปรับโฉมรุ่น ARIMA รวมถึงค่าผิดปกติที่ตรวจพบในขั้นตอนก่อนหน้าและลบค่าผิดปกติที่ไม่สำคัญในรูปแบบใหม่

ชุดจะถูกปรับสำหรับค่าผิดปกติที่ตรวจพบและขั้นตอน (1) และ (2) ซ้ำแล้วซ้ำอีกจนกระทั่งไม่พบค่าผิดปกติเพิ่มขึ้นหรือจนกว่าจะถึงจำนวนการทำซ้ำสูงสุด


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

คุณสามารถเพิ่มจำนวนสูงสุดของการทำซ้ำผ่านการโต้แย้งในการทำงานmaxit.iloop tsoขอแนะนำว่าอย่าตั้งค่าการทำซ้ำจำนวนมากในระยะแรกและปล่อยให้กระบวนการย้ายไปสู่ขั้นตอนที่สองที่มีการดัดแปลงหรือเลือกรุ่น ARIMA อีกครั้ง


คำเตือนที่ 4 และ 5 ที่เกี่ยวข้องกับกระบวนการของการกระชับรูปแบบ ARIMA และได้รับการคัดเลือกรูปแบบตามลำดับสำหรับการทำงานและstats::arima forecast:auto.arimaอัลกอริทึมที่เพิ่มฟังก์ชั่นความน่าจะเป็นไม่ได้รวมตัวกันเป็นโซลูชั่น คุณสามารถค้นหารายละเอียดบางอย่างที่เกี่ยวข้องกับปัญหาเหล่านี้ตัวอย่างเช่นในโพสต์นี้ และโพสต์นี้


[1] จุงเฉินและโหลน-Mu หลิว (1993) "ร่วมการประมาณค่าพารามิเตอร์รุ่นและผลกระทบค่าผิดปกติในเวลาซีรีส์" วารสารของสมาคมอเมริกันสถิติ , 88 (421), PP. 284-297 DOI: 10.1080 / 01621459.1993.10594321


ใช้เวลาเท่าไหร่ในการรัน tso ()
Anoop Toffy

@AnoopToffy มันขึ้นอยู่กับความยาวของข้อมูลระยะเวลา ฯลฯ สำหรับข้อมูลรายปีรายเดือนรายไตรมาสขนาดตัวอย่างประมาณ 120 ข้อสังเกตและแบบไดนามิกที่สามารถจับได้โดยแบบจำลอง ARIMA อัลกอริทึมจะทำงานในที่สุด ประมาณ 10 วินาที (โดยทั่วไปจะน้อยกว่า)
javlacalle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.