2012-02-03 6 views
12

Использование R, тривиален для расчета квантилей для заданных вероятностей в отобранном распределении:Как рассчитать вероятность для данного квантиля в 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(), но не могу понять, способ сделать это приводит к одной вероятности вместо полного объекта уравнения.

ответ

14

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

f <- ecdf(x) 
f(quantile(x,.91)) 
# Equivalently: 
ecdf(x)(quantile(x,.91)) 
+0

Отлично! Благодаря! – Andrew

+3

В примере, показанном в исходном посте, вам действительно нужно запустить 'ecdf (x) (5)', чтобы найти квантиль из 5 заданных 'x' (приблизительно 0,697 заданных семян 123). –

0

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

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 
Смежные вопросы