如果我使用 ecdfplot()
包的 latticeExtra
函数,我如何获得计算的实际值,即对应于 ~x|g
输入的 y 值?
我一直在查看 ?ecdfplot
但没有对其进行描述。对于通常的高级函数 ecdf()
它与命令 plot=FALSE
一起工作,但这对 ecdfplot()
不起作用。
我想使用 ecdfplot()
而不是 ecdf()
的原因是我需要计算分组变量的 ecdf()
值。我知道我也可以做到这一点,但我非常确信也有一条高速公路。
这里有一个小例子
u <- rnorm(100,0,1)
mygroup <- c(rep("group1",50),rep("group2",50))
ecdfplot(~u, groups=mygroup)
我想提取给定每个组的 y 值以获得相应的 x 值。
最佳答案
我知道你说过你不想使用 ecdf
,但在这种情况下,使用它比从 ecdfplot
返回的 trellis 对象中获取数据要容易得多。 (毕竟,这就是 ecdfplot
正在做的 - 它只是在幕后做的)。
在您的示例中,以下内容将为您提供每个 ECDF 的 y 值矩阵(其中 x
是您的整个输入 u
,但您可以选择不同的):
ecdfs = lapply(split(u, mygroup), ecdf)
ys = sapply(ecdfs, function(e) e(u))
# output:
# group1 group2
# [1,] 0.52 0.72
# [2,] 0.68 0.78
# [3,] 0.62 0.78
# [4,] 0.66 0.78
# [5,] 0.72 0.80
# [6,] 0.86 0.94
# [7,] 0.10 0.26
# [8,] 0.90 0.94
# ...
ETA:如果您只希望每列对应于该列中的 50 个 x 值,您可以执行以下操作:
ys = sapply(split(u, mygroup), function(g) ecdf(g)(g))
(请注意,如果每组中的值数量不相同,则最终将作为列表而不是带有列的矩阵)。
关于r - 如何从 ecdfplot() 中提取 ecdf 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12169502/