การใช้แพ็กเกจการคาดการณ์ R พร้อมค่าที่ขาดหายไปและ / หรืออนุกรมเวลาที่ผิดปกติ


16

ฉันประทับใจในforecastแพ็คเกจR เช่นเดียวกับzooแพ็คเกจสำหรับอนุกรมเวลาที่ผิดปกติและการแก้ไขค่าที่หายไป

ใบสมัครของฉันอยู่ในพื้นที่ของการพยากรณ์การจราจร Call Center เพื่อให้ข้อมูลเกี่ยวกับวันหยุดสุดสัปดาห์เป็น (เกือบ) zooเสมอหายไปซึ่งสามารถจัดการได้เป็นอย่างดีโดย นอกจากนี้บางจุดที่ขาดหายไปอาจหายไปฉันแค่ใช้ R NAเพื่อจุดนั้น

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

ปัญหาของการต่อเนื่องไม่กี่NAค่าจะสามารถแก้ไขได้อย่างง่ายดายโดยใช้ใด ๆ ของฟังก์ชั่นการแก้ไขที่นำเสนอในเช่นเดียวกับzoo forecast::interpหลังจากนั้นฉันก็ทำการพยากรณ์

คำถามของฉัน:

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

    ฉันควรเพียงแค่ "บีบอัด" อนุกรมเวลาเพื่อเติมวันหยุดสุดสัปดาห์ทำการพยากรณ์แล้ว "ขยาย" ข้อมูลอีกครั้งเพื่อแทรกค่า NA ในวันหยุดสุดสัปดาห์อีกครั้งหรือไม่ (นั่นจะเป็นความอัปยศฉันคิดว่า?)

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

ฉันค่อนข้างใหม่ต่อการคาดการณ์ (และสถิติโดยทั่วไป) ดังนั้นฉันอาจมองข้ามบางสิ่งที่สำคัญ


ยินดีต้อนรับสู่เว็บไซต์และการคาดการณ์! แอพพลิเคชั่นในโลกแห่งความจริงสำหรับซีรีย์เวลาเท่านั้นที่ไม่จำกัดอย่างแน่นอน ฉันรู้เรื่องเล็กน้อยเกี่ยวกับการคาดการณ์ที่เข้าสู่ซุปเปอร์มาร์เก็ตของคุณซึ่งมีผลิตภัณฑ์เพียงพอที่จะรับมือกับความต้องการการส่งเสริมการขายและเชื่อฉันว่าอนุกรมเวลานับล้าน ๆ ชุด (20,000 SKUs ใน 1,000 ร้านค้าเป็นเรื่องธรรมดามาก) (ขออภัย แต่คุณเป็นคนถาม ... ) แต่ฉันจะพยายามหาสิ่งที่เป็นประโยชน์กับคุณในอีกไม่กี่นาที
เตฟาน Kolassa

2
คุณจะชัดเจนกว่านี้หรือไม่ว่าทำไมศูนย์ข้อมูลคอลเซ็นเตอร์จึงไม่ได้ถูกจัดให้เท่ากัน? (บางทีฉันอาจเข้าใจผิดในสิ่งที่คุณหมายถึงโดย "equispaced") วิธีการพยากรณ์ศูนย์บริการข้อมูลที่ฉันได้เห็นมักจะฝากสายเรียกเข้าเป็นระยะเวลา 15 นาทีซึ่งตอบสนองคำจำกัดความของ "equispaced" จากนั้นเราต้องจัดการกับฤดูกาลที่ซับซ้อน (ภายในวัน, ภายในสัปดาห์, รายปี) ซึ่งหัวข้อนี้อาจช่วยคุณได้: stats.stackexchange.com/questions/44704/ …คำถามนี้ตอบคำถามของคุณหรือไม่? ถ้าไม่เพียงบอกสิ่งที่คุณต้องการ
เตฟาน Kolassa

5
auto.arimaสามารถจัดการกับค่าที่ขาดหายไป
Rob Hyndman

1
ขอบคุณสำหรับความคิดเห็นที่สร้างสรรค์! สเตฟานข้อมูลของฉันไม่เท่ากันสองวิธี: 1. ศูนย์บริการหลายแห่งเพิ่งปิดทำการในวันเสาร์และวันอาทิตย์ บางแห่งปิดในวันอาทิตย์ ดังนั้นช่องว่าง "ปกติ" ระหว่างจุดข้อมูลที่อยู่ติดกันสองจุดคือหนึ่งวันยกเว้นจากวันศุกร์ถึงวันจันทร์ซึ่งเป็นสามวัน ดังนั้นพื้นที่ไม่เท่ากันคือไม่เท่ากัน ประการที่สองสามารถมีข้อมูลที่ขาดหายไปแบบสุ่มได้ที่ไหนสักแห่งเพราะพวกเขาลืมเปิดอุปกรณ์การวัดในวันนั้นหรืออะไรก็ตาม ฉันหวังว่าจะทำให้ประเด็นของฉันชัดเจน
เริ่ม

1
เป็นเพียงความคิด (ยั่วยุ) ถ้าคุณบอกว่าศูนย์บริการจะปิดในปลายสัปดาห์ จากนั้นคุณไม่มีข้อมูลที่ขาดหายไป ซีรี่ส์เวลาของคุณครอบคลุม Mo-Fr 5 วัน. ค่อนข้างเท่ากัน การแก้ไขวันหยุดสุดสัปดาห์ดูเหมือนว่าฉันผิดอย่างเป็นทางการเนื่องจากคุณรู้ว่าไม่มีการโทรเกิดขึ้นและข้อมูลใด ๆ ที่คุณใส่ร้ายนั้นเป็นเท็จ ฉันจะยืนยันว่าคุณไม่สามารถปรับปรุงการประมาณการโดยการประดิษฐ์ข้อมูล ...
หมายถึงความหมาย

คำตอบ:


1

ฉันไม่ใช่ผู้เชี่ยวชาญ R ดังนั้นอาจจะมีวิธีที่ง่ายกว่า แต่ฉันเคยเจอสิ่งนี้มาก่อน สิ่งที่ฉันทำก่อนหน้านี้คือการใช้ฟังก์ชั่นที่วัดระยะทาง (หน่วยเวลา) ระหว่างวันที่จริงและบันทึกในคอลัมน์ใหม่ในอนุกรมเวลาที่มีอยู่ ดังนั้นเราจึงมีสิ่งที่ชอบ:

index/date | value | distance  
01.01.2011 |  15   |   1  
02.01.2011 |  17   |   3  
05.01.2011 |  22   |   ..   

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

ถัดไปคุณเขียนฟังก์ชันที่สร้างอนุกรมเวลาใหม่สำหรับคุณเช่น:

ขั้นแรกให้คุณคำนวณจำนวนหน่วยเวลาที่อนุกรมเวลาจริงจะมีระหว่างวันที่คุณเลือกและสร้างไทม์ไลน์นั้นในสวนสัตว์หรือทีเอสหรือสิ่งที่ตัวเลือกมีค่าว่าง

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

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

หากวงถึงวันที่สิ้นสุดคุณจะส่งคืน ts ใหม่ของคุณ

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


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

@entregreur ฉันไม่ได้ตอบ IMA ทำ IMA ได้รับเครดิตเต็มจำนวนที่นี่ ฉันเพิ่งปรับเปลี่ยนการจัดรูปแบบเพื่อที่จะแสดงได้ดี
gung - Reinstate Monica

1

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


0

ฉันจะไม่แก้ไขข้อมูลก่อนที่จะประเมินโมเดลของข้อมูลนี้ตามที่ @Remi ระบุไว้ มันเป็นความคิดที่ไม่ดี ตัวอย่างสุดขั้ว: จินตนาการว่าคุณมีจุดข้อมูลสองจุดในเดือนมกราคม 2013 และมกราคม 2014 จากนั้นทำการประมาณ 10 คะแนนรายเดือนระหว่าง: กุมภาพันธ์ถึงธันวาคม 2013 และดำเนินการถดถอยในวันที่รายเดือน ในความเป็นจริงมันจะไม่เลวร้ายแบบนี้ แต่เป็นความคิดเดียวกัน: คุณจะทำให้สถิติดีที่สุด

วิธีที่จะไปคือการใช้วิธีการอนุกรมเวลาที่จัดการกับข้อมูลที่ขาดหายไป ตัวอย่างเช่นวิธีพื้นที่ของรัฐ ดูแพ็คเกจ astsa R มันมาพร้อมกับหนังสือที่ยอดเยี่ยมเกี่ยวกับการวิเคราะห์อนุกรมเวลา สิ่งนี้จะจัดการกับข้อมูลที่หายไปอย่างดี Matlab ตอนนี้มีฟังก์ชั่นที่คล้ายกันในแพ็คเกจssm คุณต้องเรียนรู้การแปลงแบบจำลองของคุณเป็นรูปแบบพื้นที่ของรัฐ แต่คุณต้องเรียนรู้สิ่งนี้ต่อไปหากคุณต้องการที่จะก้าวออกจากauto.arima"เวทย์มนตร์"

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