Ответ в ссылке действительно хорош, но, возможно, это поможет, взглянуть на ecdf
Просто запустите следующий код:
# Simple data
x = 0:10
p0 = 0.5
# Get value corresponding to a percentile using quantile
sapply(c(1:7), function(i) quantile(x, p0, type = i))
# 50% 50% 50% 50% 50% 50% 50%
# 5.0 5.0 5.0 4.5 5.0 5.0 5.0
Таким образом, это не вопрос типа. Вы можете войти в функцию, используя debug:
# Get percentile corresponding to a value using ecdf function
debug(ecdf)
my_ecdf <- ecdf(x)
Важнейшей частью является
rval <- approxfun(vals, cumsum(tabulate(match(x, vals)))/n,
method = "constant", yleft = 0, yright = 1, f = 0, ties = "ordered")
После этого вы можете проверить
data.frame(x = vals, y = round(cumsum(tabulate(match(x, vals)))/n, 3), stringsAsFactors = FALSE)
и если вы поделитесь на n=11
, результат неудивителен Как уже говорилось, для теории взгляните на другой ответ.
Кстати, вы также можете построить график функции
plot(my_ecdf)
По поводу вашего комментария. Я думаю, что это не вопрос надежности, а вопрос о том, как определить «обратную функцию распределения, если она не существует»:
Хороший справочник по обобщенным инверсиям: Пол Эмбрехтс, Мариус Хоферт: «Замечание по обобщенным инверсиям», Math Meth Oper Res (2013) 77: 423–432 DOI