R中的多变量密度计算

时间:2018-04-10 11:52:27

标签: r probability-density multivariate-partition

我有一个包含许多数字变量的数据框。有没有一种计算(而不是绘图)全球密度区域的方法,这些区域的密度低于其他区域?换句话说,是否有一种方法可以定位超空间区域,这些区域的数据点非常稀少?

1 个答案:

答案 0 :(得分:0)

假设您的数据框看起来像这样

df <- data.frame(x = c(rnorm(100,0,3),rnorm(100,12,1),rnorm(100,20,3)), 
                 y = c(rnorm(75,5,2),rnorm(75,-5,3),rnorm(140,10,2),rnorm(10,25,10)))

您可以将每个密度存储在矢量中

dsx <- density(df$x)
dsy <- density(df$y)

现在查看dsx的结果。您将看到我们得到一个包含以下内容的列表:

  • dsx$x坐标评估密度

  • dsx$y这些坐标处的估计密度

如果要查找稀疏填充区域的坐标,只需要检索与低密度相对应的坐标。

dsx$x[which(dsx$y) < 0.03] # returns coordinates for which density(x) < 0.03

要合并所有坐标(此处为xy),我会创建一个包含坐标及其密度的数据框,并根据密度值对其进行过滤。

df_ds <- data.frame(dsx$x, dsy$x, dsx$y, dsy$y)
df_ds[which((df_ds$dsx.y < 0.03) & (df_ds$dsy.y < 0.01)), c("dsx.x","dsy.x")]

默认情况下,每个坐标的512值为density。您可以通过在n中设置density来增加此步骤。务必在每个坐标上设置相同的值。

dsx <- density(df$x, n=2048)