การปรับข้อมูลอนุกรมเวลาให้ราบรื่น


14

ฉันกำลังสร้างแอปพลิเคชัน Android ที่บันทึกข้อมูลมาตรวัดความเร็วในระหว่างการนอนหลับเพื่อวิเคราะห์แนวโน้มการนอนหลับและเลือกให้ผู้ใช้ใกล้เวลาที่ต้องการระหว่างการนอนหลับเบา

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

รูปภาพสองสามภาพบอกสองพันคำ: (ฉันสามารถโพสต์ได้เพียงลิงค์เดียวเนื่องจากเป็นตัวแทนต่ำ)

นี่คือข้อมูลที่ไม่มีการกรองผลรวมของการเคลื่อนไหวที่รวบรวมในช่วงเวลา 30 วินาที

และข้อมูลเดียวกันเรียบเนียนด้วยการแสดงของฉันเองในการเคลื่อนย้ายเฉลี่ยเรียบ

แก้ไข) แผนภูมิทั้งสองแสดงถึงการปรับเทียบ - มีตัวกรอง 'สัญญาณรบกวน' ขั้นต่ำและตัวกรองตัดสูงสุดรวมถึงระดับสัญญาณเรียกเตือน (เส้นสีขาว)

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

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

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

ขอบคุณ!

คำตอบ:


16

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

  • ใช้ความแตกต่างมากกว่าข้อมูลดิบ
  • ใช้ thresholding เพื่อลบเสียงรบกวนในระดับต่ำ (รวมกับความแตกต่างเพื่อเพิกเฉยต่อการเปลี่ยนแปลงเล็กน้อย)
  • ใช้ความแปรปรวนในช่วงเวลาหนึ่งมากกว่าค่าเฉลี่ยเพื่อจับระดับกิจกรรมมากกว่าการเคลื่อนไหว
  • เปลี่ยนฐานเวลาจากช่วงเวลาคงที่เป็นความยาวผันแปรและสะสมเป็นลำดับจุดข้อมูลเดียวของการเปลี่ยนแปลงที่มีเกณฑ์บางอย่าง (เช่นความแตกต่างในทิศทางเดียวกันจนถึงบางขีด จำกัด )
  • แปลงข้อมูลจากค่าจริงเป็นลำดับ (เช่นต่ำปานกลางสูง) คุณสามารถทำสิ่งนี้ได้ตรงเวลามากกว่าการสุ่มตัวอย่างตัวอย่างเช่นระดับกิจกรรมสำหรับการยืด 5 นาทีในแต่ละครั้ง
  • ใช้เคอร์เนล convolutionที่เหมาะสมเพื่อปรับความนุ่มนวลของค่าเฉลี่ยเคลื่อนที่หรือเลือกคุณสมบัติที่น่าสนใจเช่นการเปลี่ยนแปลงที่คมชัด
  • ใช้ไลบรารีFFTเพื่อคำนวณสเปกตรัมพลังงาน

สุดท้ายอาจมีราคาแพงเล็กน้อยสำหรับจุดประสงค์ของคุณ แต่อาจให้ตัวเลือกการนำเสนอที่มีประโยชน์บางอย่างแก่คุณในแง่ของ "จังหวะการนอนหลับ" และอื่น ๆ (ฉันรู้ว่าไม่มีอะไรเกี่ยวกับ Android แต่เป็นไปได้ว่าบางคน / หลายคน / มือถือทั้งหมดอาจมีฮาร์ดแวร์ในตัว DSP ที่คุณสามารถใช้ประโยชน์จาก)


* เนื่องจากวิธีการโน้มน้าวใจส่วนกลางคือการประมวลผลสัญญาณดิจิตอลมันเป็นเรื่องยากที่จะหาอินโทรออนไลน์ที่เข้าถึงได้ หรืออย่างน้อยก็ใน 3 นาทีของ googling ข้อเสนอแนะยินดีต้อนรับ!


10

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

ตรวจสอบPercival และวัลเดน (2000)และเชื่อมโยงแพคเกจ R แม้ว่าคุณต้องการโซลูชัน java แต่อัลกอริทึมในแพ็คเกจ R เป็นโอเพ่นซอร์สและคุณอาจแปลได้


3

นี่ค่อนข้างจะเป็นวงสัมผัสกับสิ่งที่คุณถาม แต่มันอาจคุ้มค่าที่จะดูตัวกรองคาลมาน


1

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

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

มีบทความที่ดีใน Wikipedia ถึงแม้ว่ามันจะเรียกว่า Savitzky-Golay filter (ใช้ความรุนแรงเล็กน้อยกับคำศัพท์ปกติจากทฤษฎีการควบคุมระบบและการวิเคราะห์อนุกรมเวลารวมถึงเอกสารต้นฉบับที่เรียกว่าการปรับให้เรียบ) นอกจากนี้โปรดทราบว่ามีข้อผิดพลาด (โต้แย้งมากกว่า) ในบทความ Wikipedia สำหรับสูตรสำหรับการประมาณอนุพันธ์อันดับสอง - ดูหัวข้อ Talk สำหรับบทความนั้น แก้ไข: บทความ Wikipedia ได้รับการแก้ไข

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