Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何从ecdfplot()中提取ecdf值_R_Extract_Extraction_Lattice_Ecdf - Fatal编程技术网

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列变量,您是如何做到这一点的呢?@ElChapo
    data
    
    my.ecdf <- fun.ecdf(sort(x))