Thursday 17 August 2017

ถัว เฉลี่ยเคลื่อนที่ การดำเนินงาน


ฉันเป็นหลักมีอาร์เรย์ของค่าเช่นนี้อาร์เรย์ข้างต้นเป็น oversimplified, Im เก็บ 1 ค่าต่อมิลลิวินาทีในรหัสจริงของฉันและฉันต้องดำเนินการออกในขั้นตอนฉันเขียนเพื่อหาจุดสูงสุดที่ใกล้เคียงที่สุดก่อนจุดในเวลา ตรรกะของฉันล้มเหลวเนื่องจากในตัวอย่างข้างต้นของฉัน 0.36 เป็นยอดจริง แต่อัลกอริทึมของฉันจะมองย้อนกลับไปและดูจำนวนสุดท้าย 0.25 เป็นยอดสูงสุดเนื่องจาก theres ลดลงเหลือ 0.24 ก่อนหน้านี้ เป้าหมายคือการใช้ค่าเหล่านี้และใช้อัลกอริธึมกับข้อมูลเหล่านี้ซึ่งจะทำให้บิตเหล่านั้นเรียบขึ้นเพื่อให้มีค่าเชิงเส้นมากขึ้น (เช่น: Id เช่นผลของฉันจะ curvy ไม่ jaggedy) Ive ได้รับการบอกให้ใช้ตัวกรองค่าเฉลี่ยที่ชี้แจงค่าเฉลี่ยกับค่าของฉัน ฉันจะทำเช่นนี้จริงๆมันยากสำหรับฉันที่จะอ่านสมการทางคณิตศาสตร์ที่ฉันจัดการดีมากกับรหัส ฉันจะประมวลผลค่าในอาร์เรย์ของฉันโดยใช้การคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนาเพื่อให้พวกมันออกไปถาม 8 ก. พ. 2 เวลา 20:27 เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนา คุณต้องเก็บข้อมูลบางส่วนไว้รอบ ๆ และคุณต้องใช้พารามิเตอร์การปรับค่า (สมมติว่าคุณกำลังใช้ Java 5 ขึ้นไป): เริ่มต้นด้วยพารามิเตอร์การสลายตัวที่คุณต้องการ (อาจใช้การปรับค่าระหว่าง 0 ถึง 1) และใช้ค่าเฉลี่ย () เพื่อกรอง เมื่ออ่านหน้าเว็บเกี่ยวกับการกลับเป็นซ้ำคณิตศาสตร์บางสิ่งที่คุณจำเป็นต้องรู้จริงๆเมื่อเปลี่ยนเป็นรหัสก็คือนักคณิตศาสตร์ต้องการเขียนดัชนีเป็นอาร์เรย์และลำดับด้วยดัชนีย่อย (พวกเขายังมีโน้ตอื่น ๆ อีกเช่นกันซึ่งไม่ได้ช่วยอะไร) อย่างไรก็ตาม EMA ใช้งานได้ง่ายเพียงเท่านี้คุณจะต้องจำค่าเดิมที่ไม่มีอาร์เรย์สถานะที่ซับซ้อน ตอบกุมภาพันธ์ 8 12 เวลา 20:42 TKKocheran: Pretty much. (ถ้าเริ่มต้นด้วยลำดับใหม่ให้หาค่าเฉลี่ยใหม่) โปรดสังเกตว่าคำไม่กี่คำแรกในลำดับเฉลี่ยจะกระโดดไปรอบ ๆ เล็กน้อยเนื่องจากผลกระทบขอบเขต แต่คุณจะได้รับค่าเฉลี่ยเคลื่อนที่ที่เคลื่อนที่ได้ เกินไป. อย่างไรก็ตามข้อได้เปรียบที่ดีคือคุณสามารถตัดค่าตรรกะเฉลี่ยที่เคลื่อนที่ไปเป็นค่าเฉลี่ยและการทดสอบได้โดยไม่รบกวนส่วนที่เหลือของโปรแกรมมากเกินไป ndash Donal Fellows ก. พ. 9 12 เวลา 0:06 ฉันกำลังมีปัญหาในการทำความเข้าใจคำถามของคุณ แต่ฉันจะพยายามตอบคำถามต่อไป 1) ถ้าอัลกอริทึมของคุณพบ 0.25 แทน 0.36 แล้วมันก็ไม่ถูกต้อง ผิดเพราะสมมติว่ามีการเพิ่มขึ้นหรือลดลงเล็กน้อย (ซึ่งมักจะขึ้นหรือลงไปตลอดเวลา) เว้นแต่คุณจะเฉลี่ยข้อมูลทั้งหมดของคุณจุดข้อมูลของคุณ --- ตามที่คุณนำเสนอ --- ไม่เป็นเชิงเส้น ถ้าคุณต้องการหาค่าสูงสุดระหว่างสองจุดในเวลาจากนั้นแบ่งอาร์เรย์จาก tmin ไปเป็น tmax และหาค่าสูงสุดของอาร์เรย์ย่อยนั้น 2) ตอนนี้แนวคิดเกี่ยวกับค่าเฉลี่ยเคลื่อนที่จะง่ายมาก: สมมติว่าฉันมีรายการต่อไปนี้: 1.4, 1.5, 1.4, 1.5, 1.5 ฉันสามารถเรียบออกโดยใช้ค่าเฉลี่ยของสองตัวเลข: 1.45, 1.45, 1.45, 1.5 สังเกตว่าตัวเลขแรกเป็นค่าเฉลี่ย 1.5 และ 1.4 (ตัวเลขที่สองและหมายเลขแรก) ส่วนที่สอง (รายการใหม่) คือค่าเฉลี่ย 1.4 และ 1.5 (รายการเก่าที่สามและสอง) อันดับที่สาม (รายการใหม่) เฉลี่ย 1.5 และ 1.4 (สี่และสาม) และอื่น ๆ ฉันสามารถทำให้มันเป็นระยะเวลาสามหรือสี่หรือ n สังเกตว่าข้อมูลมีความนุ่มนวลมากขึ้น วิธีที่ดีในการดูค่าเฉลี่ยเคลื่อนที่ในที่ทำงานคือไปที่ Google Finance เลือกสต็อค (ลองใช้ Tesla Motors volatile สวย (TSLA)) และคลิก technicals ที่ด้านล่างของแผนภูมิ เลือก Moving Average โดยใช้ระยะเวลาที่กำหนดและค่าเฉลี่ยเคลื่อนที่แบบเสวนาเพื่อเปรียบเทียบความแตกต่าง ค่าเฉลี่ยเคลื่อนที่แบบเสวนาเป็นเพียงการอธิบายเพิ่มเติมอีกประการหนึ่งจากข้อมูลนี้ แต่ให้น้ำหนักข้อมูลเก่าน้อยกว่าข้อมูลใหม่นี่เป็นวิธีที่จะทำให้เกิดการปรับให้เรียบไปทางด้านหลัง โปรดอ่านรายการวิกิพีเดีย นี่เป็นความคิดเห็นมากกว่าคำตอบ แต่กล่องความคิดเห็นเล็ก ๆ น้อย ๆ ก็เล็กไป โชคดี. หากคุณมีปัญหาเกี่ยวกับคณิตศาสตร์คุณอาจไปกับค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายแทนที่จะเป็นเลขชี้กำลัง ดังนั้นผลลัพธ์ที่ได้จะเป็นเงื่อนไข x ล่าสุดหารด้วย x Pseudocode ที่ไม่ได้ตรวจสอบ: โปรดทราบว่าคุณจะต้องจัดการกับจุดเริ่มต้นและจุดสิ้นสุดของข้อมูลเนื่องจากคุณไม่สามารถเฉลี่ย 5 เทอมสุดท้ายเมื่ออยู่ในจุดข้อมูลที่ 2 ได้ นอกจากนี้ยังมีวิธีที่มีประสิทธิภาพในการคำนวณค่าเฉลี่ยเคลื่อนที่นี้ (ผลรวมรวม - เก่าที่สุดที่เก่าที่สุด) แต่นี่เป็นแนวคิดที่จะเกิดอะไรขึ้น ตอบ 8 ก. พ. 12 ที่ 20: 41 ความแตกต่างระหว่างค่าเฉลี่ยเคลื่อนที่และค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนักค่าเฉลี่ยเคลื่อนที่ 5 ช่วงโดยอิงตามราคาข้างต้นจะคำนวณโดยใช้สูตรต่อไปนี้: ตามสมการข้างต้นราคาเฉลี่ยในรอบระยะเวลา ข้างต้นคือ 90.66 การใช้ค่าเฉลี่ยเคลื่อนที่เป็นวิธีที่มีประสิทธิภาพในการขจัดความผันผวนของราคาที่แข็งแกร่ง ข้อ จำกัด ที่สำคัญคือจุดข้อมูลจากข้อมูลที่เก่ากว่าจะไม่ได้รับการถ่วงน้ำหนักใด ๆ กว่าจุดข้อมูลใกล้จุดเริ่มต้นของชุดข้อมูล นี่คือที่ค่าเฉลี่ยเคลื่อนที่ถ่วงน้ำหนักเข้ามาเล่น ค่าเฉลี่ยถ่วงน้ำหนักกำหนดน้ำหนักให้มากขึ้นกับจุดข้อมูลปัจจุบันมากขึ้นเนื่องจากมีความเกี่ยวข้องมากกว่าจุดข้อมูลในอดีตอันไกลโพ้น ผลรวมของการถ่วงน้ำหนักควรเพิ่มได้ถึง 1 (หรือ 100) ในกรณีของค่าเฉลี่ยเคลื่อนที่แบบง่ายๆการถ่วงน้ำหนักมีการกระจายอย่างเท่าเทียมกันซึ่งเป็นเหตุผลว่าทำไมจึงไม่แสดงในตารางด้านบน ราคาปิดของ AAPLExponential Moving Average (EMA) สูตร EMA แบบคลาสสิกคือ: ไม่เหมือนกับ Simple Moving Average ที่น้ำหนักของแท่งก่อนหน้านี้เท่ากันค่าเฉลี่ยการเคลื่อนที่แบบเสี้ยว (Exponential Moving Average) ทำให้แถบล่าสุดเป็นส่วนสำคัญมาก น้ำหนักของแถบเก่าที่ลดลงจะลดลงตามจำนวนเชิงซ้อน ด้านล่างนี้เป็นแผนภูมิน้ำหนักของ N 10 (1 คือราคาปัจจุบัน 2 ก่อนหน้าและต่อไปนี้): สูตรน้ำหนักคือที่ i อยู่ห่างจากแถบล่าสุด 0 หมายถึงล่าสุด 1 แถบก่อนหน้าและอื่น ๆ ค่าแรกสูตรอ้างอิงถึงค่าก่อนหน้าและไม่มีข้อตกลงมาตรฐานคือค่าแรกสุด (เก่าแก่ที่สุด) การใช้ EMA ที่แตกต่างกัน: ราคาแรก (MT4, Marketscope) หรือ Average Moving Average ของราคาแรก (Stockcharts) ในสถานที่ของค่าเฉลี่ยเคลื่อนที่แบบง่ายค่าเฉลี่ยเคลื่อนที่แบบเสี้ยว (Exponential Moving Average) สามารถใช้เหมือนกับ Simple Moving Average โดยเฉพาะอย่างยิ่งในสถานการณ์เมื่อความเฉื่อยของ Simple Moving Average ไม่สามารถละเลยได้ เพียงเปรียบเทียบ EMA (10) และ MVA (10) กับราคาเดียวกัน: ข้อ จำกัด ค่าเฉลี่ยของค่าเฉลี่ยที่เป็นไปได้คือค่าพื้นฐานของค่าก่อนหน้านี้ดังนั้นผลลัพธ์ของตัวบ่งชี้สำหรับแถบเฉพาะจะขึ้นอยู่กับข้อมูลทางประวัติศาสตร์ที่นำมาพิจารณา ดังนั้นในสถานการณ์เมื่อโหลดข้อมูลทางประวัติศาสตร์มากขึ้นค่าของตัวบ่งชี้อาจต่างจากที่คำนวณก่อนหน้านี้ ตัวชี้วัดบทความนี้ใน Languages. net. sourceforge. openforecast. models ชั้น WeightedMovingAverageModel แบบจำลองการคาดการณ์ถัวเฉลี่ยถ่วงน้ำหนักจะขึ้นอยู่กับชุดเวลาที่สร้างเทียมซึ่งค่าในช่วงเวลาหนึ่ง ๆ จะถูกแทนที่ด้วยค่าถัวเฉลี่ยถ่วงน้ำหนักของค่านั้นและค่าสำหรับ บางช่วงก่อนหน้านี้ ตามที่คุณอาจคาดเดาได้จากคำอธิบายรูปแบบนี้เหมาะที่สุดสำหรับข้อมูลชุดข้อมูลเวลาเช่นข้อมูลที่เปลี่ยนแปลงตลอดเวลา เนื่องจากค่าคาดการณ์ของช่วงเวลาหนึ่ง ๆ เป็นค่าเฉลี่ยถ่วงน้ำหนักของงวดก่อนหน้านี้การคาดการณ์จะมีแนวโน้มล่าช้าไปกว่าการเพิ่มขึ้นหรือลดลงของค่าที่สังเกตได้ (ขึ้นอยู่กับค่า) ตัวอย่างเช่นถ้าชุดข้อมูลมีแนวโน้มสูงขึ้นที่น่าทึ่งก็คาดการณ์ถัวเฉลี่ยถ่วงน้ำหนักโดยเฉลี่ยจะให้ค่าเบาของค่าของตัวแปรขึ้นอยู่กับ แบบจำลองถ่วงน้ำหนักถ่วงน้ำหนักเช่นเดียวกับโมเดลเฉลี่ยเคลื่อนที่มีข้อได้เปรียบเหนือรูปแบบการคาดการณ์อื่น ๆ ในการทำให้ยอดและร่อง (หรือหุบเขา) เรียบขึ้นในชุดของข้อสังเกต อย่างไรก็ตามเช่นเดียวกับรุ่นเฉลี่ยที่เคลื่อนที่ก็ยังมีข้อเสียอยู่หลายประการ โดยเฉพาะรุ่นนี้ไม่ได้สร้างสมการที่แท้จริง ดังนั้นจึงไม่ใช่สิ่งที่มีประโยชน์ในฐานะเครื่องมือคาดการณ์ในระยะปานกลาง สามารถใช้งานได้อย่างน่าเชื่อถือในการคาดการณ์ระยะเวลาไม่กี่แห่งในอนาคตเท่านั้น ตั้งแต่: 0.4 ผู้แต่ง: Steven R. Gould ฟิลด์ที่สืบทอดมาจากคลาส net. sourceforge. openforecast. models. AbstractForecastingModel WeightedMovingAverageModel () สร้างแบบจำลองการพยากรณ์อากาศถ่วงน้ำหนักแบบถ่วงน้ำหนักใหม่ WeightedMovingAverageModel (double weights) สร้างแบบจำลองการพยากรณ์อากาศถ่วงน้ำหนักแบบใหม่โดยใช้น้ำหนักที่ระบุ คาดการณ์ (double timeValue) ส่งกลับค่าพยากรณ์ของตัวแปรอิสระตามค่าที่กำหนดของตัวแปรเวลาที่เป็นอิสระ getForecastType () ส่งคืนคำหนึ่งหรือสองชื่อของรูปแบบการคาดการณ์ประเภทนี้ getNumberOfPeriods () ส่งคืนจำนวนปัจจุบันของรอบระยะเวลาที่ใช้ในโมเดลนี้ getNumberOfPredictors () แสดงจำนวนของตัวพยากรณ์ที่ใช้โดยโมเดลต้นแบบ setWeights (double weights) ตั้งค่าน้ำหนักที่ใช้โดยโมเดลการพยากรณ์อากาศถ่วงน้ำหนักถ่วงน้ำหนักนี้ให้มีน้ำหนักตามที่กำหนด toString () ควรแทนที่นี้เพื่อให้คำอธิบายแบบข้อความของรูปแบบการคาดการณ์ปัจจุบันรวมถึงพารามิเตอร์ที่ได้รับที่ใช้ เมธอดสืบทอดมาจากคลาส net. sourceforge. openforecast. models. AbstractTimeBasedModel WeightedMovingAverageModel สร้างแบบจำลองการพยากรณ์อากาศถ่วงน้ำหนักแบบใหม่โดยใช้น้ำหนักที่ระบุ สำหรับรูปแบบที่ถูกต้องที่จะสร้างคุณควรโทร init และส่งผ่านชุดข้อมูลที่มีชุดข้อมูลจุดที่มีตัวแปรเวลาที่เตรียมใช้งานเพื่อระบุตัวแปรอิสระ ขนาดของอาร์เรย์น้ำหนักใช้เพื่อกำหนดจำนวนการสังเกตที่จะใช้ในการคำนวณถัวเฉลี่ยถ่วงน้ำหนัก นอกจากนี้ช่วงเวลาล่าสุดจะได้รับน้ำหนักที่กำหนดโดยองค์ประกอบแรกของอาร์เรย์เช่นน้ำหนัก we0 ขนาดของอาร์เรย์น้ำหนักจะใช้เพื่อกำหนดจำนวนงวดในอนาคตที่คาดการณ์ได้อย่างมีประสิทธิภาพ ด้วยค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนัก 50 วันเราจึงไม่สามารถคาดการณ์ได้อย่างถูกต้องด้วยความแม่นยำระดับใดในช่วงเวลามากกว่า 50 วันนับจากช่วงเวลาสุดท้ายที่มีข้อมูลอยู่ แม้การคาดการณ์ใกล้ถึงจุดสิ้นสุดของช่วงนี้น่าจะไม่น่าเชื่อถือ โดยทั่วไปแล้วน้ำหนักที่ส่งผ่านไปยังตัวสร้างนี้ควรเพิ่มขึ้นเป็น 1.0 อย่างไรก็ตามหากสะดวกในการคำนวณหากน้ำหนักรวมเพิ่มขึ้นไม่เกิน 1.0 การใช้งานนี้จะให้น้ำหนักทั้งหมดตามสัดส่วนเพื่อให้รวมกันเป็น 1.0 พารามิเตอร์: น้ำหนัก - อาร์เรย์ของน้ำหนักที่กำหนดให้กับข้อสังเกตในอดีตเมื่อคำนวณค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนัก WeightedMovingAverageModel สร้างแบบจำลองการพยากรณ์อากาศถ่วงน้ำหนักแบบใหม่โดยใช้ตัวแปรชื่อเป็นตัวแปรอิสระและน้ำหนักที่ระบุ พารามิเตอร์: independentVariable - ชื่อของตัวแปรอิสระที่จะใช้ในโมเดลนี้ น้ำหนัก - อาร์เรย์ของน้ำหนักที่กำหนดให้กับข้อสังเกตในอดีตเมื่อคำนวณค่าเฉลี่ยถ่วงน้ำหนักที่ถ่วงน้ำหนัก WeightedMovingAverageModel สร้างแบบจำลองการพยากรณ์อากาศถ่วงน้ำหนักแบบใหม่ ตัวสร้างนี้มีวัตถุประสงค์เพื่อใช้เฉพาะโดย subclasses (ดังนั้นจึงมีการป้องกัน) คลาสรองใด ๆ ที่ใช้คอนสตรัคเตอร์นี้ต้องเรียกใช้เมธอด setWeights (ที่มีการป้องกัน) ในการเริ่มต้นใช้งานน้ำหนักที่จะใช้โดยโมเดลนี้ WeightedMovingAverageModel สร้างแบบจำลองการพยากรณ์อากาศถ่วงน้ำหนักแบบใหม่โดยใช้ตัวแปรอิสระที่กำหนด พารามิเตอร์: independentVariable - ชื่อของตัวแปรอิสระที่จะใช้ในโมเดลนี้ setWeights ตั้งค่าน้ำหนักที่ใช้โดยแบบจำลองการพยากรณ์อากาศถ่วงน้ำหนักถ่วงน้ำหนักนี้ให้มีน้ำหนักตามที่กำหนด เมธอดนี้มีไว้เพื่อใช้เฉพาะกับคลาสย่อยเท่านั้น (มีการป้องกัน) และใช้ร่วมกับคอนสตรัคอาร์กิวเมนต์หนึ่งอาร์กิวเมนต์ Subclass ที่ใช้คอนสตรัคอาร์กิวเมนต์หนึ่งอาร์กิวเมนต์ต้องเรียก setWeights ในภายหลังก่อนที่จะเรียกใช้เมธอด AbstractTimeBasedModel. init (net. sourceforge. openforecast. DataSet) เพื่อเริ่มต้นแบบ โดยทั่วไปน้ำหนักที่ส่งผ่านไปยังวิธีการนี้ควรเพิ่มเป็น 1.0 อย่างไรก็ตามหากสะดวกในการคำนวณหากน้ำหนักรวมเพิ่มขึ้นไม่เกิน 1.0 การใช้งานนี้จะให้น้ำหนักทั้งหมดตามสัดส่วนเพื่อให้รวมกันเป็น 1.0 พารามิเตอร์: น้ำหนัก - อาร์เรย์ของน้ำหนักที่กำหนดให้กับข้อสังเกตในอดีตเมื่อคำนวณค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนัก ส่งกลับค่าคาดการณ์ของตัวแปรตามสำหรับค่าที่กำหนดของตัวแปรเวลาที่เป็นอิสระ คลาสย่อยต้องใช้วิธีนี้ในลักษณะที่สอดคล้องกับรูปแบบการคาดการณ์ที่ใช้ Subclasses สามารถใช้เมธอด getForecastValue และ getObservedValue เพื่อดูการคาดการณ์และข้อสังเกตก่อนหน้าตามลำดับ ระบุโดย: การคาดการณ์ในคลาส AbstractTimeBasedModel พารามิเตอร์: timeValue - ค่าของตัวแปรเวลาที่ต้องใช้ค่าคาดการณ์ Returns: ค่าคาดการณ์ของตัวแปรตามสำหรับช่วงเวลาที่กำหนด การโยน: IllegalArgumentException - หากมีข้อมูลประวัติไม่เพียงพอ - ข้อสังเกตที่ส่งไปยัง init - เพื่อสร้างการคาดการณ์สำหรับค่าเวลาที่กำหนด getNumberOfPredictors แสดงจำนวนของตัวพยากรณ์ที่ใช้โดยโมเดลต้นแบบ Returns: จำนวนตัวทำนายที่ใช้โดยโมเดลต้นแบบ getNumberOfPeriods ส่งคืนจำนวนปัจจุบันของรอบระยะเวลาที่ใช้ในโมเดลนี้ ระบุโดย: getNumberOfPeriods ในคลาส AbstractTimeBasedModel Returns: จำนวนปัจจุบันของรอบระยะเวลาที่ใช้ในโมเดลนี้ getForecastType แสดงคำหนึ่งหรือสองชื่อของรูปแบบการพยากรณ์อากาศแบบนี้ เก็บเรื่องสั้นนี้ไว้ ควรใช้คำอธิบายเพิ่มเติมในวิธี toString ควรแทนที่นี้เพื่อให้คำอธิบายแบบข้อความของรูปแบบการคาดการณ์ในปัจจุบันรวมถึงพารามิเตอร์ที่ได้รับที่ใช้ซึ่งเป็นไปได้ ระบุโดย: toString ในอินเทอร์เฟซ ForecastingModel การแทนที่: toString ในคลาส AbstractTimeBasedModel Returns: การแสดงสตริงของรูปแบบการพยากรณ์ปัจจุบันและพารามิเตอร์ของมัน

No comments:

Post a Comment