การตรวจจับค่าผิดปกติในอนุกรมเวลา (LS / AO / TC) โดยใช้แพ็คเกจ tsoutliers ใน R จะแสดงค่าผิดปกติในรูปแบบสมการได้อย่างไร


35

ความคิดเห็นที่: ประการแรกผมอยากจะบอกว่าใหญ่ขอบคุณไปยังผู้เขียนของใหม่tsoutliersแพคเกจซึ่งดำเนินเฉินและหลิวการตรวจสอบอนุกรมเวลาค่าผิดปกติซึ่งได้รับการตีพิมพ์ในวารสารของสมาคมอเมริกันสถิติในปี 1993 อยู่ในซอฟต์แวร์โอเพนซอร์สRR

แพ็คเกจตรวจจับค่าผิดปกติ 5 ประเภทที่ซ้ำกันในข้อมูลอนุกรมเวลา:

  1. สารเติมแต่ง (AO)
  2. นวัตกรรมล้ำหน้า (IO)
  3. Level Shift (LS)
  4. การเปลี่ยนแปลงชั่วคราว (TC)
  5. การเลื่อนระดับตามฤดูกาล (SLS)

สิ่งที่ดียิ่งกว่าคือแพคเกจนี้ใช้ auto.arima จากแพ็คเกจพยากรณ์เพื่อตรวจจับค่าผิดปกติได้อย่างราบรื่น นอกจากนี้แพ็กเกจยังสร้างพล็อตที่ดีเพื่อความเข้าใจที่ดีขึ้นของข้อมูลอนุกรมเวลา

ด้านล่างเป็นคำถามของฉัน:

ฉันลองใช้งานตัวอย่างโดยใช้แพ็คเกจนี้และมันก็ใช้งานได้ดี ค่าผิดปกติเพิ่มเติมและการเลื่อนระดับนั้นใช้งานง่าย อย่างไรก็ตามฉันมีคำถาม 2 ข้อเกี่ยวกับการส่งค่าผิดปกติชั่วคราวและค่าผิดปกติทางนวัตกรรมซึ่งฉันไม่สามารถเข้าใจได้

ตัวอย่างการเปลี่ยนแปลงค่าผิดพลาดชั่วคราว:

ลองพิจารณาตัวอย่างต่อไปนี้:

library(tsoutliers)
library(expsmooth)
library(fma)

outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)

โปรแกรมตรวจพบการเลื่อนระดับอย่างถูกต้องและการเปลี่ยนแปลงชั่วคราวที่ตำแหน่งต่อไปนี้

Outliers:
  type ind time coefhat tstat
1   LS  12 1935   37.14 3.153
2   TC  20 1943   36.38 3.350

ด้านล่างคือเนื้อเรื่องและคำถามของฉัน

  • จะเขียนการเปลี่ยนแปลงชั่วคราวในรูปแบบสมการได้อย่างไร (การเลื่อนระดับสามารถเขียนเป็นตัวแปรไบนารีได้อย่างง่ายดายทุกเวลาก่อน 1935 / Obs 12 คือ 0 และทุกเวลาหลังจาก 1935 และหลังจากนั้นคือ 1)

สมการสำหรับการเปลี่ยนแปลงชั่วคราวในคู่มือแพ็กเกจและบทความได้รับเป็น:

L(B)=11δB

โดยที่คือ 0.7 ฉันแค่ดิ้นรนเพื่อแปลสิ่งนี้เป็นตัวอย่างด้านบนδ

  • คำถามที่สองของฉันเกี่ยวกับการสร้างสรรค์สิ่งใหม่ ๆ ฉันไม่เคย
    เจอการสร้างสรรค์ในเชิงนวัตกรรม ตัวอย่างตัวเลขหรือตัวอย่างกรณีใด ๆ จะเป็นประโยชน์มาก

ค่าผิดปกติ

แก้ไข: @Irishstat ฟังก์ชัน tsoutliers ทำงานได้อย่างยอดเยี่ยมในการระบุค่าผิดปกติและแนะนำรูปแบบ ARIMA ที่เหมาะสม ดูที่ชุดข้อมูล Nile ให้ดูด้านล่างแอปพลิเคชันของ auto.arima จากนั้นใช้ tsoutliers (พร้อมค่าเริ่มต้นซึ่งรวมถึง auto.arima):

auto.arima(Nile)
Series: Nile 
ARIMA(1,1,1)                    

Coefficients:
         ar1      ma1
      0.2544  -0.8741
s.e.  0.1194   0.0605

sigma^2 estimated as 19769:  log likelihood=-630.63
AIC=1267.25   AICc=1267.51   BIC=1275.04

หลังจากใช้ฟังก์ชั่น tsoutliers มันจะระบุค่าผิดปกติของ LS และค่าเสริมและแนะนำให้ใช้คำสั่ง ARIMA (0,0,0)

nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile 
ARIMA(0,0,0) with non-zero mean 

Coefficients:
      intercept       LS29       AO43
      1097.7500  -242.2289  -399.5211
s.e.    22.6783    26.7793   120.8446

sigma^2 estimated as 14401:  log likelihood=-620.65
AIC=1249.29   AICc=1249.71   BIC=1259.71

Outliers:
  type ind time coefhat  tstat
1   LS  29 1899  -242.2 -9.045
2   AO  43 1913  -399.5 -3.306

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


8
ฉันดีใจที่เห็นว่าคุณพบแพ็คเกจที่มีประโยชน์ขอบคุณ! BTW ฉันได้แก้ไขการพิมพ์ผิดในฟังก์ชั่นที่วางแผนผลลัพธ์เพื่อให้ในชุดรุ่นถัดไปแกน y จะครอบคลุมช่วงของทั้งต้นฉบับและซีรี่ส์ที่ปรับ
javlacalle

2
ในรุ่นล่าสุดของแพคเกจที่ฟังก์ชั่นtsoutliersได้รับการเปลี่ยนชื่อเป็นความขัดแย้งหลีกเลี่ยงการมีฟังก์ชั่นที่มีชื่อเดียวกันในแพคเกจtso forecast
javlacalle

1
@javlacalle ฉันดาวน์โหลดแพ็คเกจ tsoutliers ล่าสุดมันยังคงมี tsoutliers ไม่ใช่ tso ฉันไม่แน่ใจว่าเมื่อใดจะมีการอัปเดตแพ็คเกจ ฉันดีใจที่เรามีชื่อ funtion ต่างกัน
ทำนาย

ฉันรีบแจ้งเล็กน้อยเกี่ยวกับการอัปเดต ใช้เวลาพอสมควรจนกว่าจะมีการอัพเดตบน CRAN ฉันเพิ่งเห็นว่าเวอร์ชันล่าสุด 0.4 สามารถดาวน์โหลดได้จาก CRAN
javlacalle

@javlacalle ฉันพบ tsoutliers ยากมากที่จะติดตั้งบน mac ของฉัน ฉันชง GSL ติดตั้งผมพยายามที่จะรวบรวมการใช้clangและgccและค่างาน ฉันคิดว่ามันเป็นแพ็คเกจที่ยอดเยี่ยม แต่การติดตั้งมันทำให้ฉันเสียใจจริงๆ
ปริญญาตรี

คำตอบ:


19

การเปลี่ยนแปลงชั่วคราว TC เป็นค่าผิดปกติประเภททั่วไป สมการที่ให้ไว้ในเอกสารประกอบของบรรจุภัณฑ์และสิ่งที่คุณเขียนคือสมการที่อธิบายพลวัตของค่าผิดปกติประเภทนี้ คุณสามารถสร้างโดยใช้ฟังก์ชั่นfilterที่แสดงด้านล่าง มันกำลังส่องสว่างเพื่อแสดงค่าหลายค่าของเดลต้า สำหรับ TC จะยุบในส่วนเพิ่มเติม สุดขีดอีก , TC เป็นเหมือนการเลื่อนระดับδ=0δ=1

tc <- rep(0, 50)
tc[20] <- 1
tc1 <- filter(tc, filter = 0, method = "recursive")
tc2 <- filter(tc, filter = 0.3, method = "recursive")
tc3 <- filter(tc, filter = 0.7, method = "recursive")
tc4 <- filter(tc, filter = 1, method = "recursive")
par(mfrow = c(2,2))
plot(tc1, main = "TC delta = 0")
plot(tc2, main = "TC delta = 0.3")
plot(tc3, main = "TC delta = 0.7")
plot(tc4, main = "TC delta = 1", type = "s")

การเปลี่ยนแปลงการสั่นไหว

ในตัวอย่างของคุณคุณสามารถใช้ฟังก์ชันoutliers.effectsเพื่อแสดงเอฟเฟกต์ของค่าผิดปกติที่ตรวจพบในซีรีย์ที่สังเกตได้:

# unit impulse
m1 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = FALSE))
tsp(m1) <- tsp(chicken)
# weighted by the estimated coefficients
m2 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = TRUE))
tsp(m2) <- tsp(chicken)

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

ในเอกสารนี้แสดงให้เห็นว่าในบางสถานการณ์อิทธิพลของ IO อาจเพิ่มขึ้นเนื่องจากวันที่เกิดเหตุการณ์นั้นอยู่ไกลกว่าในอดีตซึ่งเป็นสิ่งที่ยากต่อการตีความหรือสันนิษฐาน

IO มีศักยภาพที่น่าสนใจเนื่องจากอาจจับภาพผิดปกติตามฤดูกาล ค่าผิดปกติประเภทอื่น ๆ ที่พิจารณาในtsoutliersไม่สามารถจับรูปแบบตามฤดูกาล อย่างไรก็ตามในบางกรณีการค้นหาระดับกะตามฤดูกาลที่เป็นไปได้ดีกว่า SLS แทนที่จะเป็น IO (ดังที่แสดงในเอกสารที่กล่าวถึงก่อนหน้านี้)

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

ในการอ้างอิงก่อนหน้านี้คุณอาจพบตัวอย่างของข้อมูลจริงที่ตรวจพบ IO


ขอบคุณสำหรับการตอบสนองอย่างละเอียด ฉันซาบซึ้งจริงๆ ฉันมีคำถามเพิ่มเติมเล็กน้อย มีข้อดีใดบ้างในการใช้ auto.arima ระบุ p, d, q และใช้ tsoutliers โดยใช้ arima เป็น tsmethod หรือไม่
พยากรณ์

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

1
ขั้นตอนการค้นหาค่าผิดปกติซ้ำซ้อน เพื่อความปลอดภัยจะมีการ จำกัด จำนวนการทำซ้ำที่อนุญาต เมื่อคุณสังเกตคำเตือนคุณอาจลองใช้อัลกอริทึมเพิ่มอาร์กิวเมนต์maxit.iloopเป็น 5-6 และดูว่าผลลัพธ์เปลี่ยนไปหรือไม่ หากคำเตือนถูกส่งคืนด้วยขนาดใหญ่maxit.iloop(เช่น 20 หรือมากกว่า) อาจเป็นสัญญาณว่ามีบางสิ่งบางอย่างที่ไม่ได้ถูกสร้างแบบจำลองอย่างถูกต้อง การลบ IO ออกจากประเภทค่าผิดปกติที่ต้องพิจารณาอาจเป็นตัวเลือกที่ดีในบางกรณี ในกรณีส่วนใหญ่คุณสามารถละเว้นคำเตือน คุณสามารถใช้suppressWarningsเพื่อหลีกเลี่ยงพวกเขา
javlacalle

2
@mugen ฉันไม่รู้หนังสือที่ครอบคลุมปัญหานี้อย่างถี่ถ้วน เนื่องจากแนวทางที่กล่าวถึงในโพสต์นี้เกี่ยวข้องกับการวิเคราะห์การแทรกแซงตำราเรียนใด ๆ (เกี่ยวกับเศรษฐมิติหรืออนุกรมเวลา) ที่มีบทเกี่ยวกับปัญหานี้จะเป็นประโยชน์ ตัวอย่างเช่นการวิเคราะห์อนุกรมเวลา ด้วยการประยุกต์ใช้ในการวิจัย สำหรับรายละเอียดคุณควรตรวจสอบบทความวารสารหลายฉบับที่เกี่ยวข้องกับปัญหานี้โดยเริ่มจากเฉินและหลิว (1993)และการอ้างอิงในนั้น
javlacalle

2
@mugen ฉันจะดูบทความของ Tsayด้วย นอกจากนี้ฉันจะตรวจสอบหนังสือคลาสสิกโดยPankratzซึ่งมีความคุ้มครองที่ดีเกี่ยวกับค่าผิดปกติ
พยากรณ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.