我尝试使用以下函数计算两个变量的数据深度:
library(depth)
x <- data.frame(data$`math score`, data$`reading score`)
depth(1000, x, method = "Tukey", approx = FALSE, eps = 1e-8, ndir = 1000)深度之后的第一个变量是u,它代表要计算其深度的数值向量。维度必须与观察值的维度相同。我有1000个观察结果,但是我得到了以下错误消息:
Error in depth(1000, x, method = "Tukey", approx = FALSE, eps = 1e-08, :
Dimension mismatch between the data and the point u.有人知道如何解决这个问题吗?提前谢谢你!
发布于 2020-11-23 06:00:48
如果您查看函数depth的文档,它会显示:
u是要计算深度的数值向量。维度必须与观察值的维度相同。
因此,u必须是由n个分量的向量表示的多维空间中的一个点,而x必须是m×n个分量的矩阵或数据帧(m行对应m个点)。您正在将u与集合x中的所有其他多维点进行比较,以找到可以与u共享半空间的最小点数。
让我们在二维空间中创建一个非常好的例子:
library(depth)
set.seed(100)
x <- data.frame(x = c(rnorm(10, -5, 2), rnorm(10, 5, 2)), y = rnorm(20, 0, 2))
plot(x)

depth函数计算特定点相对于数据的深度。所以让我们使用原点:
u <- data.frame(x = 0, y = 0)
points(u, col = "red", pch = 16)

天真地,我们可能认为这里的原点具有10/20点的深度(即,划分此数据集的最明显的方法是通过原点的垂直线,每边有10个点,但我们发现:
depth(u, x)
#> [1] 0.35这表明有一个包含原点的半空间,它只包含0.35个点,即20个点中的7个点:
depth(u, x) * nrow(x)
#> [1] 7我们可以像这样在视觉上看到:
abline(0, -0.07)
points(x[x$y < (-0.07 * x$x),], col = "blue", pch = 16)

我们把这7个点涂成了蓝色。
所以不清楚您期望从depth函数得到什么结果,但是您需要给它一个值c(math_score, reading_score),其中math_score和reading_score是您想要知道深度的测试值。
https://stackoverflow.com/questions/64958721
复制相似问题