17 FUNCIONES DE PROBABILIDAD

Dentro del paquete stats, R cuenta con múltiples funciones para el cálculo de probabilidades, así como para la generación de números aleatorios, pudiendo calcularse de manera directa probabilidades puntuales (adecuado para funciones masa de probabilidad), probabilidades acumuladas, cuantiles (valores que acumulan una probabilidad determinada) y valores aleatorios.

Los nombres de las funciones están conformados por una primera letra que indica su especificidad, así: d para funciones que calculan probabilidades puntuales (density function), p para funciones que calculan probabilidad acumulada, q para funciones que calculan cuantiles (quantile) y r para funciones que calculan números aleatorios (random numbers). Seguidamente aparece una cadena de caracteres que hace referencia a la distribución probabilística: unif, para la uniforme; binom, para la binomial; pois para la Poisson; norm, para la normal; chisq, para la ji cuadrado; t, para la t de Student, y f, para la F de Snedecor, entre las más comunes. La siguiente tabla resume las funciones más usadas en estadística aplicada.

Distribución Probabilidad acumulada Cuantiles Números aleatorios
Uniforme continua punif qunif runif
Binomial pbinom qbinom rbinom
Poisson ppois qpois rpois
Normal pnorm qnorm rnorm
Ji cuadrado pchisq qchisq rchisq
T pt qt rt
F pf qf rf

Todas las funciones de probabilidad acumulada tienen como primer argumento (obligatorio) el valor de la variable aleatoria para el cual se desea obtener el área acumulada, esto es, el valor del cuantil. Seguidamente, aparecen los parámetros de la distribución. Para el caso de la normal, se consideran por defecto los valores mean = 0 y sd = 1 (normal estándar). La función uniforme trae por defecto 0 para el límite inferior y 1 para el límite superior. Las demás distribuciones mencionadas no tienen valores por defecto para sus parámetros, siendo necesario especificarlos: size (número de ensayos Bernoulli) y prob (probabilidad de éxito) para la binomial; lambda para la Poisson, df (grados de libertad) para la t y la ji cuadrado; df1 y df2 (grados de libertad del numerador y del denominador, respectivamente) para la F. Asimismo, podría modificarse a FALSE el valor del argumento lower.tail, que está marcado por defecto como TRUE, si se desea obtener probabilidad a la derecha (función de supervivencia).

Para obtener, por ejemplo, el área a la derecha de 2.3, en una distribución F con 5 y 15 grados de libertad, se utiliza la siguiente instrucción.

pf(2.3, df1 = 5, df2 = 15, lower.tail = F)
#> [1] 0.0969766

Las funciones inversas de las funciones de probabilidad acumulada, esto es, las funciones cuantil, tienen como primer argumento (obligatorio) el valor de la probabilidad cuyo cuantil se desea obtener. Seguidamente, aparecen los parámetros de la distribución, igual que en las funciones de distribución acumulativa. También está el argumento lower.tail, con valor TRUE por defecto; si se modifica a FALSE, permite obtener los valores que dejan una probabilidad determinada a su derecha, es decir, los valores críticos superiores.

Para averiguar, por ejemplo, cuál es el valor que acumula un área de 0.95 (cuantil 0.95) en una distribución ji cuadrado con 7 grados de libertad, se usa la siguiente instrucción.

qchisq(0.95, 7)
#> [1] 14.06714

Equivalentemente, podría haberse escrito:

qchisq(0.05, 7, lower.tail = F)
#> [1] 14.06714

Todas las funciones que generan números aleatorios (en realidad se trata de números seudoaleatorios28) con base en una distribución probabilística determinada tienen como primer argumento (obligatorio) la cantidad de tales valores; seguidamente, van los parámetros de la función generadora.

Así, para generar un vector con 100 valores aleatorios basados en la distrubición uniforme continua, se usa la siguiente instrucción.

runif(100)

En general, cada vez que se generen valores aleatorios estos serán diferentes. Para que los resultados de un proceso que involucre números aleatorios sean reproducibles, es necesario fijar la semilla con base en la cual se generan tales valores. Para tal efecto se utiliza la función set.seed, la cual requiere un número entero como argumento. Al establecer una semilla sí se generan siempre los mismos valores:

set.seed(66)
rpois(5, lambda = 3)
#> [1] 8 5 3 2 4