首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中实施ECDF

在R中实施ECDF
EN

Stack Overflow用户
提问于 2014-12-07 20:37:30
回答 2查看 2.1K关注 0票数 0

我正在尝试实现R函数ecdf()

我正在考虑两种情况:一种是t一维的,另一种是以t为向量的.

代码语言:javascript
复制
#First case
my.ecdf<-function(x,t) {
            indicator<-ifelse(x<=t,1,0)
            out<-sum(indicator)/length(x)
            out
    }


#Second case
my.ecdf<-function(x,t) {
    out<-length(t)
    for(i in 1:length(t)) {
            indicator<-ifelse(x<=t[i],1,0)
            out[i]<-sum(indicator)/length(t)
    }
    out
}

如何检查我是否对R函数ecdf()做了正确的事情?这个函数只使用x作为参数,因此我不能指定t的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-08 16:30:56

您只需绘制结果,就可以看到它给出了非常类似的结果:

代码语言:javascript
复制
# slightly improved version of my.ecdf
my.ecdf<-function(x,t) {
  out<-numeric(length(t))
  for(i in 1:length(t)) {
    indicator <- as.numeric(x<=t[i])
    out[i] <- sum(indicator)/length(t)
  }
  out
}
# test 1
x <- rnorm(1000)
plot(ecdf(x))
lines(seq(-4, 4, length=1000), 
     my.ecdf(x, seq(-4, 4, length=1000)), 
     col='red')
# test 2
x <- rexp(1000)
plot(ecdf(x))
lines(seq(0, 8, length=1000), 
     my.ecdf(x, seq(0, 8, length=1000)), 
     col='red')
票数 0
EN

Stack Overflow用户

发布于 2014-12-07 20:47:34

一般提示--您可以通过在控制台中键入任何函数的名称,而不使用括号或参数来查看它的源代码:

代码语言:javascript
复制
edcf
function (x) 
{
    x <- sort(x)
    n <- length(x)
    if (n < 1) 
        stop("'x' must have 1 or more non-missing values")
    vals <- unique(x)
    rval <- approxfun(vals, cumsum(tabulate(match(x, vals)))/n, 
        method = "constant", yleft = 0, yright = 1, f = 0, ties = "ordered")
    class(rval) <- c("ecdf", "stepfun", class(rval))
    assign("nobs", n, envir = environment(rval))
    attr(rval, "call") <- sys.call()
    rval
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27347515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档