แบนด์วิดท์ที่เหมาะสมที่สุดสำหรับการประมาณอนุพันธ์จะแตกต่างจากแบนด์วิดท์สำหรับการประมาณความหนาแน่น โดยทั่วไปคุณสมบัติทุกอย่างของความหนาแน่นจะมีตัวเลือกแบนด์วิธที่เหมาะสมที่สุด
หากวัตถุประสงค์ของคุณคือลดข้อผิดพลาดกำลังสองเฉลี่ย (ซึ่งเป็นเกณฑ์ปกติ) จะไม่มีสิ่งใดที่เกี่ยวข้องกับเรื่องนี้ มันเป็นเรื่องของการได้รับค่าที่ลดเกณฑ์ สมการจะได้รับในมาตรา 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