รวมสองชุดเวลาโดยเฉลี่ยจุดข้อมูล


10

ฉันต้องการรวมการคาดการณ์และการย้อนกลับ (กล่าวคือค่าที่ผ่านมาที่คาดการณ์) ของข้อมูลอนุกรมเวลาที่ตั้งค่าไว้ในอนุกรมเวลาหนึ่งโดยลดข้อผิดพลาดการคาดคะเนค่าเฉลี่ยกำลังสองลง

สมมติว่าฉันมีอนุกรมเวลาตั้งแต่ 2001-2010 โดยมีช่องว่างสำหรับปี 2550 ฉันสามารถคาดการณ์ปี 2007 โดยใช้ข้อมูล 2001-2007 (เส้นสีแดง - เรียกว่า ) และกลับโดยใช้ข้อมูล 2008-2009 (สีน้ำเงินอ่อน) สาย - เรียกมันว่า )Y bYfYb

ฉันต้องการรวมจุดข้อมูลของและเป็นจุดข้อมูลที่ระบุ Y_i ในแต่ละเดือน จะเป็นการดีที่ฉันต้องการที่จะได้รับน้ำหนักดังกล่าวว่าจะช่วยลดข้อผิดพลาดในการทำนาย Mean Squared (MSPE) ของY_iหากเป็นไปไม่ได้ฉันจะหาค่าเฉลี่ยระหว่างจุดข้อมูลของอนุกรมเวลาสองชุดได้อย่างไรY b w Y iYfYbwYi

Yi=wYf+(1w)Yb

เป็นตัวอย่างรวดเร็ว:

tt_f <- ts(1:12, start = 2007, freq = 12)
tt_b <- ts(10:21, start=2007, freq=12)

tt_f
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007   1   2   3   4   5   6   7   8   9  10  11  12
tt_b
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007  10  11  12  13  14  15  16  17  18  19  20  21

ฉันต้องการได้รับ (เพียงแสดงค่าเฉลี่ย ... การย่อ MSPE ให้น้อยที่สุด)

tt_i
     Jan Feb Mar Apr May Jun  Jul  Aug  Sep  Oct  Nov  Dec
2007 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5

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


แบบจำลองการคาดการณ์คืออะไร (arima, ets, other) (+1) สำหรับข้อเสนอแนะวิธีฉันเคยคิดเกี่ยวกับวิธีการดังกล่าว แต่อยู่ในความคาดหวัง - สูงสุดหลังจากการแก้ไข โดยหลักการแล้วระยะเวลาการเรียนรู้อาจมีความสำคัญเพื่อให้น้ำหนักที่สูงขึ้นสำหรับโมเดลตามข้อมูลขนาดใหญ่ เกณฑ์ความแม่นยำบางอย่างอาจเป็นประโยชน์ในการสร้างน้ำหนักเพื่อไม่ให้เชื่อมโยงกับความยาวอนุกรมเวลาอย่างแน่นอน
Dmitrij Celov

ขออภัยที่ต้องออกจากแบบจำลองการพยากรณ์ สิ่งที่กล่าวมาข้างต้นนั้นใช้predictฟังก์ชั่นของแพ็คเกจพยากรณ์ อย่างไรก็ตามฉันคิดว่าฉันจะใช้โมเดลการคาดการณ์ของ HoltWinters เพื่อทำนายและย้อนกลับ ฉันมีอนุกรมเวลาที่มี <น้อยกว่า 50 ครั้งและลองการพยากรณ์การถดถอยของปัวซอง - แต่ด้วยเหตุผลบางอย่างที่การคาดการณ์ที่อ่อนแอมาก
OSlOlSO

ข้อมูลสำหรับการนับดูเหมือนจะมีการหยุดพักตรงจุดที่คุณแสดงการคาดการณ์และการย้อนกลับยังแสดงให้เห็นสิ่งเดียวกัน ในปัวซองคุณทำการถดถอยตามแนวโน้มเวลา ? tlog(counts)t
Dmitrij Celov

คุณมีการนับหรือเพิ่มอนุกรมเวลาที่เกี่ยวข้องโดยไม่มีNAค่าหรือไม่ ดูเหมือนว่าการทำให้ช่วงเวลาการเรียนรู้ MSPE อาจทำให้เข้าใจผิดเนื่องจากช่วงย่อย 'ได้รับการอธิบายอย่างดีจากแนวโน้มเชิงเส้น แต่ในช่วงเวลาที่พลาดไปมีการหล่นลงที่ไหนสักแห่งที่เกิดขึ้นจริง ๆ แล้วมันอาจเป็นประเด็นใด ๆ โปรดทราบว่าเนื่องจากการคาดการณ์นั้นมีแนวโน้มเป็นแนวตั้งค่าเฉลี่ยของพวกเขาจะแนะนำการแบ่งโครงสร้างสองครั้งแทนที่จะเป็นครั้งเดียว
Dmitrij Celov

ขออภัยที่ต้องกลับมาตอนนี้ @Dmitij อะไรคือ 'การหยุด' ที่คุณกำลังพูดถึง ฉันทำบันทึก (มีค่า)สำหรับการถดถอย GLM และมีชุดย่อยของข้อมูลการนับที่มีจำนวนน้อยกว่า <6 ซึ่งจะบังคับให้ฉันใช้มัน ฉันมี แต่จำนวนเท่านั้น หากคุณดูคำถามนี้คุณจะได้รับความคิดเกี่ยวกับข้อมูลที่ฉันมี การนับข้างต้นใช้สำหรับกลุ่มอายุ '15up' เท่านั้น ถ้ามันสมเหตุสมผล?
OSlOlSO

คำตอบ:


0

สมมติว่าคุณมีข้อผิดพลาดการทำนายกำลังสองสำหรับการพยากรณ์และย้อนกลับทีละคนฉันอยากจะแนะนำสิ่งนี้: ขอ w เป็นเวกเตอร์ความยาว 12, ให้ m เป็นเดือนที่คุณสนใจ

w=rep(NA,12);
for(w in 1:12){
w[m]=SPE_Backcast[m]/(SPE_Backcast[m]+SPE_Forecast[m]);
}

ตอนนี้ w คือน้ำหนักสำหรับการคาดการณ์และ 1-w คือน้ำหนักสำหรับ backcast


สิ่งนี้ดูเหมือนว่าจะทำให้น้ำหนักที่ต่ำที่สุดมีค่าสูงขึ้น (จนถึงจุดที่จำนวนลบอาจทำให้น้ำหนัก> 1) สิ้นสุดลง ประเด็นคืออะไร? นอกจากนี้สองบรรทัดs/w/m/
naught101

คุณจะได้รับข้อผิดพลาดการคาดการณ์เชิงลบกำลังสองได้อย่างไร
Owe Jessen

3

www.games501.com ฟรีจุดประสงค์ของคุณคือทำการปรับช่วงเวลา (FI) ให้คงที่ของชุดเวลา มูลค่าเรียบของการสังเกตในขณะมีการกำหนดเป็นความคาดหวังที่มีเงื่อนไข โดยที่เครื่องหมายสำหรับ เวกเตอร์ของการสังเกตจาก timeถึง time . ด้านบนช่องว่างจะถือว่าเป็นช่วงเวลาตั้งแต่เวลาถึงและ คือความยาวทั้งหมดของอนุกรม เวลา อยู่ในช่องว่างและสามารถเขียนความคาดหวังได้Y T : = E ( Y เสื้อ| Y 1 : R ,เสื้อ Y u : v :=[ Y u ,

Y^เสื้อ=E(Yเสื้อ|Y1:R,Ys:n)
U v R + 1 s - 1 n T Yเสื้อ| 1 : r , s : nYยู:โวลต์=[Yยู,Yยู+1,...,Yโวลต์]ยูโวลต์R+1s-1nเสื้อY^เสื้อ|1:R,s:n เพื่อเรียกคืนลักษณะตามเงื่อนไข

ค่าที่ปรับให้เรียบไม่มีรูปแบบง่าย ๆ ที่คุณเดา สำหรับชุดเวลา stationaary Gaussian ที่มีโครงสร้างความแปรปรวนร่วมที่เป็นที่รู้จักสามารถหา สำหรับในช่องว่างได้โดยการแก้ระบบเชิงเส้น TY^เสื้อเสื้อ

เมื่อแบบจำลองอนุกรมเวลาสามารถวางในรูปแบบ State Space (SS) การปรับให้เรียบ FI คือการดำเนินการมาตรฐานที่ใช้ตัวกรองคาลมานและสามารถทำได้เช่นใช้ฟังก์ชั่น R ที่มีอยู่ คุณเพียงแค่ต้องระบุว่าค่าในช่องว่างหายไป อัลกอริทึมการปรับให้เรียบจะประเมินสถานะที่ซ่อนอยู่ซึ่งมีข้อมูลที่เกี่ยวข้องทั้งหมดเกี่ยวกับสำหรับในช่องว่าง รุ่น ARIMA สามารถใส่ในรูปแบบ SSY t tαเสื้อYเสื้อเสื้อ

สิ่งที่น่าสนใจคือการปรับ FI ให้เรียบสามารถรวมกันเป็นสองฟิลเตอร์: หนึ่งไปข้างหน้าและถอยหลังหนึ่งนำไปสู่สูตรที่คุณคาดหวัง แต่สำหรับการประมาณสถานะที่ซ่อนอยู่ (พยากรณ์และ ) แต่ไม่ได้สำหรับการสังเกตY_tนี้เป็นที่รู้จักกันRauch ตุง-Striebel กรองY tαเสื้อYเสื้อ

อย่างน้อยในรุ่นแบบหลายขั้นตอนขั้นตอนการคาดการณ์แบบ 'ad hoc' อย่างโฮลท์ - วินเทอร์นั้นขึ้นอยู่กับแบบจำลองแบบสุ่มโดยไม่มีอัลกอริธึม FI แบบง่าย ๆ เนื่องจากไม่สามารถใส่ในรูปแบบ SS ได้ สูตรการทำให้เรียบอาจประมาณได้โดยใช้โมเดล SS แต่จะง่ายกว่ามากเมื่อใช้โมเดลอนุกรมเวลาโครงสร้างที่ มีการแปลงบันทึก ฟังก์ชั่น 'KalmanSmooth', 'tsSmooth' และ 'StructTS' ของแพ็คเกจR statsสามารถทำงานได้ คุณควรดูหนังสือโดย Harvey หรือโดย Durbin และ Koopman ที่อ้างถึงในหน้าช่วยเหลือ R อัลกอริทึมการปรับให้เรียบสามารถให้ความแปรปรวนแบบมีเงื่อนไขสำหรับโดยประมาณYเสื้อและสามารถใช้ในการสร้างช่วงเวลาที่ราบเรียบซึ่งมักจะมีแนวโน้มที่จะมีขนาดใหญ่กว่าในช่วงกลางของช่องว่าง อย่างไรก็ตามโปรดทราบว่าการประมาณค่าแบบจำลองทางไฟฟ้าอาจทำได้ยาก

AP <- log10(AirPassengers) 
## Fit a Basic Structural Model
fit <- StructTS(AP, type = "BSM")

## Fit with a gap
AP.gap <- AP
AP.gap[73:96] <- NA
fit.gap <- StructTS(AP.gap, type = "BSM", optim.control = list(trace = TRUE))

# plot in orginal (non-logged) scale
plot(AirPassengers, col = "black", ylab = "AirPass")
AP.missing <- ts(AirPassengers[73:96], start=1955, , freq=12)
lines(AP.missing, col = "grey", lwd = 1)

## smooth and sum 'level' and 'sea' to retrieve series
sm <- tsSmooth(fit.gap)
fill <- apply(as.matrix(sm[ , c(1,3)]), 1, sum)
AP.fill <- ts(fill[73:96], start=1955, , freq=12)
lines(10^AP.fill, col = "red", lwd = 1)

เติมเรียบ


2

ฉันค้นหาแนวทางที่แนะนำของคุณในการใช้วิธีการก่อนและหลังการปลดเปลื้องน่าสนใจ

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

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

> n <- [number of missing datapoints] 
> w <- seq(1, 0, by = -1/(n+1))[2:(n+1)]

สิ่งนี้จะทำให้น้ำหนักของ backcast บนองค์ประกอบแรก คุณสามารถใช้ n-1 โดยไม่มีตัวห้อยในตอนท้ายหากคุณต้องการใช้เฉพาะค่าพยากรณ์ในจุดที่ถูกสอดแทรกครั้งแรก

> w
 [1] 0.92307692 0.84615385 0.76923077 0.69230769 0.61538462 0.53846154
 [7] 0.46153846 0.38461538 0.30769231 0.23076923 0.15384615 0.07692308

ฉันไม่มีข้อมูลของคุณดังนั้นลองทำสิ่งนี้กับชุดข้อมูล AirPassenger ใน R ฉันจะลบระยะเวลาสองปีที่อยู่ใกล้ศูนย์กลาง:

> APearly <- ts(AirPassengers[1:72], start=1949, freq=12)
> APlate <- ts(AirPassengers[97:144], start=1957, freq=12)
> APmissing <- ts(AirPassengers[73:96], start=1955, freq=12)
> plot(AirPassengers)
# plot the "missing data" for comparison
> lines(APmissing, col="#eeeeee")
# use the HoltWinters algorithm to predict the mean:
> APforecast <- hw(APearly)[2]$mean
> lines(APforecast, col="red")
# HoltWinters doesn't appear to do backcasting, so reverse the ts, forecast, 
# and reverse again (feel free to edit if there's a better process)
> backwards <- ts(rev(APlate), freq=12)
> backcast <- hw(backwards)[2]$mean
> APbackcast <- ts(rev(backcast), start=1955, freq=12)
> lines(APbackcast, col='blue')
# now the magic: 
> n <- 24 
> w <- seq(1, 0, by=-1/(n+1))[2:(n+1)]
> interpolation = APforecast * w + (1 - w) * APbackcast
> lines(interpolation, col='purple', lwd=2)

และมีการแก้ไขของคุณ

เอาท์พุทกราฟ

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

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

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