R上ecdf()和ecdf()的差异

R上ecdf()和ecdf()的差异,r,R,我试图绘制这种数据集。我试过使用Ecdf() 库(Hmisc) ddEcdf返回一个列表,而Ecdf返回一个函数: > set.seed(1) > ch <- rnorm(1000, 200, 40) > Echol <- Ecdf(ch, xlab="Serum Cholesterol") > e.chol <- ecdf(ch) > str(Echol) List of 2 $ x: num [1:1001] 79.7 79.7 80.1 8

我试图绘制这种数据集。我试过使用Ecdf()

库(Hmisc)

dd
Ecdf
返回一个列表,而
Ecdf
返回一个函数:

> set.seed(1)
> ch <- rnorm(1000, 200, 40)
> Echol <- Ecdf(ch, xlab="Serum Cholesterol")
> e.chol <- ecdf(ch)
> str(Echol)
List of 2
 $ x: num [1:1001] 79.7 79.7 80.1 82.4 84.4 ...
 $ y: num [1:1001] 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 ...
 - attr(*, "N")=List of 2
  ..$ n: num 1000
  ..$ m: num 0

> e.chol <- ecdf(ch)   
> str(e.chol)
function (v)  
 - attr(*, "class")= chr [1:3] "ecdf" "stepfun" "function"
 - attr(*, "call")= language ecdf(ch)
>设置种子(1)
>总Echol e.chol str(Echol)
2人名单
$x:num[1:1001]79.779.780.182.484.4。。。
$y:num[1:1001]0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009。。。
-属性(*,“N”)=2个列表
..$n:num 1000
..$m:num 0
>e.chol str(e.chol)
功能(五)
-attr(*,“类”)=chr[1:3]“ecdf”“stepfun”函数
-attr(*,“call”)=语言ecdf(ch)

要总结下面的评论。。。ECDF的列表表示需要与函数表示不同的访问方法。所以,在处理来自
Ecdf()
的返回对象时,至少有一个错误是在
cdf$y[df$mids]
中使用df$mids。base::ecdf函数的优点在于它可以直接处理X值,而列表表示需要使用类似
findInterval()
的函数来构造适当的索引。

事实上,我以不同的方式使用它们。我们知道,问题是为什么返回不同的绘图,而它们必须返回相同的输出?如果从干净的会话开始,第一个代码部分会出错。您可能混淆了您的对象,因为您在两个测试部分中对它们的命名相同。这里使用相同的名称只是为了简单起见。我的实际代码名以不同的方式显示变量,我没有得到任何类型的错误。在评估累积分布时,可能存在不同的装箱大小问题?我使用的代码创建了一个具有负值的df$mids向量。这就是错误所在。因此,它表明您不适当地将其用作索引。也许你需要使用
seq_along(df$mids)
,或者如果这不起作用,那么你需要发布一个可复制的示例。好了,现在我明白了。我的样本只有正值。您可以尝试使用帕累托分布样本。
dd<-read.table('critical.1.dat',head=F)
cdf<-ecdf(dd$V1)
df<-hist(dd$V1)
ll<-(1-cdf(df$mids))/df$density
plot(df$mids,ll)
library(Hmisc)
dd<-read.table('critical.1.dat',head=F)

cdf<-Ecdf(dd$V1)
ccdf<-ecdf(dd$V1)

df<-hist(dd$V1)

ll<-((1-cdf$y[df$mids])/(df$density))
llc<-(1-ccdf(df$mids))/df$density

par( mfrow = c( 2, 1 ) )

plot(df$mids,ll,ylab='Ecdf()')
plot(df$mids,llc,ylab='ecdf()')
> set.seed(1)
> ch <- rnorm(1000, 200, 40)
> Echol <- Ecdf(ch, xlab="Serum Cholesterol")
> e.chol <- ecdf(ch)
> str(Echol)
List of 2
 $ x: num [1:1001] 79.7 79.7 80.1 82.4 84.4 ...
 $ y: num [1:1001] 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 ...
 - attr(*, "N")=List of 2
  ..$ n: num 1000
  ..$ m: num 0

> e.chol <- ecdf(ch)   
> str(e.chol)
function (v)  
 - attr(*, "class")= chr [1:3] "ecdf" "stepfun" "function"
 - attr(*, "call")= language ecdf(ch)