2012-02-03 28 views
12

con R, es trivial para calcular los cuantiles de probabilidades dadas en una distribución de muestreo:¿Cómo calculo la probabilidad de un cuantil determinado en R?

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

Sin embargo, no puedo encontrar una manera fácil de hacer lo inverso calcular la probabilidad de que un determinado cuantil en la muestra x. Lo más cerca que he llegado es utilizar pnorm() con la misma media y la desviación estándar que utiliza al crear la muestra:

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

Sin embargo, ya que este es el cálculo de la probabilidad de la distribución normal completa, y no la muestra x , no es del todo exacto.

¿Hay una función que esencialmente hace lo contrario de quantile()? ¿Algo que esencialmente me permite hacer lo mismo que pnorm() pero con una muestra? Algo como esto:

backwards_quantile(x, 5) 

he encontrado la función ecdf(), pero no puede encontrar una manera de hacer que da lugar a una única probabilidad en lugar de un objeto ecuación completa.

Respuesta

14

ecdf devuelve una función: debe aplicarla.

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

perfecto! ¡Gracias! – Andrew

+3

En el ejemplo que se muestra en la publicación original, en realidad tendría que ejecutar 'ecdf (x) (5)' para encontrar el cuantil de 5 dado 'x' (aproximadamente 0.697 dado semilla 123). –

0

Sólo por conveniencia, esta función ayuda:

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 
Cuestiones relacionadas