【问题标题】:Computing the Tukey median计算 Tukey 中位数
【发布时间】:2020-11-22 19:41:35
【问题描述】:

我正在尝试使用以下函数计算两个变量的数据深度:

library(depth)
x <- data.frame(data$`math score`, data$`reading score`)


depth(1000, x, method = "Tukey", approx = FALSE, eps = 1e-8, ndir = 1000)

depth 后面的第一个变量是 u,代表要计算深度的数值向量。维度必须与观测值相同。 我有 1000 个观察结果,但是我收到以下错误消息:

Error in depth(1000, x, method = "Tukey", approx = FALSE, eps = 1e-08,  : 
  Dimension mismatch between the data and the point u.

有人知道如何解决这个问题吗? 提前谢谢!

【问题讨论】:

  • 由于我们无权访问您的数据,能否给我们一个minimal reproducible example
  • 这样可以吗:data(mtcars)?
  • @Chiara 差不多。看看你是否可以用mtcars 复制错误。然后你就会有一个我们可以处理的可重现的例子。

标签: r median tukey


【解决方案1】:

如果您查看函数 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_scorereading_score 是您想知道深度的测试值.

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 2021-08-17
    • 2021-12-19
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2011-07-21
    相关资源
    最近更新 更多