首页 > 解决方案 > 找到一个值的百分位数.. ecdf 返回一个看起来很奇怪的值

问题描述

使用此数据集:https ://pastebin.com/qWgMZDDb

我试图找到5daychange列的最后一个值的百分位数。

我跑:

ecdf(dat$daychange5)(tail(dat$daychange5, 1))
# returns 0.05056554

也就是说,最后一个值将位于第 5 个百分位,即 95% 的观测值更大。

但是,如果我绘制数据,这看起来不太正确:

last.value = tail(dat$daychange5, 1)

library(ggformula)
library(ggplot2)

gf_dhistogram( ~ daychange5, data = dat, binwidth = 0.01) %>% 
  gf_fitdistr(color = 'red') +
  geom_vline(xintercept = last.value)

那条垂直线似乎高于第 5 个百分位,它看起来在 10-12 左右?

在此处输入图像描述

编辑:数据样本是安全的(尽管 pastebin 设置为永不过期)

structure(list(date = structure(c(18096L, 18099L, 18100L, 18101L, 
18102L, 18103L, 18106L, 18107L, 18108L, 18109L, 18110L, 18113L, 
18114L, 18115L, 18116L, 18117L, 18120L, 18121L, 18122L, 18123L
), class = "Date"), daychange5 = c(-0.0600000000000001, -0.0425000000000002, 
-0.0150000000000001, -0.00249999999999995, 0.0100000000000002, 
0, 0.00250000000000017, -0.00749999999999984, -0.00249999999999995, 
-0.05, -0.0325000000000002, -0.04, -0.0625, -0.0550000000000002, 
0.01, -0.00499999999999989, -0.0700000000000001, -0.0850000000000002, 
-0.11, -0.1225)), row.names = 2992:3011, class = "data.frame")

标签: r

解决方案


推荐阅读