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

ในทางสถิติการประมาณความหนาแน่นเคอร์เนล ( KDE ) คือการประยุกต์ใช้ การปรับ เรียบเคอร์เนลสำหรับการประมาณความหนาแน่นความน่าจะเป็น กล่าว คือวิธีการที่ไม่ใช้พารามิเตอร์ ใน การประมาณฟังก์ชันความหนาแน่นความน่าจะเป็นของตัวแปรสุ่มโดยใช้เคอร์เนลเป็นน้ำหนัก KDE แก้ปัญหาการปรับเรียบข้อมูลพื้นฐานที่อนุมานเกี่ยวกับประชากรโดยอาศัยตัวอย่าง ข้อมูลที่มีจำนวนจำกัด ในบางสาขา เช่นการประมวลผลสัญญาณและเศรษฐศาสตร์เชิง ปริมาณ เรียกอีกอย่างว่า วิธี หน้าต่าง Parzen–Rosenblattตามชื่อของEmanuel ParzenและMurray Rosenblattซึ่งโดยทั่วไปแล้วได้รับการยกย่องว่าสร้างวิธีการนี้ขึ้นมาอย่างอิสระในรูปแบบปัจจุบัน[ 1 ] [ 2 ] หนึ่งในการประยุกต์ใช้ที่มีชื่อเสียงของการประมาณความหนาแน่นเคอร์เนลคือการประมาณ ความหนาแน่นส่วนขอบแบบมีเงื่อนไข ของคลาส ของข้อมูลเมื่อใช้ตัวจำแนกแบบเบย์แบบง่ายซึ่งสามารถปรับปรุงความแม่นยำในการทำนายได้[ 3 ]
คำนิยาม
ให้เป็นตัวอย่างอิสระและมีการกระจายเหมือนกัน ที่ดึงมาจากการแจกแจงแบบเอกตัวแปรที่มี ความหนาแน่น ที่ไม่ทราบค่า fที่จุดx ใดๆ เราสนใจที่จะประมาณรูปร่างของฟังก์ชันf นี้ ตัวประมาณความหนาแน่นเคอร์เนลของมันคือ โดยที่Kคือเคอร์เนลซึ่งเป็นฟังก์ชันที่ไม่เป็นลบ และh > 0คือ พารามิเตอร์ การปรับเรียบที่เรียกว่าแบนด์วิดท์หรือความกว้าง[ 3 ]เคอร์เนลที่มีตัวห้อยhเรียก ว่า เคอร์เนลแบบปรับขนาดและกำหนดเป็นK h ( x ) = 1/ชม. K ( x/ชม.โดยสัญชาตญาณแล้ว เราต้องการเลือกค่า hให้เล็กที่สุดเท่าที่ข้อมูลจะเอื้ออำนวย อย่างไรก็ตาม มักจะมีข้อแลกเปลี่ยนระหว่างอคติของตัวประมาณค่าและความแปรปรวนของมันเสมอ การเลือกแบนด์วิดท์จะกล่าวถึงในรายละเอียดเพิ่มเติมด้านล่าง
โดยทั่วไปมีการใช้ ฟังก์ชันเคอร์เนลหลายประเภทได้แก่ แบบเอกรูป แบบสามเหลี่ยม แบบไบเวท แบบไตรเวทแบบเอพาเนชนิคอฟ (พาราโบลา) แบบปกติ และอื่นๆ เคอร์เนลเอพาเนชนิคอฟเป็นเคอร์เนลที่ดีที่สุดในแง่ของข้อผิดพลาดกำลังสองเฉลี่ย[ 4 ]แม้ว่าการสูญเสียประสิทธิภาพจะน้อยสำหรับเคอร์เนลที่ระบุไว้ก่อนหน้านี้[ 5 ]เนื่องจากคุณสมบัติทางคณิตศาสตร์ที่สะดวก เคอร์เนลแบบปกติจึงมักถูกใช้ ซึ่งหมายความว่าK ( x ) = ϕ ( x )โดยที่ϕคือ ฟังก์ชันความหนาแน่น ปกติมาตรฐาน ตัวประมาณความ หนาแน่น เคอร์เนลจึงกลายเป็น โดยที่คือค่าเบี่ยงเบนมาตรฐานของตัวอย่าง
การสร้างการประมาณความหนาแน่นเคอร์เนลพบการตีความในสาขาอื่นนอกเหนือจากการประมาณความหนาแน่น[ 6 ]ตัวอย่างเช่น ในอุณหพลศาสตร์สิ่งนี้เทียบเท่ากับปริมาณความร้อนที่เกิดขึ้นเมื่อ วาง เคอร์เนลความร้อน (คำตอบพื้นฐานของสมการความร้อน ) ไว้ที่ตำแหน่งจุดข้อมูลx i แต่ละจุด วิธีการที่คล้ายกันนี้ใช้ในการสร้างตัวดำเนินการลาปลาสแบบไม่ต่อเนื่องบนกลุ่มจุดสำหรับการเรียนรู้แมนิโฟ ลด์ (เช่นแผนที่การแพร่กระจาย )
ตัวอย่าง
การประมาณค่าความหนาแน่นของเคอร์เนลมีความสัมพันธ์อย่างใกล้ชิดกับฮิสโตแกรมแต่สามารถเพิ่มคุณสมบัติต่างๆ เช่น ความเรียบเนียนหรือความต่อเนื่องได้โดยการใช้เคอร์เนลที่เหมาะสม แผนภาพด้านล่างนี้ซึ่งสร้างขึ้นจากจุดข้อมูล 6 จุด แสดงให้เห็นถึงความสัมพันธ์นี้:
| ตัวอย่าง | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| ค่า | −2.1 | −1.3 | -0.4 | 1.9 | 5.1 | 6.2 |
สำหรับการสร้างฮิสโตแกรม ขั้นแรก แกนแนวนอนจะถูกแบ่งออกเป็นช่วงย่อยหรือช่อง (bins) ซึ่งครอบคลุมช่วงของข้อมูล ในกรณีนี้คือหกช่อง แต่ละช่องมีความกว้าง 2 เมื่อใดก็ตามที่จุดข้อมูลตกอยู่ภายในช่วงนี้ จะมีการวางกล่องที่มีความสูง 1/12 ไว้ในตำแหน่งนั้น หากมีจุดข้อมูลมากกว่าหนึ่งจุดตกอยู่ภายในช่องเดียวกัน กล่องเหล่านั้นจะถูกวางซ้อนกัน
สำหรับการประมาณความหนาแน่นของเคอร์เนล เคอร์เนลปกติที่มีค่าเบี่ยงเบนมาตรฐาน 1.5 (แสดงด้วยเส้นประสีแดง) จะถูกวางไว้บนจุดข้อมูลx i แต่ละ จุด เคอร์เนลเหล่านี้จะถูกรวมเข้าด้วยกันเพื่อสร้างการประมาณความหนาแน่นของเคอร์เนล (เส้นโค้งสีน้ำเงินทึบ) ความเรียบของการประมาณความหนาแน่นของเคอร์เนล (เมื่อเทียบกับความไม่ต่อเนื่องของฮิสโตแกรม) แสดงให้เห็นว่าการประมาณความหนาแน่นของเคอร์เนลลู่เข้าสู่ความหนาแน่นที่แท้จริงได้เร็วกว่าสำหรับตัวแปรสุ่มต่อเนื่อง[ 7 ]

การเลือกแบนด์วิดท์

แบนด์วิดท์ของเคอร์เนลเป็นพารามิเตอร์อิสระที่มีอิทธิพลอย่างมากต่อค่าประมาณที่ได้ เพื่อแสดงให้เห็นถึงผลกระทบนี้ เราจึงใช้ตัวอย่างสุ่ม จำลอง จาก1 การแจกแจงปกติ มาตรฐาน (แสดงด้วยจุดสีน้ำเงินในกราฟแบบ Rug Plotบนแกนแนวนอน) เส้นโค้งสีเทาคือความหนาแน่นที่แท้จริง (ความหนาแน่นปกติที่มีค่าเฉลี่ย 0 และความแปรปรวน 1) ในทางเปรียบเทียบ เส้นโค้งสีแดงนั้นปรับให้เรียบน้อยเกินไป เนื่องจากมีข้อมูลผิดปกติจำนวนมากที่เกิดจากการใช้แบนด์วิดท์h = 0.05 ซึ่งเล็กเกินไป เส้นโค้งสีเขียวนั้นปรับให้เรียบ มากเกินไป เนื่องจากการใช้แบนด์วิดท์h = 2ทำให้โครงสร้างพื้นฐานส่วนใหญ่ถูกบดบัง เส้นโค้งสีดำที่มีแบนด์วิดท์h = 0.337 ถือว่าปรับให้เรียบอย่างเหมาะสมที่สุด เนื่องจากค่าประมาณความหนาแน่นใกล้เคียงกับความหนาแน่นที่แท้จริง สถานการณ์สุดขั้วเกิดขึ้นในขีดจำกัด(ไม่มีการปรับให้เรียบ) ซึ่งค่าประมาณจะเป็นผลรวมของฟังก์ชันเดลต้าn ฟังก์ชัน ที่อยู่ตรงกลางที่พิกัดของตัวอย่างที่วิเคราะห์ ในอีกกรณีสุดขั้วหนึ่งค่าประมาณจะคงรูปทรงของเคอร์เนลที่ใช้ โดยมีจุดศูนย์กลางอยู่ที่ค่าเฉลี่ยของตัวอย่าง (เรียบเนียนอย่างสมบูรณ์)
เกณฑ์ความเหมาะสมที่ใช้กันทั่วไปในการเลือกพารามิเตอร์นี้คือฟังก์ชันความเสี่ยงL2 ที่คาดหวัง หรือเรียกอีกอย่างว่าค่าเฉลี่ยของข้อผิดพลาดกำลังสองแบบบูรณาการ :
ภายใต้สมมติฐานที่อ่อนแอเกี่ยวกับf และK ( โดยที่ fคือฟังก์ชันความหนาแน่นจริงซึ่งโดยทั่วไปไม่ทราบ) [ 1 ] [ 2 ]
โดยที่oคือสัญลักษณ์ o ตัวเล็กและnคือขนาดตัวอย่าง (ดังข้างต้น) AMISE คือ MISE แบบเชิงเส้นกำกับ กล่าวคือ พจน์นำสองพจน์
โดยที่สำหรับฟังก์ชันgและคืออนุพันธ์อันดับสองของและคือเคอร์เนล ค่าต่ำสุดของ AMISE นี้คือคำตอบของสมการเชิงอนุพันธ์ นี้
หรือ
ไม่ สามารถใช้สูตรAMISE หรือhAMISE ได้โดยตรง เนื่องจากเกี่ยวข้อง กับ ฟังก์ชันความหนาแน่นที่ไม่ทราบค่า หรืออนุพันธ์อันดับสองเพื่อเอาชนะความยากลำบากนั้น จึงได้มีการพัฒนาวิธีการอัตโนมัติที่ใช้ข้อมูลหลากหลายวิธีเพื่อเลือกแบนด์วิดท์ มีการศึกษาวิจัยหลายชิ้นเพื่อเปรียบเทียบประสิทธิภาพของวิธีการเหล่านี้[ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ]โดยมีความเห็นพ้องต้องกันโดยทั่วไปว่าตัวเลือกปลั๊กอิน[ 6 ] [ 15 ] [ 16 ]และตัวเลือกการตรวจสอบแบบไขว้[ 17 ] [ 18 ] [ 19 ]มีประโยชน์มากที่สุดสำหรับชุดข้อมูลที่หลากหลาย
การแทนที่แบนด์วิดท์h ใดๆ ที่มีลำดับเชิงอะซิมโทติก n −1/5เดียวกันกับh AMISEลงใน AMISE จะได้ว่าAMISE( h ) = O ( n −4/5 )โดยที่Oคือสัญกรณ์Oขนาดใหญ่สามารถแสดงได้ว่าภายใต้สมมติฐานที่อ่อนแอ จะไม่มีตัวประมาณค่าแบบไม่ใช้พารามิเตอร์ที่ลู่เข้าได้เร็วกว่าตัวประมาณค่าเคอร์เนล[ 20 ]โปรดทราบว่า อัตรา n −4/5 นั้น ช้ากว่า อัตราการลู่เข้า n −1 ทั่วไป ของวิธีการแบบพารามิเตอร์
หากแบนด์วิดท์ไม่คงที่ แต่เปลี่ยนแปลงไปตามตำแหน่งของค่าประมาณ (ตัวประมาณแบบบอลลูน) หรือตัวอย่าง (ตัวประมาณแบบจุด) จะได้วิธีการที่มีประสิทธิภาพเป็นพิเศษ เรียกว่าการประมาณความหนาแน่นเคอร์เนลแบบปรับได้ หรือแบบแบนด์วิดท์แปรผัน
การเลือกแบนด์วิดท์สำหรับการประมาณความหนาแน่นเคอร์เนลของการกระจายแบบหางหนักค่อนข้างยาก[ 21 ]
เครื่องมือประมาณแบนด์วิดท์แบบคร่าวๆ
หากใช้ฟังก์ชันพื้นฐานแบบเกาส์เซียนเพื่อประมาณ ข้อมูล ตัวแปรเดียวและความหนาแน่นพื้นฐานที่กำลังประมาณเป็นแบบเกาส์เซียน ตัวเลือกที่เหมาะสมที่สุดสำหรับh (นั่นคือแบนด์วิดท์ที่ทำให้ข้อผิดพลาดกำลังสองแบบบูรณาการเฉลี่ย น้อยที่สุด ) คือ: [ 22 ]
ค่าจะถือว่ามีความน่าเชื่อถือมากขึ้นเมื่อช่วยปรับปรุงความเหมาะสมของแบบจำลองสำหรับข้อมูลที่มีหางยาวและเบี่ยงเบน หรือสำหรับข้อมูลแบบผสมสองยอด ซึ่งมักทำได้โดยวิธีเชิงประจักษ์ โดยการแทนที่ค่าเบี่ยงเบนมาตรฐานด้วยพารามิเตอร์ด้านล่าง:
โดยที่IQRคือช่วงควาร์ไทล์

การปรับเปลี่ยนอีกอย่างที่จะช่วยปรับปรุงแบบจำลองคือการลดค่าตัวประกอบจาก 1.06 เหลือ 0.9 จากนั้นสูตรสุดท้ายจะเป็นดังนี้:
ขนาดตัวอย่างอยู่ ที่ไหน
การประมาณค่านี้เรียกว่าการประมาณค่าการกระจายแบบปกติการประมาณค่าแบบเกาส์เซียน หรือกฎทั่วไปของซิลเวอร์แมน [ 22 ] แม้ว่ากฎทั่วไปนี้จะคำนวณได้ง่าย แต่ควรใช้ด้วยความระมัดระวัง เนื่องจากอาจให้ค่าประมาณที่ไม่ถูกต้องอย่างมากเมื่อความหนาแน่นไม่ใกล้เคียงกับแบบปกติ ตัวอย่างเช่น เมื่อประมาณแบบจำลองการผสมเกาส์เซียน แบบสอง โหมดจากตัวอย่าง 200 จุด รูปทางด้านขวาแสดงความหนาแน่นที่แท้จริงและการประมาณค่าความหนาแน่นเคอร์เนลสองแบบ — แบบหนึ่งใช้แบนด์วิดท์ตามกฎทั่วไป และอีกแบบหนึ่งใช้แบนด์วิดท์แบบแก้สมการ[ 6 ] [ 16 ]การประมาณค่าตามแบนด์วิดท์ตามกฎทั่วไปนั้นเรียบเกินไปอย่างมีนัยสำคัญ
ความสัมพันธ์กับตัวประมาณความหนาแน่นของฟังก์ชันลักษณะเฉพาะ
เมื่อกำหนดตัวอย่าง( x 1 , x 2 , ..., x n ) แล้ว การประมาณฟังก์ชันลักษณะเฉพาะφ ( t ) = E[ e itX ] เป็นเรื่องปกติ เมื่อ ทราบฟังก์ชันลักษณะเฉพาะแล้ว ก็สามารถหาฟังก์ชันความหนาแน่นความน่าจะเป็นที่สอดคล้องกันได้โดยใช้ สูตร การแปลงฟูริเยร์ความยากลำบากอย่างหนึ่งในการใช้สูตรการผกผันนี้คือ มันนำไปสู่ปริพันธ์ที่ลู่เข้าสู่ค่าอนันต์ เนื่องจากค่าประมาณนั้นไม่น่าเชื่อถือสำหรับ ค่า t ที่มาก เพื่อหลีกเลี่ยงปัญหานี้ ตัวประมาณค่าจะถูกคูณด้วยฟังก์ชันลดทอนψ h ( t ) = ψ ( ht )ซึ่งมีค่าเท่ากับ 1 ที่จุดกำเนิดแล้วลดลงเหลือ 0 ที่อนันต์ “พารามิเตอร์แบนด์วิดท์” hควบคุมว่าเราพยายามลดทอนฟังก์ชันเร็วแค่ไหนโดยเฉพาะอย่างยิ่งเมื่อhมีค่าน้อยψ h ( t )จะมีค่าประมาณหนึ่งสำหรับช่วงค่าt ที่กว้าง ซึ่งหมายความว่าค่า ψ h ( t ) แทบจะไม่เปลี่ยนแปลงในบริเวณที่สำคัญที่สุดของค่า t
ตัวเลือกที่พบบ่อยที่สุดสำหรับฟังก์ชันψคือ ฟังก์ชันเอกรูปψ ( t ) = 1 {−1 ≤ t ≤ 1}ซึ่งหมายถึงการตัดช่วงการอินทิเกรตในสูตรผกผันให้เหลือ[−1/ h , 1/ h ]หรือฟังก์ชันเกาส์เซียนψ ( t ) = e −πt 2เมื่อเลือกฟังก์ชันψแล้ว สามารถใช้สูตรผกผันได้ และจะได้ค่าประมาณความหนาแน่น
โดยที่Kคือการแปลงฟูริเยร์ของฟังก์ชันหน่วงψดังนั้น ตัวประมาณความหนาแน่นเคอร์เนลจึงตรงกับตัวประมาณความหนาแน่นของฟังก์ชันลักษณะเฉพาะ
ลักษณะทางเรขาคณิตและโทโพโลยี
เราสามารถขยายความหมายของโหมด (ระดับโลก) ไปสู่ความหมายระดับท้องถิ่น และกำหนดโหมดระดับท้องถิ่นได้ดังนี้:
กล่าวคือคือชุดของจุดที่ฟังก์ชันความหนาแน่นมีค่าสูงสุดในระดับท้องถิ่น ตัวประมาณค่าตามธรรมชาติของคือปลั๊กอินจาก KDE [ 23 ] [ 24 ]โดยที่และคือเวอร์ชัน KDE ของและภายใต้สมมติฐานที่ไม่ซับซ้อน เป็นตัวประมาณค่าที่สอดคล้องกันของโปรดทราบว่าเราสามารถใช้อัลกอริธึมการเลื่อนค่าเฉลี่ย[ 25 ] [ 26 ] [ 27 ]เพื่อคำนวณตัวประมาณค่าในเชิง ตัวเลขได้
การนำไปใช้ทางสถิติ
ต่อไปนี้คือตัวอย่างซอฟต์แวร์ที่ใช้ในการประมาณความหนาแน่นของเคอร์เนล (ซึ่งไม่ใช่รายการทั้งหมด):
- ในAnalyticaเวอร์ชัน 4.4 ตัวเลือก การปรับให้เรียบ (Smoothing)
Pdfสำหรับผลลัพธ์ PDF ใช้ KDE และสามารถใช้งานได้จากนิพจน์ผ่าน ฟังก์ชันในตัว - ในภาษา C / C++นั้นFIGTreeเป็นไลบรารีที่ใช้สำหรับคำนวณค่าประมาณความหนาแน่นของเคอร์เนลโดยใช้เคอร์เนลแบบปกติ มีอินเทอร์เฟซสำหรับ MATLAB ให้ใช้งานได้ด้วย
- ในภาษา C++ libagf เป็นไลบรารีสำหรับ การ ประมาณความหนาแน่นเคอร์เนลแบบแปรผัน
- ในภาษา C++นั้นmlpackเป็นไลบรารีที่สามารถคำนวณ KDE โดยใช้เคอร์เนลที่แตกต่างกันหลายแบบ อนุญาตให้กำหนดค่าความคลาดเคลื่อนที่ยอมรับได้เพื่อการคำนวณที่เร็วขึ้น มีอินเทอร์เฟซ สำหรับ PythonและRให้ใช้งาน
- ในภาษา C#และF#นั้นMath.NET Numericsเป็นไลบรารีโอเพนซอร์สสำหรับการคำนวณเชิงตัวเลข ซึ่งรวมถึงการประมาณความหนาแน่นของเคอร์เนล ด้วย
- ในCrimeStatการประมาณความหนาแน่นเคอร์เนลถูกนำมาใช้โดยใช้ฟังก์ชันเคอร์เนลที่แตกต่างกันห้าแบบ ได้แก่ แบบปกติ แบบเอกรูป แบบกำลังสี่ แบบเลขชี้กำลังลบ และแบบสามเหลี่ยม มีทั้งรูทีนการประมาณความหนาแน่นแบบเคอร์เนลเดี่ยวและแบบเคอร์เนลคู่ การประมาณความหนาแน่นเคอร์เนลยังถูกใช้ในการแทรกสอดรูทีน Head Bang ในการประมาณฟังก์ชันความหนาแน่นการเดินทางไปยังสถานที่เกิดเหตุแบบสองมิติ และในการประมาณการเดินทางไปยังสถานที่เกิดเหตุแบบเบย์เซียนสามมิติ
- ในELKIฟังก์ชันความหนาแน่นเคอร์เนลสามารถพบได้ในแพ็กเกจ
de.lmu.ifi.dbs.elki.math.statistics.kernelfunctions - ใน ผลิตภัณฑ์ ของ ESRIการสร้างแผนที่ความหนาแน่นของเคอร์เนลจะถูกจัดการจากกล่องเครื่องมือ Spatial Analyst และใช้เคอร์เนล Quartic (biweight)
- ในโปรแกรม Excelสมาคมเคมีแห่งราชวงศ์อังกฤษได้สร้างส่วนเสริมเพื่อใช้ในการประมาณความหนาแน่นของเคอร์เนลโดยอิงจากเอกสาร สรุปทางเทคนิคฉบับที่ 4 ของคณะกรรมการวิธีการวิเคราะห์ ของพวกเขา
- ในgnuplotการประมาณความหนาแน่นของเคอร์เนลจะถูกนำไปใช้โดย
smooth kdensityตัวเลือก โดยไฟล์ข้อมูลสามารถมีน้ำหนักและแบนด์วิดท์สำหรับแต่ละจุด หรือแบนด์วิดท์สามารถตั้งค่าโดยอัตโนมัติ[ 28 ]ตาม "กฎทั่วไปของซิลเวอร์แมน" (ดูด้านบน) - ในภาษา Haskellความหนาแน่นของเคอร์เนลถูกนำไปใช้ในแพ็กเกจ statistics
- ในIGOR Proการประมาณความหนาแน่นของเคอร์เนลนั้นดำเนินการโดยใช้
StatsKDEวิธีการคำนวณ (เพิ่มเข้ามาใน Igor Pro 7.00) แบนด์วิดท์สามารถกำหนดโดยผู้ใช้หรือประมาณโดยใช้วิธี Silverman, Scott หรือ Bowmann และAzzaliniประเภทของเคอร์เนลได้แก่: Epanechnikov, Bi-weight, Tri-weight, Triangular, Gaussian และ Rectangular - ในภาษา Javaแพ็ก เกจการเรียนรู้ของเครื่อง Wekaมีเมธอดweka.estimators.KernelEstimatorและเมธอดอื่นๆ อีกมากมาย
- ในJavaScriptแพ็กเกจการแสดงภาพข้อมูลD3.jsมีแพ็กเกจ KDE ในแพ็กเกจ science.stats ของมัน
- ในJMPแพลตฟอร์ม Graph Builder ใช้การประมาณความหนาแน่นเคอร์เนลเพื่อสร้างแผนภูมิเส้นชั้นความสูงและบริเวณความหนาแน่นสูง (HDR) สำหรับความหนาแน่นแบบสองตัวแปร และแผนภูมิไวโอลินและ HDR สำหรับความหนาแน่นแบบตัวแปรเดียว ตัวเลื่อนช่วยให้ผู้ใช้สามารถปรับแบนด์วิดท์ได้ นอกจากนี้ แพลตฟอร์ม Fit Y by X และ Distribution ยังให้การประมาณความหนาแน่นเคอร์เนลแบบสองตัวแปรและตัวแปรเดียวตามลำดับด้วย
- ในภาษา Juliaการประมาณความหนาแน่นของเคอร์เนลนั้นถูกนำไปใช้ในแพ็กเกจKernelDensity.jl
- ในKNIMEสามารถสร้างและพล็อตการแจกแจงความหนาแน่นเคอร์เนลแบบ 1 มิติและ 2 มิติได้โดยใช้โหนดจาก ส่วนสนับสนุนของชุมชน Vernalisเช่นโหนดพล็อตความหนาแน่นเคอร์เนลแบบ 1 มิติเป็นต้น การใช้งานพื้นฐานเขียนด้วยภาษาJava
- ในMATLABการประมาณความหนาแน่นของเคอร์เนลจะถูกนำไปใช้ผ่าน
ksdensityฟังก์ชัน (Statistics Toolbox) ตั้งแต่เวอร์ชัน 2018a ของ MATLAB สามารถระบุแบนด์วิดท์และเคอร์เนลสมูทเตอร์ได้ รวมถึงตัวเลือกอื่นๆ เช่น การระบุช่วงของความหนาแน่นของเคอร์เนล[ 29 ]หรืออีกทางหนึ่ง แพ็คเกจซอฟต์แวร์ MATLAB ฟรีที่ใช้เมธอดการเลือกแบนด์วิดท์อัตโนมัติ[ 6 ]ก็มีให้ใช้งานจาก MATLAB Central File Exchange สำหรับ- ข้อมูล 1 มิติ
- ข้อมูล 2 มิติ
- ข้อมูล n มิติเก็บถาวรเมื่อ 2017-02-09 ที่Wayback Machine กล่องเครื่องมือ MATLAB ฟรีพร้อมการใช้งานการถดถอยเคอร์เนล การประมาณความหนาแน่นเคอร์เนล การประมาณฟังก์ชันอันตรายเคอร์เนล และอื่นๆ อีกมากมายมีให้ใช้งานในหน้าเหล่านี้ (กล่องเครื่องมือนี้เป็นส่วนหนึ่งของหนังสือ[ 30 ] )
- ในMathematicaการประมาณความหนาแน่นเคอร์เนลเชิงตัวเลขจะถูกนำไปใช้โดยฟังก์ชัน
SmoothKernelDistribution[ 31 ]และการประมาณเชิงสัญลักษณ์จะถูกนำไปใช้โดยใช้ฟังก์ชันKernelMixtureDistribution[ 32 ]ซึ่งทั้งสองอย่างนี้ให้แบนด์วิดท์ที่ขับเคลื่อนด้วยข้อมูล - ในMinitabสมาคมเคมีแห่งราชวงศ์ได้สร้างมาโครเพื่อเรียกใช้การประมาณความหนาแน่นของเคอร์เนลโดยอิงจากเอกสารสรุปทางเทคนิคของคณะกรรมการวิธีการวิเคราะห์ฉบับที่ 4 [ 33 ]
- ในไลบรารี NAGการประมาณความหนาแน่นของเคอร์เนลจะถูกนำไปใช้ผ่าน
g10baรูทีน (มีให้ใช้งานทั้งในเวอร์ชัน Fortran [ 34 ]และ C [ 35 ]ของไลบรารี) - ในNuklei วิธีการหาความหนาแน่นของเคอร์เนลใน ภาษาC++จะเน้นที่ข้อมูลจากกลุ่มยูคลิดพิเศษ (Special Euclidean group )
- ในOctaveการประมาณความหนาแน่นของเคอร์เนลนั้นดำเนินการโดยใช้
kernel_densityตัวเลือก (จากแพ็กเกจ econometrics) - ในOriginสามารถสร้างกราฟความหนาแน่นเคอร์เนล 2 มิติได้จากส่วนติดต่อผู้ใช้ และสามารถใช้ฟังก์ชันสองฟังก์ชัน ได้แก่ Ksdensity สำหรับ 1 มิติ และ Ks2density สำหรับ 2 มิติ จากLabTalk ที่เก็บถาวรไว้เมื่อวันที่ 19 ตุลาคม 2014 ในWayback Machine , Pythonหรือโค้ดC ได้
- ในภาษา Perlสามารถพบการใช้งานได้ในโมดูล Statistics-KernelEstimation
- ในPHPสามารถพบการใช้งานได้ในไลบรารี MathPHP
- ในPythonมีการใช้งานอยู่หลายแบบ ได้แก่ โมดูล pyqt_fit.kdeในแพ็คเกจ PyQt-Fit , SciPy (
scipy.stats.gaussian_kde), Statsmodels (KDEUnivariateและKDEMultivariate) และscikit-learn (KernelDensity) (ดูการเปรียบเทียบ[ 36 ] ) KDEpyรองรับข้อมูลถ่วงน้ำหนัก และการใช้งาน FFT ของมันเร็วกว่าการใช้งานอื่นๆ หลายเท่า ไลบรารี pandas ที่ใช้กันทั่วไป[1]ให้การสนับสนุนการพล็อต kde ผ่านเมธอด plot (df.plot(kind='kde')[2] ) แพ็คเกจ getdistสำหรับตัวอย่าง MCMC ที่ถ่วงน้ำหนักและมีความสัมพันธ์กัน รองรับแบนด์วิดท์ที่ปรับให้เหมาะสม การแก้ไขขอบเขต และวิธีการลำดับสูงกว่าสำหรับการกระจายแบบ 1 มิติและ 2 มิติ แพ็คเกจที่ใช้ใหม่สำหรับการประมาณความหนาแน่นของเคอร์เนลคือ seaborn (import seaborn as sns,sns.kdeplot()) [ 37 ]นอกจากนี้ยังมีการใช้งาน KDE บน GPU ด้วย[ 38 ] - ในRฟังก์ชันนี้ถูกนำไปใช้ผ่าน
densityการแจกแจงพื้นฐาน และbw.nrd0ฟังก์ชันนี้ถูกใช้ในแพ็คเกจ stats โดยฟังก์ชันนี้ใช้สูตรที่ปรับให้เหมาะสมที่สุดในหนังสือของ Silvermanbkdeในไลบรารี KernSmoothในParetoDensityEstimationไลบรารีDataVisualizations (สำหรับ การประมาณความหนาแน่น ของการแจกแจงแบบ Pareto )kdeในไลบรารี ksและdkdenในdbckdenไลบรารีevmix (สำหรับประมาณความหนาแน่นของเคอร์เนลที่แก้ไขขอบเขตสำหรับช่วงการรองรับที่มีขอบเขต)npudensในไลบรารี np (ข้อมูลตัวเลขและข้อมูลเชิงหมวดหมู่ )sm.densityในไลบรารี smสำหรับการใช้งาน ฟังก์ชันที่ไม่จำเป็นต้องติดตั้งแพ็คเกจหรือไลบรารีใดๆ โปรดดูที่ kde.Rไลบรารีbtbซึ่งใช้สำหรับการวิเคราะห์เมืองโดยเฉพาะ ใช้การประมาณความหนาแน่นของเคอร์เนลผ่านkde.Rฟังก์ชันนี้kernel_smoothing - ในSASสามารถ
proc kdeใช้เพื่อประมาณความหนาแน่นของเคอร์เนลแบบตัวแปรเดียวและแบบสองตัวแปรได้ - ในApache Sparkคลาส[
KernelDensity()39 ] - ในStataจะมีการนำไปใช้ผ่านทาง
kdensity[ 40 ] ตัวอย่างเช่นhistogram x, kdensityหรืออีกทางเลือกหนึ่งคือมีโมดูล KDENS ฟรีสำหรับ Stata [ 41 ]ซึ่งช่วยให้ผู้ใช้สามารถประมาณฟังก์ชันความหนาแน่น 1 มิติหรือ 2 มิติได้ - ในภาษา Swiftฟังก์ชันนี้ถูกนำไปใช้ผ่านทาง
SwiftStats.KernelDensityEstimationไลบรารีสถิติแบบโอเพนซอร์สที่ชื่อว่าSwiftStats
ดูเพิ่มเติม
- เคอร์เนล (สถิติ)
- การปรับเรียบเคอร์เนล
- การถดถอยเคอร์เนล
- การประมาณความหนาแน่น (พร้อมการนำเสนอตัวอย่างอื่นๆ)
- การเลื่อนค่าเฉลี่ย
- ปริภูมิมาตราส่วน : สามสิ่ง {( x , h , KDE ที่มีแบนด์วิดท์hประเมินที่x : ทุกx , h > 0} ก่อให้เกิดการแสดงข้อมูลในปริภูมิมาตราส่วน
- การประมาณความหนาแน่นเคอร์เนลแบบหลายตัวแปร
- การประมาณความหนาแน่นเคอร์เนลแบบแปรผัน
- การหักหัว/หาง
อ่านเพิ่มเติม
- ฮาร์เดิล, โวล์ฟกัง; มึลเลอร์, มาร์ลีน; สแปร์ลิช, สเตฟาน; แวร์วัตซ์, แอ็กเซล (2004) แบบ จำลองที่ไม่ใช่พารามิเตอร์และกึ่งพารามิเตอร์ซีรี่ส์ Springer ในสถิติ เบอร์ลิน ไฮเดลเบิร์ก: สปริงเกอร์-แวร์แลก หน้า 39–83 ISBN 978-3-540-20722-1.
ลิงก์ภายนอก
- บทนำเกี่ยวกับการประมาณความหนาแน่นเคอร์เนลบทแนะนำสั้นๆ ที่ชี้ให้เห็นถึงประโยชน์ของการประมาณความหนาแน่นเคอร์เนลเมื่อเทียบกับฮิสโตแกรม
- การเพิ่มประสิทธิภาพแบนด์วิดท์เคอร์เนลเครื่องมือออนไลน์ฟรีที่สร้างค่าประมาณความหนาแน่นของเคอร์เนลที่เหมาะสมที่สุด
- ซอฟต์แวร์ออนไลน์ฟรี (เครื่องคำนวณ)คำนวณค่าประมาณความหนาแน่นเคอร์เนลสำหรับอนุกรมข้อมูลตามเคอร์เนลต่อไปนี้: เกาส์เซียน, เอพาเนชนิคอฟ, สี่เหลี่ยมผืนผ้า, สามเหลี่ยม, ไบเวท, โคไซน์ และออปโตโคไซน์
- แอปเพล็ตการประมาณความหนาแน่นเคอร์เนลตัวอย่างแบบโต้ตอบออนไลน์ของการประมาณความหนาแน่นเคอร์เนล ต้องใช้ .NET 3.0 หรือเวอร์ชันที่ใหม่กว่า
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การประมาณความหนาแน่นเคอร์เนล
ใน ทางสถิติ การ ประมาณความหนาแน่นเคอร์เนล ( KDE ) คือการประยุกต์ใช้ การปรับ เรียบเคอร์เนล สำหรับ การประมาณความหนาแน่นความน่าจะเป็น กล่าว คือวิธีการ ที่ไม่ใช้พารามิเตอร์ ใน...
คำนิยาม
ให้เป็นตัวอย่าง อิสระและมีการกระจายเหมือนกัน ที่ดึงมาจากการแจกแจงแบบเอกตัวแปรที่มี ความหนาแน่น ที่ไม่ทราบค่า f ที่จุด x ใดๆ เราสนใจที่จะประมาณรูปร่างของฟังก์ชัน f นี้ ตัวประมาณความหนาแน่นเคอร์เนล ของมันคือ โดยที่ K คือ เคอร์เนล ซึ่งเป็นฟังก์ชันที่ไม่เป็นลบ...
ตัวอย่าง
การประมาณค่าความหนาแน่นของเคอร์เนลมีความสัมพันธ์อย่างใกล้ชิดกับ ฮิสโตแกรม แต่สามารถเพิ่มคุณสมบัติต่างๆ เช่น ความเรียบเนียนหรือความต่อเนื่องได้โดยการใช้เคอร์เนลที่เหมาะสม แผนภาพด้านล่างนี้ซึ่งสร้างขึ้นจากจุดข้อมูล 6 จุด แสดงให้เห็นถึงความสัมพันธ์นี้:
การเลือกแบนด์วิดท์
แบน ด์วิดท์ ของเคอร์เนลเป็น พารามิเตอร์อิสระ ที่มีอิทธิพลอย่างมากต่อค่าประมาณที่ได้ เพื่อแสดงให้เห็นถึงผลกระทบนี้ เราจึงใช้ ตัวอย่างสุ่ม จำลอง จาก1 การแจกแจงปกติ มาตรฐาน (แสดงด้วยจุดสีน้ำเงินใน กราฟแบบ Rug Plot บนแกนแนวนอน)...