Как рассчитать вероятность для данного квантиля в R? - PullRequest
15 голосов
/ 03 февраля 2012

Используя R, вычислить квантили для заданных вероятностей в выборочном распределении тривиально:

x <- rnorm(1000, mean=4, sd=2)
quantile(x, .9) # results in 6.705755

Однако я не могу найти простой способ сделать обратное - вычислить вероятность для данного квантиля в выборке x. Самое близкое, что я получил, - это использование pnorm() с тем же средним и стандартным отклонением, которое я использовал при создании образца:

pnorm(5, mean=4, sd=2) # results in 0.6914625

Однако, поскольку это вычисление вероятности по полному нормальному распределению, а не по выборке x, это не совсем точно.

Есть ли функция, которая, по сути, обращает quantile()? Что-то, что по сути позволяет мне делать то же самое, что и pnorm(), но с образцом? Примерно так:

backwards_quantile(x, 5)

Я нашел функцию ecdf(), но не могу найти способ заставить ее привести к единственной вероятности вместо объекта полного уравнения.

Ответы [ 2 ]

16 голосов
/ 03 февраля 2012

ecdf возвращает функцию: вам нужно применить ее.

f <- ecdf(x)
f( quantile(x,.91) )
# Equivalently:
ecdf(x)( quantile(x,.91) )
1 голос
/ 10 августа 2017

Просто для удобства эта функция помогает:

quantInv <- function(distr, value) ecdf(distr)(value)
set.seed(1)
x <- rnorm(1000, mean=4, sd=2)
quantInv(x, c(4, 5, 6.705755))
[1] 0.518 0.685 0.904
...