我如何提取ECDF值超出ecdfplot的()(How do I extract ecdf valu

2019-09-21 20:26发布

如果我使用ecdfplot()的函数latticeExtra包?我如何获得即对应于y值计算出的实际值~x|g输入?

我一直在看?ecdfplot但有详细描述并不是它。 对于平时的高级功能ecdf()它的工作原理与命令plot=FALSE但是,这并不为工作ecdfplot()

我想使用的原因ecdfplot()而不是ecdf()是我需要计算ecdf()值,分组变量。 我知道我能做到这一点handish太多,但我很相信是有大路了。

这里一个小expample

u <- rnorm(100,0,1)
mygroup <- c(rep("group1",50),rep("group2",50))
ecdfplot(~u, groups=mygroup)

我想提取给定的每个组为相应的x值y值。

Answer 1:

我知道你说你不想使用ecdf ,但在这种情况下,它是容易使用它,而不是让数据出的格子该对象ecdfplot回报。 (毕竟,这是所有ecdfplot是doing-它只是做幕后)。

在您的例子中,下面将让你的y值的矩阵(其中x为你的整个输入u ,尽管你可以选择不同的功能),每个ECDF:

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))

(注意,如果各组中的值的数量是不相同的,这将最终作为列表而不是列的矩阵)。



Answer 2:

如果你坚持在基础包ECDF()函数,你可以简单地做如下:

  1. 创建与您的数据ECDF功能:

     fun.ecdf <- ecdf(x) # x is a vector of your data 
  2. 现在,用这种“ECDF功能”产生你喂养它,包括原始,已排序数据的任何载体的累积概率:

     my.ecdf <- fun.ecdf(sort(x)) 


文章来源: How do I extract ecdf values out of ecdfplot()