วิธีระบุการกระจาย bimodal?


48

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


5
คำถามที่น่าสนใจ ฉันไม่รู้อะไรเลยเกี่ยวกับเรื่องนี้ดังนั้นจะไม่พยายามตอบคำถาม แต่การทดสอบ bimodality + ของ googling นั้นให้โอกาสในการขายไม่มากนัก google.co.uk/search?q=bimodality+test
onestop

รหัสโปรแกรมเพื่อทดสอบสำหรับ multimodality มีอยู่ที่ www.estima.com และเรียกว่า MODES.SRC คุณสามารถแปลงเป็น Matlab, R หรือซอฟต์แวร์อื่น ๆ ได้อย่างง่ายดาย ขอแสดงความนับถือกุยโด้

1
คุณไม่สามารถระบุจำนวนโหมด (ไม่มีการ จำกัด จำนวนของการกระจายแบบวิกเล็ก ๆ ที่สามารถมีได้) แต่คุณสามารถมีขอบเขตที่ต่ำกว่าได้ เช่นดูที่นี่projecteuclid.org/euclid.aos/1176351045
Glen_b

คำตอบ:


27

การระบุโหมดสำหรับการแจกแจงแบบต่อเนื่องจำเป็นต้องทำให้ข้อมูลเรียบหรือเรียบ

โดยทั่วไปแล้วการBinningจะเป็น procrustean มากเกินไป: ผลลัพธ์มักขึ้นอยู่กับตำแหน่งที่คุณวางจุดตัดถังขยะ

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

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


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

25

มีบทความที่รู้จักกันดีโดย Silverman ที่เกี่ยวข้องกับปัญหานี้ มันใช้การประมาณความหนาแน่นของเคอร์เนล ดู

BW Silverman การใช้การประมาณความหนาแน่นของเคอร์เนลเพื่อตรวจสอบความต่อเนื่องหลายรูปแบบ , J. Royal Stat Soc B , ฉบับ 43, ไม่มี 1, 1981, pp. 97-99

โปรดทราบว่ามีข้อผิดพลาดบางอย่างในตารางของกระดาษ นี่เป็นเพียงจุดเริ่มต้น แต่สิ่งที่ดีงาม มันมีอัลกอริทึมที่กำหนดไว้อย่างดีที่จะใช้ในกรณีที่สิ่งที่คุณกำลังมองหามากที่สุด คุณอาจดู Google Scholar ในเอกสารที่อ้างถึงแนวทางที่ "ทันสมัย" มากกว่านี้


4
+1 กระดาษนี้ใช้ประโยชน์จากข้อมูลเกี่ยวกับจำนวนโหมดที่ปรากฏขึ้นอยู่กับความกว้างของเคอร์เนล (สำหรับเมล็ดเกาส์เซียน) เพื่อเลือกความกว้างที่เหมาะสมแล้วดำเนินการต่อตามที่อธิบายในคำตอบของฉัน
whuber

2

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

ในแพคเกจที่เรียกว่าRdiptest


2
ชื่อเต็มคือการทดสอบการจุ่มของ Unimodality ของ Hartigan กระดาษต้นฉบับอธิบายให้คำอธิบายนี้: การทดสอบการจุ่มวัด multimodality ในตัวอย่างโดยความแตกต่างสูงสุดผ่านจุดตัวอย่างทั้งหมดระหว่างฟังก์ชันการกระจายเชิงประจักษ์และฟังก์ชันการกระจายแบบ unimodal ที่ลดความแตกต่างสูงสุดนั้น อัลกอริทึมไม่น่ารำคาญ แต่คุณสามารถหา C, Python, MATLAB, และคำแปล Fortran ทันสมัยอยู่บนพื้นฐานของการดำเนินงาน Fortran เดิมในการคำนวณสถิติกรมทรัพย์สินทางปัญญาในการทดสอบสำหรับ Unimodality
mortehu

1
รหัส MATLAB: nicprice.net/diptestและอีกคนหนึ่ง - gist.github.com/schluppeck/e7635dcf0e80ca54efb0
Royi

0

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


คุณจะระบุจุดศูนย์กลางของการแจกแจงปกติสองแบบได้อย่างไร
venkasub

@venkasub จุดศูนย์กลางของการแจกแจงแบบปกติคือค่าเฉลี่ย หากคุณรู้ว่า bimodality นั้นมาจากการแจกแจงปกติสองแบบคุณสามารถใส่แบบจำลองการผสมเพื่อประมาณค่าเฉลี่ยซึ่งจะเป็นสองโหมด
mpiktas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.