พื้นที่ภายใต้“ pdf” ในการประมาณความหนาแน่นของเคอร์เนลใน R


15

ฉันพยายามใช้ฟังก์ชัน ' ความหนาแน่น ' ใน R เพื่อทำการประมาณความหนาแน่นของเคอร์เนล ฉันมีความยากลำบากการตีความผลและเปรียบเทียบชุดข้อมูลต่างๆที่ดูเหมือนว่าพื้นที่ใต้เส้นโค้งไม่จำเป็นต้อง 1. สำหรับใด ๆฟังก์ชั่นความหนาแน่นของความน่าจะเป็น (PDF) , เราจำเป็นต้องมีพื้นที่- φ ( x ) d x = 1 ฉันสมมติว่าการประมาณความหนาแน่นของเคอร์เนลรายงาน pdf ฉันใช้integrate.xyจากsfsmiscเพื่อประเมินพื้นที่ใต้เส้นโค้งφ(x)-φ(x)dx=1

> # generate some data
> xx<-rnorm(10000)
> # get density
> xy <- density(xx)
> # plot it
> plot(xy)

พล็อตของความหนาแน่น

> # load the library
> library(sfsmisc)
> integrate.xy(xy$x,xy$y)
[1] 1.000978
> # fair enough, area close to 1
> # use another bw
> xy <- density(xx,bw=.001)
> plot(xy)

ความหนาแน่นด้วย bw = .001

> integrate.xy(xy$x,xy$y)
[1] 6.518703
> xy <- density(xx,bw=1)
> integrate.xy(xy$x,xy$y)
[1] 1.000977
> plot(xy)

ความหนาแน่นด้วย bw = 1

> xy <- density(xx,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 6507.451
> plot(xy)

ความหนาแน่นด้วย bw = 1e-6

พื้นที่ใต้เส้นโค้งไม่ควรเป็น 1 หรือไม่? ดูเหมือนว่าแบนด์วิดท์ขนาดเล็กเป็นปัญหา แต่บางครั้งคุณต้องการแสดงรายละเอียดอื่น ๆ ในส่วนท้ายและแบนด์วิดท์ขนาดเล็กเป็นสิ่งจำเป็น

Update / คำตอบ:

220

> xy <- density(xx,n=2^15,bw=.001)
> plot(xy)

ความหนาแน่นด้วยจำนวนจุดตัวอย่างที่สูงขึ้น

> integrate.xy(xy$x,xy$y)
[1] 1.000015
> xy <- density(xx,n=2^20,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 2.812398


3
ดูเหมือนว่าข้อ จำกัด ของจุดลอยตัวในความหนาแน่น (): ในการใช้แบนด์วิดท์ 1e-6 คุณกำลังสร้างคอลเลกชัน 10,000 ครั้ง (โดยทางทฤษฎี) จำนวน 10,000 ครั้งแต่ละมวลรวม 1/10000 ปลายแหลมเหล่านั้นถูกแทนที่ด้วยยอดเขาเป็นหลักโดยไม่มีช่องว่างที่โดดเด่นพอสมควร คุณแค่เพิ่มความหนาแน่น () เกินขีด จำกัด
whuber

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

n

1

@ Anony-Mousse ใช่นั่นคือสิ่งที่คำถามนี้ถาม ทำไมถึงไม่ประเมินเป็น 1
highBandWidth

คำตอบ:


9

คิดเกี่ยวกับกฎสี่เหลี่ยมคางหมูintegrate.xy()ใช้ สำหรับการกระจายปกติก็จะประมาทพื้นที่ใต้เส้นโค้งในช่วงเวลา (-1,1) ซึ่งมีความหนาแน่นเว้า (และด้วยเหตุนี้สอดแทรกเชิงเส้นต่ำกว่าความหนาแน่นของจริง) และประเมินค่าสูงไว้ที่อื่น (เป็นเชิงเส้นไป ด้านบนของความหนาแน่นจริง) เนื่องจากขอบเขตหลังมีขนาดใหญ่กว่า (ในหน่วยวัด Lesbegue หากต้องการ) กฎสี่เหลี่ยมคางหมูจึงมีแนวโน้มที่จะประเมินค่าอินทิกรัล ทีนี้เมื่อคุณย้ายไปใช้แบนด์วิดท์ที่เล็กลงการประมาณของคุณทั้งหมดเป็นแบบนูนเป็นชิ้น ๆ โดยมีเดือยแคบจำนวนมากที่สอดคล้องกับจุดข้อมูลและหุบเขาระหว่างพวกเขา นั่นคือสิ่งที่กฎรูปสี่เหลี่ยมคางหมูแตกหักโดยเฉพาะอย่างยิ่งไม่ดี


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

1
คำอธิบายนี้ไม่ได้ถือน้ำ ปัญหาคือความหนาแน่นไม่สามารถแยกออกได้ไม่ว่ากฎสี่เหลี่ยมคางหมูจะพังลงอย่างไม่ดี integr () นั้นทำอะไรไม่ถูกเพื่อให้ได้คำตอบที่ถูกต้องเพราะความหนาแน่น () ไม่ได้สร้างการแสดงที่ถูกต้อง หากต้องการดูสิ่งนี้เพียงแค่ตรวจสอบ xy $ x: มันมีเพียง 512 ค่าที่มีไว้เพื่อเป็นตัวแทนของหนามแหลม 10,000 อัน!
whuber

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

1
@ สูงไม่; กฎสี่เหลี่ยมคางหมูทำงานได้ดี ปัญหาคือว่ามันทำงานกับ discandization ที่ไม่ถูกต้องของ integrand คุณไม่สามารถมี "เดือยแหลมแคบจำนวนมากที่สอดคล้องกับจุดข้อมูล" เมื่อมี 10,000 จุดข้อมูลและเพียง 512 ค่าในอาร์เรย์ความหนาแน่น!
whuber

1
มองไปที่กราฟเหล่านี้ตอนนี้ฉันคิดว่าปัญหาอยู่ที่มีมากกว่าdensity integrate.xyด้วย N = 10,000 และ bw = 1e-6 คุณจะต้องเห็นหวีที่มีความสูงของฟันแต่ละซี่ประมาณ 1e6 และฟันที่มีความหนาแน่นประมาณ 0 แต่คุณยังคงเห็นเส้นโค้งรูประฆังที่เป็นที่รู้จัก ดังนั้นdensityที่คุณโกงหรืออย่างน้อยก็ควรจะใช้แตกต่างกันที่มีแบนด์วิดท์ขนาดเล็ก: nควรจะเกี่ยวกับ (ช่วงของข้อมูล) / (BW) n=512แทนที่จะเริ่มต้น ผู้รวบรวมจะต้องยกหนึ่งในค่าที่ยิ่งใหญ่เหล่านี้ซึ่งdensityจะส่งกลับโดยบังเอิญที่ไม่มีความสุข
StasK

-1

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

L2[φ(x)-]+


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