如果您指定一个区域,则该区域具有与您的密度函数相关的概率。当然,单个点的概率不为零。但在这一点上它确实具有非零密度。那是什么?
密度是在正常面积测度变为零时,该面积上积分的概率密度除以正常面积测度的积分极限。 (实际上很难正确地说明这一点,需要尝试几次,但仍然不是最佳的)。
所有这些都是基本的微积分。编写一个程序来计算该区域的密度积分也相当容易,尽管我认为 MASS 有标准的方法来使用更复杂的积分技术。这是我根据您的示例汇总的一个快速例程:
library(MASS)
n <- 100
a <- rnorm(1000)
b <- rnorm(1000, sd=2)
f1 <- kde2d(a, b, n = 100)
lims <- c(min(a),max(a),min(b),max(b))
filled.contour(f1)
prob <- function(f,xmin,xmax,ymin,ymax,n,lims){
ixmin <- max( 1, n*(xmin-lims[1])/(lims[2]-lims[1]) )
ixmax <- min( n, n*(xmax-lims[1])/(lims[2]-lims[1]) )
iymin <- max( 1, n*(ymin-lims[3])/(lims[4]-lims[3]) )
iymax <- min( n, n*(ymax-lims[3])/(lims[4]-lims[3]) )
avg <- mean(f$z[ixmin:ixmax,iymin:iymax])
probval <- (xmax-xmin)*(ymax-ymin)*avg
return(probval)
}
prob(f1,0.5,1.5,-4.5,-3.5,n,lims)
# [1] 0.004788993
prob(f1,-1,1,-1,1,n,lims)
# [1] 0.2224353
prob(f1,-2,2,-2,2,n,lims)
# [1] 0.5916984
prob(f1,0,1,-1,1,n,lims)
# [1] 0.119455
prob(f1,1,2,-1,1,n,lims)
# [1] 0.05093696
prob(f1,-3,3,-3,3,n,lims)
# [1] 0.8080565
lims
# [1] -3.081773 4.767588 -5.496468 7.040882
警告,例程似乎是正确的,并且给出了合理的答案,但它没有经过任何接近我会为生产函数提供的审查。