我有许多数字变量的数据框。有没有一种方法可以计算(不绘制)比其他密度低的全局密度区域?换句话说,有没有一种方法可以定位超空间中数据点非常稀疏的区域?
问问题
62 次
1 回答
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
要组合所有坐标(此处x
和y
),我将创建一个带有坐标及其密度的数据框,并根据密度值对其进行过滤。
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)
于 2018-04-10T13:35:22.377 回答