R 如何从ecdfplot()中提取ecdf值
如果我使用R 如何从ecdfplot()中提取ecdf值,r,extract,extraction,lattice,ecdf,R,Extract,Extraction,Lattice,Ecdf,如果我使用latticeExtra软件包的ecdfplot()函数,如何计算实际值,即与~x | g输入相对应的y值 我一直在看?ecdfplot,但没有对它的描述。对于通常的高级函数ecdf()它与命令plot=FALSE一起工作,但这不适用于ecdfplot() 我想使用ecdfplot()而不是ecdf()的原因是我需要计算分组变量的ecdf()值。我知道我也可以做这件事,但我很确信,还有一条路要走 这是一个小样本 u <- rnorm(100,0,1) mygroup <-
latticeExtra
软件包的ecdfplot()
函数,如何计算实际值,即与~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)
u我知道您说过不想使用ecdf
,但在这种情况下,使用它要比从ecdfplot
返回的对象中获取数据容易得多。(毕竟,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))
(请注意,如果每个组中的值的数量不相同,则最终将成为一个列表,而不是一个包含列的矩阵)。如果您坚持使用基本包中的ecdf()函数,则只需执行以下操作:
使用数据创建ecdf函数:
fun.ecdf <- ecdf(x) # x is a vector of your data
fun.ecdf您能否提供一个ecdfplot
的列表,以及您是如何使用它的?这会使你的问题更容易回答。好的,我会很快编辑一个。我当时可能采取了更困难的方法:)不客气。顺便说一下,如果这回答了你的问题,你可以。没问题。顺便说一句(这不是给你压力或责骂),我碰巧注意到你问的其他一些问题都有很好的答案,但没有被接受。如果你真的接受了他们(尽管你没有义务这么做),你会得到一些声誉积分,奖励那些帮助过你的人,并确保将来阅读你的问题的人知道什么有用。哦,好吧,这对我来说是个坏消息。也许我还能接受:)我去看看。我不太喜欢猎点,但如果其他人从中受益,那肯定很重要。所以我接受了所有其他的答案:)。关于您的答案,我再问一个简短的问题:我将得到与ecdf函数对应的分组变量ny值的每个因子。但在这个例子中,每组只得到n1=n2=50个观察值。我是否知道从您提供的表格中获取对应于分组因子的y值,即如果x1来自组1,我将获取左边的值,如果x2来自组2,我将获取右边的值?但是,对于50列变量,您是如何做到这一点的呢?@ElChapodata
my.ecdf <- fun.ecdf(sort(x))