代码之家  ›  专栏  ›  技术社区  ›  BayerSe

核CDF估计:积分降为零

  •  1
  • BayerSe  · 技术社区  · 9 年前

    我想积分一个核密度估计,以得到cdf的核估计。

    set.seed(1)
    z <- rnorm(250)
    pdf <- approxfun(density(z, bw = "SJ"), yleft = 0, yright = 0)
    cdf <- function(b) {
      integrate(pdf, -Inf, b)$value
    }
    x <- seq(-20, 20, 0.1)
    plot(x, sapply(x, cdf), type = "l", xlab = "x", ylab = "density", ylim= c(0, 1))
    

    这将生成以下曲线图

    enter image description here

    如您所见,cdf在18左右降至零,这显然不应该发生。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Hong Ooi    9 年前

    使用一个大的有限数作为左积分端点,而不是-无穷大。

    cdf <- function(b)
    {
        integrate(pdf, -20, b)$value
    }
    x <- seq(-20, 20, 0.1)
    plot(x, sapply(x, cdf), type="l", xlab="x", ylab="density", ylim=c(0, 1))
    

    enter image description here