หากความสนใจหลักของคุณคือปัญหา 2 มิติฉันจะบอกว่าการประมาณความหนาแน่นของเคอร์เนลเป็นตัวเลือกที่ดีเพราะมันมีคุณสมบัติเชิงเส้นกำกับที่ดี (โปรดสังเกตว่าฉันไม่ได้บอกว่ามันดีที่สุด) ดูตัวอย่าง
Parzen, E. (1962) การประมาณของฟังก์ชั่นความหนาแน่นของความน่าจะเป็นและโหมด พงศาวดารของคณิตศาสตร์สถิติ 33: 1065-1076
de Valpine, P. (2004) Monte Carlo โอกาสเกิดสภาพพื้นที่โดยการถ่วงน้ำหนักหลังเคอร์เนลประมาณความหนาแน่น วารสารสมาคมสถิติอเมริกัน 99: 523-536
สำหรับมิติที่สูงขึ้น (4 +) วิธีนี้คือจริงๆช้าเนื่องจากความยากลำบากที่รู้จักกันดีในการประมาณเมทริกซ์แบนด์วิดธ์ที่ดีที่สุดเห็น
ตอนนี้ปัญหาเกี่ยวกับคำสั่งks
ในแพคเกจKDE
ก็คือตามที่คุณกล่าวถึงว่ามันประเมินความหนาแน่นในตารางเฉพาะซึ่งสามารถ จำกัด ได้มาก ปัญหานี้สามารถแก้ไขได้ถ้าคุณใช้แพคเกจKDE
สำหรับการประเมินเมทริกซ์แบนด์วิดธ์ที่ใช้เช่นHscv
ดำเนินการมีความหนาแน่นประมาณ Kernel optim
แล้วเพิ่มฟังก์ชั่นนี้โดยใช้คำสั่ง R
นี้แสดงอยู่ด้านล่างโดยใช้ข้อมูลจำลองและเคอร์เนลเสียนใน
rm(list=ls())
# Required packages
library(mvtnorm)
library(ks)
# simulated data
set.seed(1)
dat = rmvnorm(1000,c(0,0),diag(2))
# Bandwidth matrix
H.scv=Hlscv(dat)
# [Implementation of the KDE](http://en.wikipedia.org/wiki/Kernel_density_estimation)
H.eig = eigen(H.scv)
H.sqrt = H.eig$vectors %*% diag(sqrt(H.eig$values)) %*% solve(H.eig$vectors)
H = solve(H.sqrt)
dH = det(H.scv)
Gkde = function(par){
return( -log(mean(dmvnorm(t(H%*%t(par-dat)),rep(0,2),diag(2),log=FALSE)/sqrt(dH))))
}
# Optimisation
Max = optim(c(0,0),Gkde)$par
Max
ตัวประมาณรูปร่างที่ จำกัด มักจะเร็วกว่าตัวอย่างเช่น
Cule, ML, Samworth, RJ และ Stewart, MI (2010) การประมาณค่าความน่าจะเป็นสูงสุดของหลายมิติความหนาแน่นของการเข้าสู่ระบบเว้า วารสารสมาคมสถิติรอยัล B 72: 545–600
แต่พวกเขาแหลมเกินไปสำหรับจุดประสงค์นี้
4
วิธีการอื่น ๆ ที่คุณอาจพิจารณาใช้คือ: ปรับส่วนผสมที่มีหลายตัวแปรของ normals (หรือการแจกแจงแบบยืดหยุ่นอื่น ๆ ) หรือ
Abraham, C. , Biau, G. และ Cadre, B. (2003) การประมาณค่าที่เรียบง่ายของรูปแบบของความหนาแน่นของหลายตัวแปร วารสารสถิติแคนาดา 31: 23–34
ฉันหวังว่านี่จะช่วยได้.