为什么1:1000的经验累积分布是一条直线?

机器算法验证 分布 部分 累积分布函数
2022-03-16 03:25:38

为什么 plot(ecdf(1:1000)) 会产生一条直线? R中的情节(ecdf(1:1000))

由于 Fn(xn) =x1/(总和)+x2/(总和)+...+xn/总和=(x1+x2+x3+...+xn)/总和。Fn(200) 大致等于 0.2 和 sum(0:200) 大致等于 0.4 的事实似乎表明 sum(1:200) 大约是 sum(1:400) 的一半,这是不正确的,这两个表达式分别为 20,000 和 80,000。

我有什么误解?

4个回答

随机变量累积分布函数X与对随机变量求和无关。这是

的概率X将取小于或等于的值x.

当然,从你的向量中随机抽取一个值的概率(1,,1000)小于或等于 200 恰好是小于或等于 400 的概率的一半。

经验累积分布函数是观察到的频率的累积和xi的除以总样本量。您的数据是来自值的向量11000,其中每个值仅出现一次。这意味着您的“变量”遵循离散的均匀分布,具有平坦的 CDF。

正如您在下面的示例中所见,如果您使用其他输入数据,情况会有所不同。

set.seed(123)

x <- sample(0:1000, 1e5, replace = TRUE)
y <- rnorm(1e5)

def <- par(mfrow = c(1,2))
plot(ecdf(x))
plot(ecdf(y))
par(def)

在此处输入图像描述

或者

z <- c(1,2,5,7,12,14,19,25,100,250,300,301,500,800,900,901,1000)
plot(ecdf(z))

在此处输入图像描述

请注意,在第二个示例中,不同值之间的距离是不同的,因此无论每个值只出现一次,这条线都是弯曲的。

您也可以机械地考虑它。

欧洲发展基金会F^评价为x是具有值的观察值的比例x或以下。因为你正好有 1,000 个观察值{yi}i=i1000, 和...之间的不同F^(yi)F^(yi+1)始终为 0.0011i<1000.

此外,您的样本值是均匀分布的,因此yiyi+1总是 1。因此,对于任何1i<1000, 之间的斜率(yi,F^(yi))(yi+1,F^(yi+1))总是0.0011. 具有恒定斜率的曲线只是一条直线。

至于你有什么误解,Fn你定义的绝对不是正确的公式。分母应该是观测数,分子应该是值等于或低于的观测数xn.

样本的经验分布函数Y1,...,Yn定义为

F^(x)=1ni=1nI{Yix}

在您的数据集中,Yi=i. 所以,F^(x)=x/n, 为了x=1,2,...,1000. 按照你的方式绘制,这看起来像一个线性函数x.