มีแบนด์วิดธ์ที่เหมาะสมที่สุดสำหรับการประมาณความหนาแน่นเคอร์เนลของอนุพันธ์หรือไม่?


14

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

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

ประการที่สองสำหรับอนุพันธ์ของ KDE ฉันควรเลือกแบนด์วิดธ์เดียวกันหรือไม่


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

คำตอบ:


15

แบนด์วิดท์ที่เหมาะสมที่สุดสำหรับการประมาณอนุพันธ์จะแตกต่างจากแบนด์วิดท์สำหรับการประมาณความหนาแน่น โดยทั่วไปคุณสมบัติทุกอย่างของความหนาแน่นจะมีตัวเลือกแบนด์วิธที่เหมาะสมที่สุด

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

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

เมื่อมีการกำหนดค่าประมาณจะกำหนดว่าตัวเลือกแบนด์วิดท์ดีแค่ไหน วิธีการที่หยาบที่สุดเรียกว่า "กฎอ้างอิงปกติ" ซึ่งกำหนดให้การประมาณค่าอยู่ในระดับสูง จุดสิ้นสุดของมาตรา 2.10 ใน Hansen (2009) ให้สูตรโดยใช้วิธีการนี้ วิธีการนี้ใช้ในhns()ฟังก์ชั่นจากksแพ็คเกจบน CRAN นั่นอาจเป็นวิธีที่ดีที่สุดถ้าคุณไม่ต้องการเขียนโค้ดของคุณเอง ดังนั้นคุณสามารถประมาณอนุพันธ์ของความหนาแน่นดังนี้ (ใช้ks):

library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)

วิธีการที่ดีกว่าหรือที่รู้จักกันทั่วไปว่าเป็นตัวเลือก "เสียบโดยตรง" จะกำหนดค่าประมาณในระดับที่ต่ำกว่า สำหรับการประมาณค่าความหนาแน่นตรงนี้เป็น Sheather โจนส์วิธีการดำเนินการใน R density(x,bw="SJ")โดยใช้ อย่างไรก็ตามฉันไม่คิดว่าจะมีสิ่งอำนวยความสะดวกที่คล้ายกันในแพ็คเกจ R สำหรับการประมาณอนุพันธ์

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

den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth

ขอบคุณหนึ่งล้าน Rob ฉันจะใช้แบนด์วิดท์ SJ สำหรับการประมาณความหนาแน่น
user13154

สำหรับการประมาณค่าอนุพันธ์หากฉันใช้ h <- hns (x); den <- kdde (x, h = h, deriv.order = 1) คือ h แบนด์วิดท์ที่เหมาะสมที่สุดที่ใช้สำหรับการประมาณ ฉันถามสิ่งนี้เพราะเลือก h <- hns (x) โดยไม่ระบุลำดับอนุพันธ์ ขอบคุณ
user13154

ฉันตรวจสอบสูตรที่กำหนดในตอนท้ายของหัวข้อ 2.10 ใน Hansen (2009) ดูเหมือนว่าแบนด์วิดท์ขึ้นอยู่กับลำดับของอนุพันธ์พูดว่าอนุพันธ์ rth h <- hns (x) ดูเหมือนจะไม่ขึ้นอยู่กับ r
user13154

ฉันเพิ่งค้นพบว่าฟังก์ชั่น hns มีอาร์กิวเมนต์ derivate order ซึ่งฉันสามารถระบุลำดับของอนุพันธ์ได้ ขอบคุณอีกครั้งมาก ๆ Rob
user13154

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