为什么R语言中不同列计算分位数对应的ECDF值输出相似?
现象原因解释
这个结果和两个向量的绝对数值无关,是你调用的函数的特性决定的:
ecdf(x)是R内置的经验累积分布函数,对于任意输入值,返回值为样本x中小于等于该输入值的观测值占总样本量的比例,仅和x内部的数值相对大小(秩次)有关,和x的绝对数值完全无关。quantile(x, p)返回样本x的第p分位数,它的绝对数值和x有关,但它对应的累积概率属性仅由概率p、样本量、样本内部的重复值分布决定。
你两次执行的代码逻辑都是:拿同一个样本的分位数,传入该样本自己的ECDF函数计算累积概率,这种情况下输出结果只和三个要素有关:输入的概率序列quants、样本量、样本内部重复值的分布结构,和样本的绝对数值没有任何关联。
你的测试数据中a和b都是长度为3、内部无重复值的向量,使用的quants是同一个序列,因此最终输出结果必然高度相似/完全一致。你可以用任意两个符合上述条件的向量测试,都会得到相同的结果:
# 测试用完全不同的两个3元素向量 x <- c(1, 10, 100) y <- c(-999, 0, 256) quants <- seq(0, 1, length.out = 51) # 对比两个输出结果 all.equal(ecdf(x)(quantile(x, quants)), ecdf(y)(quantile(y, quants))) # 输出为 TRUE,验证结果完全相等
内容的提问来源于stack exchange,提问作者bic ton
相关产品推荐
相关产品推荐

