这是我对R社区的第一篇文章,所以请原谅我。我想在ggplot2中使用函数geom_density2d和stat_density2d绘制内核密度估计值,但问题是它们无法处理加权数据。据我了解,这两个函数从软件包MASS中调用函数kde2d进行内核密度估计。而且kde2d不会将数据权重作为参数。
现在,我在http://www.inside-r.org/node/226757上找到了kde2d的此更改版本,该版本将权重作为参数并基于kde2d的源代码。该函数的代码:
kde2d.weighted <- function (x, y, w, h, n = 25, lims = c(range(x), range(y))) {
nx <- length(x)
if (length(y) != nx)
stop("data vectors must be the same length")
if (length(w) != nx & length(w) != 1)
stop("weight vectors must be 1 or length of data")
gx <- seq(lims[1], lims[2], length = n) # gridpoints x
gy <- seq(lims[3], lims[4], length = n) # gridpoints y
if (missing(h))
h <- c(bandwidth.nrd(x), bandwidth.nrd(y));
if (missing(w))
w <- …Run Code Online (Sandbox Code Playgroud)