ผลที่ตามมาของการสร้างแบบจำลองกระบวนการที่ไม่หยุดนิ่งโดยใช้ ARMA?


23

ฉันเข้าใจว่าเราควรใช้ ARIMA สำหรับการสร้างแบบจำลองชุดเวลาที่ไม่หยุดนิ่ง นอกจากนี้ทุกสิ่งที่ฉันอ่านบอกว่า ARMA ควรใช้สำหรับอนุกรมเวลาที่อยู่กับที่เท่านั้น

สิ่งที่ฉันพยายามจะทำความเข้าใจคืออะไรจะเกิดขึ้นในทางปฏิบัติเมื่อทำการแยกแยะแบบจำลองและสมมติว่าd = 0เป็นอนุกรมเวลาที่ไม่หยุดนิ่ง ตัวอย่างเช่น:

controlData <- arima.sim(list(order = c(1,1,1), ar = .5, ma = .5), n = 44)

ข้อมูลการควบคุมมีลักษณะดังนี้:

 [1]   0.0000000   0.1240838  -1.4544087  -3.1943094  -5.6205257
 [6]  -8.5636126 -10.1573548  -9.2822666 -10.0174493 -11.0105225
[11] -11.4726127 -13.8827001 -16.6040541 -19.1966633 -22.0543414
[16] -24.8542959 -25.2883155 -23.6519271 -21.8270981 -21.4351267
[21] -22.6155812 -21.9189036 -20.2064343 -18.2516852 -15.5822178
[26] -13.2248230 -13.4220158 -13.8823855 -14.6122867 -16.4143756
[31] -16.8726071 -15.8499558 -14.0805114 -11.4016515  -9.3330560
[36]  -7.5676563  -6.3691600  -6.8471371  -7.5982880  -8.9692152
[41] -10.6733419 -11.6865440 -12.2503202 -13.5314306 -13.4654890

สมมติว่าผมไม่ทราบว่าข้อมูลคือผมอาจจะมีลักษณะที่ARIMA(1,1,1)pacf(controlData)

pacf (controlData)

จากนั้นฉันใช้ Dickey-Fuller เพื่อดูว่าข้อมูลไม่คงที่:

require('tseries')
adf.test(controlData)

# Augmented Dickey-Fuller Test
#
# data:  controlData
# Dickey-Fuller = -2.4133, Lag order = 3, p-value = 0.4099
# alternative hypothesis: stationary

adf.test(controlData, k = 1)

# Augmented Dickey-Fuller Test
#
#data:  controlData
# Dickey-Fuller = -3.1469, Lag order = 1, p-value = 0.1188
# alternative hypothesis: stationary

ดังนั้นฉันอาจสันนิษฐานว่าข้อมูลคือ ARIMA (2,0, *) จากนั้นauto.arima(controlData)ลองใช้เพื่อให้ได้พอดีที่สุด?

require('forecast')
naiveFit <- auto.arima(controlData)
naiveFit
# Series: controlData 
# ARIMA(2,0,1) with non-zero mean 
# 
# Coefficients:
#          ar1      ar2     ma1  intercept
#      1.4985  -0.5637  0.6427   -11.8690
# s.e.  0.1508   0.1546  0.1912     3.2647
#
# sigma^2 estimated as 0.8936:  log likelihood=-64.01
# AIC=138.02   AICc=139.56   BIC=147.05

ดังนั้นแม้ว่าข้อมูลในอดีตและอนาคตจะเป็น ARIMA (1,1,1) แต่ฉันอาจถูกจัดให้เป็น ARIMA (2,0,1) tsdata(auto.arima(controlData))ดูดีเหมือนกัน

นี่คือสิ่งที่ผู้สร้างแบบจำลองข้อมูลจะพบ:

informedFit <- arima(controlData, order = c(1,1,1))
# informedFit
# Series: controlData 
# ARIMA(1,1,1)                    
#
# Coefficients:
#          ar1     ma1
#       0.4936  0.6859
# s.e.  0.1564  0.1764
#
# sigma^2 estimated as 0.9571:  log likelihood=-62.22
# AIC=130.44   AICc=131.04   BIC=135.79

1) ทำไมข้อมูลเหล่านี้เกณฑ์ที่ดีขึ้นกว่ารุ่นที่เลือกโดยauto.arima(controlData)?

ตอนนี้ฉันเพิ่งเปรียบเทียบข้อมูลจริงและแบบจำลอง 2 แบบ:

plot(controlData)
lines(fitted(naiveFit), col = "red")
lines(fitted(informedFit), col = "blue")

tsPlots

2) เล่นเป็นทนายของปีศาจฉันจะจ่ายผลอะไรแบบใดโดยใช้ ARIMA (2, 0, 1) เป็นตัวอย่าง? อะไรคือความเสี่ยงของข้อผิดพลาดนี้?

3) ฉันส่วนใหญ่กังวลเกี่ยวกับความหมายใด ๆ สำหรับการทำนายล่วงหน้าหลายช่วง ฉันคิดว่าพวกเขาจะมีความแม่นยำน้อยลงหรือไม่ ฉันแค่มองหาหลักฐานบางอย่าง

4) คุณจะแนะนำวิธีการอื่นในการเลือกแบบจำลองหรือไม่? มีปัญหาใด ๆ กับการใช้เหตุผลของฉันในฐานะผู้สร้างแบบจำลอง

ฉันอยากรู้จริงๆว่าอะไรคือผลที่ตามมาของการจำแนกประเภทนี้ ฉันหาแหล่งข้อมูลมาแล้วและหาอะไรไม่เจอ วรรณกรรมทั้งหมดที่ฉันสามารถพบได้เพียงแค่สัมผัสกับเรื่องนี้ แต่เพียงแค่ระบุว่าข้อมูลควรจะอยู่กับที่ก่อนที่จะทำการแสดง ARMA และถ้ามันไม่อยู่กับที่

ขอบคุณ!


ความประทับใจของฉันคือว่ามันคล้ายกับ "ข้อผิดพลาด orthogonal" ในการถดถอยข้ามส่วน (นั่นคืออคติข้อผิดพลาดมาตรฐาน แต่ไม่ใช่ค่าสัมประสิทธิ์) แต่ฉันสนใจฟังคำตอบจริง
shadowtalker

คำตอบ:


11

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

สมมติว่ากลไกการสร้างข้อมูลที่แท้จริงคือ กับปกติศูนย์หมายถึงองค์ประกอบเสียงสีขาว IID,\ ด้านบนยังบอกเป็นนัยว่า

(1)yt=yt1+ut,t=1,...,T,y0=0
utE(ut2)=σu2

(2)Yเสื้อ=Σผม=1เสื้อยูผม

เราระบุรูปแบบเรียกมันว่ารุ่นA

(3)Yเสื้อ=βYเสื้อ-1+ยูเสื้อ,เสื้อ=1,...,T,Y0=0

และเราได้รับการประมาณสำหรับ postulated (เรามาพูดถึงวิธีการประมาณค่าหากจำเป็นต้องเกิดขึ้น)β^β

ดังนั้นการคาดคะเนล่วงหน้า -steps- จะเป็นk

(4)Y^T+k=β^kYT

และMSEจะเป็นเช่นนั้น

MSEA[Y^T+k]=E(β^kYT-YT+k)2

(5)=E[(β^k-1)YT-Σผม=T+1T+kยูผม]2=E[(β^k-1)2YT2]+kσยู2

(เทอมกลางของสี่เหลี่ยมจัตุรัสหายไปเช่นเดียวกับข้อผิดพลาดในอนาคตของผลิตภัณฑ์)

ตอนนี้สมมติว่าเราทำการจำแนกข้อมูลของเราแล้วระบุโมเดลB

(6)ΔYเสื้อ=γΔYเสื้อ-1+ยูเสื้อ

และได้รับการประมาณการ\ โมเดลที่แตกต่างของเราสามารถเขียนได้γ^

(7)Yเสื้อ=Yเสื้อ-1+γ(Yเสื้อ-1-Yเสื้อ-2)+ยูเสื้อ

ดังนั้นการคาดการณ์ระดับของกระบวนการเราจะมี

Y^T+1=YT+γ^(YT-YT-1)

ซึ่งในความเป็นจริงให้ DGP ที่แท้จริงจะเป็น

(8)Y^T+1=YT+γ^ยูT

มันเป็นเรื่องง่ายในการตรวจสอบแล้วว่าสำหรับรุ่น ,B

Y^T+k=YT+(γ^+γ^2+...+γ^k)ยูT

ตอนนี้เราคาดหวังอย่างสมเหตุสมผลว่าด้วยกระบวนการประเมิน "ทดสอบและลอง" เราจะได้รับเนื่องจากค่าที่แท้จริงคือยกเว้นในกรณีที่เรามีข้อมูลน้อยเกินไปหรือมีรูปร่าง "แย่" มาก . ดังนั้นเราสามารถพูดได้ว่าในกรณีส่วนใหญ่เราจะมี|γ^|<10

(9)Y^T+k=YT+γ^-γ^k+11-γ^ยูT

และอื่น ๆ

(10)MSEB[Y^T+k]=E[(γ^-γ^k+11-γ^)2ยูT2]+kσยู2

ในขณะที่ฉันทำซ้ำเพื่อความสะดวก

(5)MSEA[Y^T+k]=E[(β^k-1)2YT2]+kσยู2

ดังนั้นเพื่อให้โมเดลที่ต่างกันทำงานได้ดีขึ้นในแง่ของการทำนาย MSE เราต้องการ

MSEB[Y^T+k]MSEA[Y^T+k]

E[(γ^-γ^k+11-γ^)2ยูT2]E[(β^k-1)2YT2]

เช่นเดียวกับตัวประมาณค่าในโมเดลเราขยายความอนุเคราะห์เดียวกันกับตัวประมาณในรุ่น : เราคาดว่าจะ "ใกล้เคียงกับความสามัคคี" อย่างสมเหตุสมผลBAβ^

เห็นได้ชัดว่าถ้ามันเกิดขึ้นที่ปริมาณในด้านขวามือของความไม่เท่าเทียมกันจะมีแนวโน้มเพิ่มขึ้นโดยไม่ผูกมัดเป็นจำนวนขั้นตอนการพยากรณ์ล่วงหน้าจะเพิ่มขึ้น บนมืออื่น ๆ ปริมาณทางด้านซ้ายมือของความไม่เท่าเทียมกันที่ต้องการอาจเพิ่มขึ้นเป็นเพิ่มขึ้น แต่ก็มีขอบเขตบน ดังนั้นในสถานการณ์นี้เราคาดว่ารุ่น differencedจะยุติธรรมดีกว่าในแง่ของการทำนาย MSE เมื่อเทียบกับรุ่นβ^>1kkBA

แต่ถือว่าได้เปรียบมากขึ้นในการจำลองกรณีที่<1 จากนั้นปริมาณด้านขวาก็มีค่า จำกัด ถ้าอย่างนั้นเราต้องตรวจสอบดูว่าAβ^<1k

E[(γ^1-γ^)2ยูT2]E[YT2]=Tσยู2??

(คือความสะดวกสบาย - ในความเป็นจริงทั้งสองขนาดจะเข้าใกล้ suprema แล้วสำหรับค่า ) kk

โปรดทราบว่าคำว่า คาดว่าจะเป็น "ค่อนข้างใกล้" ถึงดังนั้นโมเดลจึงได้เปรียบจากด้านนี้ (γ^1-γ^)20B

เราไม่สามารถแยกค่าที่คาดหวังที่เหลืออยู่เพราะประมาณการไม่ได้เป็นอิสระจากu_Tแต่เราสามารถเปลี่ยนความไม่เท่าเทียมเป็นγ^ยูT

Cov[(γ^1-γ^)2,ยูT2]+E[(γ^1-γ^)2]σยู2Tσยู2??

Cov[(γ^1-γ^)2,ยูT2](T-E[(γ^1-γ^)2])σยู2??

ตอนนี้ความแปรปรวนทางด้านซ้ายมือที่คาดว่าจะมีขนาดเล็กเนื่องจากประมาณการขึ้นอยู่กับทุกข้อผิดพลาด ในอีกด้านหนึ่งของความไม่เท่าเทียมกันที่มาจากชุดข้อมูลนิ่งและอื่น ๆ มูลค่าที่คาดหวังของฟังก์ชั่นข้างต้นของมันเป็นที่คาดว่าจะมากน้อยกว่าขนาดของกลุ่มตัวอย่าง (ตั้งแต่มากกว่าฟังก์ชั่นนี้จะอยู่ในช่วง ใน ) T γ (0,1)γ^Tγ^(0,1)

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


1

นั่นเป็นคำถามที่ดี

เมื่อฉันรู้ว่าคุณเพิ่งคิดว่า pacf แต่นั่นยังไม่เพียงพอ ACF และ PACF นั้นจำเป็นสำหรับการเลือกรุ่นที่ดีที่สุด

ในทางกลับกันการทดสอบแบบอยู่กับที่จะอ่อนแอและละเอียดอ่อนและต้องการจำนวนมากในการทดสอบความล่าช้า

นอกจากนี้ยังเป็นที่ต้องการเพื่อให้อนุกรมเวลาหยุดนิ่งก่อนที่จะใช้รูปแบบใด ๆ พูดโดยประมาณว่ารุ่นของ ARIMA เพียงแค่พิจารณากรณีพิเศษที่ไม่ใช่แบบนิ่ง (โดยเฉพาะในแนวโน้ม)

เกี่ยวกับคำถามของคุณฉันไม่แน่ใจเกี่ยวกับฟังก์ชั่น auto.arima แต่ฉันมั่นใจว่าจำนวนจุดข้อมูลในตัวอย่างของคุณมีขนาดเล็ก แบบจำลองที่ใช้จุดข้อมูลจำนวนมากจะตอบคำถามของคุณได้ดี นอกจากนี้ฉันขอแนะนำให้คุณพิจารณา ACF ของอนุกรมเวลาเช่นเดียวกับ PACF เกี่ยวกับการเลือกรูปแบบกฎของหัวแม่มือคือการเลือกรูปแบบที่ง่ายที่สุด (โปรดทราบว่ารูปแบบที่ง่ายที่สุดหลังจากทำการตั้งค่าอนุกรมเวลาให้นิ่ง)

ผมหมายถึงคุณนี้อ้างอิง หนังสือเล่มนี้ไม่ตอบคำถามของคุณ แต่ให้เบาะแสกับคุณ

----- ส่วนเสริม ------- @nsw พิจารณาแนวโน้มในข้อมูลของคุณ หากคุณพิจารณาแบบจำลองที่อยู่กับที่มันจะส่งผลให้เกิดการทำนายขึ้น / ลง แต่ที่จริงแล้วแบบจำลอง ARMA ได้รับการออกแบบมาเพื่อทำนายข้อมูลแบบคงที่ ฉันได้เปลี่ยนรหัสของคุณเพื่อสะท้อนถึงความแตกต่างนี้:

ต้อง (คาดการณ์)

ต้อง ( 'tseries')

controlData <- arima.sim (รายการ (คำสั่ง = c (1,1,1)), ar = .5, ma = .5), n = 1,000 )

acf (controlData)

ts.plot (controlData)

naiveFit <- arima (controlData, order = c (2,0,1))

trueFit <- arima (controlData, order = c (1,1,1))

PrnaiveFit <-forecast.Arima (naiveFit, 10)

PrtrueFit <- forecast.Arima (trueFit, 10)

matplot (cbind (PrnaiveFit $ Mean, PrtrueFit $ mean), พิมพ์ = 'b', col = c ('red', 'green'), ylab = c ('ทำนายไอออน'), pch = c ('n', 'T'))


1
คำถามถามว่าทำไมจึงเป็นที่ต้องการ "ทำให้อนุกรมเวลาหยุดนิ่ง" นี่ไม่ได้ตอบคำถามนั้นจริงๆ
shadowtalker

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