首页 > 解决方案 > 来自 MASS R 库的加长 kde2d

问题描述

当我对来自 MASS 包的正方形上的两个点(在我的情况下为 1000 x 1000 像素)使用 kde2d 函数时,当点的 x 差异与点的 y 差异非常不同时,我得到拉长的高斯:

library(MASS)
library(tibble)

par(mfrow = c(2, 1))
points_1 <- tribble(
  ~x,  ~y,
  100, 800,
  150, 500
) # x2-x1 = 50; y2-y1 = -300

kde_1 <- kde2d(points_1$x, points_1$y, n = 50, lims = c(1, 1000, 1, 1000))

image(kde_1)

y 拉长图像

points_2 <- tribble(
  ~x,  ~y,
  100, 800,
  650, 700
) # x2-x1 = 550; y2-y1 = -100

kde_2 <- kde2d(points_2$x, points_2$y, n = 50, lims = c(1, 1000, 1, 1000))

image(kde_2)

x 拉长图像

如何获得两品脱的圆形 kde2d?我需要这样的东西:

所需图像

标签: r

解决方案


正如帮助页面kde2d所说,它将使用该函数bandwidth.nrd来计算每个坐标中的带宽。您希望它们相同,因此将h值指定为标量:

h <- mean(bandwidth.nrd(points_1$x), bandwidth.nrd(points_1$y))
kde_3 <- kde2d(points_1$x, points_1$y, h = h, n = 50, lims = c(1, 1000, 1, 1000))
image(kde_3)

这给了我

截屏

您可能需要更大的值h,例如使用max而不是mean

在此处输入图像描述


推荐阅读