为什么ecdf使用阶跃函数而不是线性插值?


13

经验CDF函数通常由阶跃函数估算。是否有理由这样做而不是使用线性插值?阶跃函数是否具有使我们更喜欢它的任何有趣的理论特性?

这是两个的示例:

ecdf2 <- 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 = "linear", yleft = 0, yright = 1, f = 0, ties = "ordered")
  class(rval) <- c("ecdf", class(rval))
  assign("nobs", n, envir = environment(rval))
  attr(rval, "call") <- sys.call()
  rval
}


set.seed(2016-08-18)
a <- rnorm(10)
a2 <- ecdf(a)
a3 <- ecdf2(a)

par(mfrow = c(1,2))
curve(a2, -2,2, main = "step function ecdf")
curve(a3, -2,2, main = "linear interpolation function ecdf")

在此处输入图片说明


相关 .................................................

8
“ ...由阶跃函数估计”掩盖了一个细微的误解:ECDF不仅由阶跃函数估计;它通过定义这样的功能。它与随机变量的CDF相同。具体来说,给定任意有限的数字序列,请定义一个概率空间其中,离散和统一。令为将分配给的随机变量。ECDF是的CDF x1,x2,,xn(Ω,S,P)Ω={1,2,,n}SPXxiiX这种巨大的概念简化是对该定义的令人信服的论点。
ub

Answers:


22

根据定义。

一组观测值的经验分布函数定义为(Xn)

Fe(t)=#{XnXnt}n

其中是设置的基数。从本质上讲,这是一个阶跃函数。它几乎可以肯定地收敛到实际的CDF 。#

还要注意,对于至少两个任何分布(尤其是非退化的离散分布),您的ECDF变体不会收敛到实际CDF。例如,考虑CDF的伯努利分布P(X=x)0x

FX(x)=pχx0+(1p)χx1
这是一个阶跃函数,而ecdf2将收敛到(连接和的分段线性函数。χx0(p+(1p)min(x,1))(0,p)(1,1)

谢谢亚历克斯。那么我写的函数还有别的名字吗?(因为我想它也会收敛到实际的CDF)
Tal Galili

5
@TalGalili不是。考虑伯努利分布。在这种情况下,您的ecdf2将不会收敛。您可以称其为平滑的ecdf。我怀疑它会收敛到实际的CDF,前提是实际的CDF除了极值点(您不平滑的点)之外没有没有非零概率的点
AlexR

@AlexR,您可以编辑答案以添加此注释,因为离散分布是这种确定的原因 -因此它回答了“为什么”问题。
蒂姆

1
@蒂姆完成。
AlexR

谢谢。有没有一种方法可以定义一个连续的经验函数,该函数可以收敛到阶跃函数,但是完全是单调的(即:没有任何尖锐的“跳跃”)?
Tal Galili
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.