ฉันกำลังพยายามสร้างอัลกอริทึมการทำนายที่มีอยู่โดยนักวิจัยที่เกษียณแล้ว ขั้นตอนแรกคือเพื่อให้พอดีกับข้อมูลที่สังเกตได้บางอย่างกับการแจกแจงแบบ Weibull เพื่อให้ได้รูปร่างและมาตราส่วนซึ่งจะใช้ในการทำนายค่าในอนาคต ฉันใช้ R เพื่อทำสิ่งนี้ นี่คือตัวอย่างของรหัสของฉัน:
x<-c(23,19,37,38,40,36,172,48,113,90,54,104,90,54,157,51,77,78,144,34,29,45,16,15,37,218,170,44,121)
f<-fitdistr(x, 'weibull')
สิ่งนี้ทำงานได้ดียกเว้นว่ามีเลขศูนย์ใด ๆ ในอาร์เรย์อินพุตซึ่งทำให้มันล้มเหลวอย่างสมบูรณ์ สิ่งเดียวกันเกิดขึ้นใน SAS ดังที่ฉันเข้าใจแล้วนี่เป็นเพราะหนึ่งในขั้นตอนในการคำนวณการแจกแจงแบบ Weibull คือการบันทึกตามธรรมชาติซึ่งไม่ได้กำหนดไว้สำหรับ 0 มีวิธีที่เหมาะสมในการแก้ไขปัญหานี้หรือไม่?
สิ่งที่ดีที่สุดที่ฉันเคยพบคือการเพิ่ม 1 ให้กับค่าอินพุตทั้งหมดของฉันให้พอดีกับเส้นโค้งแล้วลบหนึ่งค่าจากค่าที่คาดการณ์ไว้ของฉัน ("เลื่อน" เส้นโค้งขึ้นแล้วกลับลง 1) ซึ่งตรงกับข้อมูลที่คาดการณ์ไว้ก่อนหน้านี้ค่อนข้างดี แต่ดูเหมือนว่ามันจะต้องเป็นวิธีที่ผิดในการทำเช่นนั้น
แก้ไข: ค่าในอาร์เรย์อินพุตจะถูกตรวจสอบข้อมูลในโลกแห่งความเป็นจริง (จำนวนการเกิดขึ้นของบางสิ่งบางอย่าง) เป็นระยะเวลาหลายปี ดังนั้นในบางปีจำนวนการเกิดขึ้นจึงเป็นศูนย์ ไม่ว่าจะเป็นวิธีที่ดีที่สุดหรือไม่ (ฉันยอมรับว่าอาจไม่ใช่) ผู้เขียนอัลกอริทึมดั้งเดิมอ้างว่าใช้การกระจาย Weibull และฉันต้องพยายามทำซ้ำกระบวนการของพวกเขา