如果您的主要兴趣是二维问题,我会说核密度估计是一个不错的选择,因为它具有很好的渐近特性(请注意,我并不是说它是最好的)。参见例如
Parzen, E. (1962)。关于概率密度函数和模式的估计。数理统计年鉴33:1065-1076。
de Valpine, P. (2004)。加权后验核密度估计的蒙特卡洛状态空间似然。美国统计协会杂志99:523-536。
对于更高维度(4+) ,由于众所周知的难以估计最佳带宽矩阵,这种方法非常慢,请参阅。
现在,正如您所提到的,ks
包中命令的问题KDE
在于,它评估特定网格中的密度,这可能非常有限。如果您使用包来估计带宽矩阵,则可以解决此问题KDE
,例如Hscv
,使用实现内核密度估计器,然后使用命令优化此功能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在非玩具问题中。
您可以考虑使用的其他方法是:拟合正态(或其他灵活分布)的多元有限混合或
Abraham, C.、Biau, G. 和 Cadre, B. (2003)。多元密度模式的简单估计。加拿大统计杂志31:23-34。
我希望这有帮助。