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 tales funciones están conformados por una primera letra que indica su especificidad, así:

Seguidamente aparece una cadena de caracteres que hace referencia a la distribución probabilística. Entre las más comunes están:

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. Seguidamente aparecerían los argumentos correspondientes a los parámetros específicos de la función de distribución.

Todas las funciones de probabilidad (las que inician con la letra p) actúan por defecto como funciones de distribución acumuladas, calculando la probabilidad de observar un valor menor o igual que el del argumento principal. No obstante, es posible usarlas para calcular la probabilidad de obtener valores de la variable aleatoria mayores que los del argumento principal, asignándole el valor FALSE al argumento lower.tail, con lo cual se convierten en funciones 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 (las que empiezan con la letra q), 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 acumulada. 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 (las que inician con la letra r) 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 distribición uniforme continua, se usa la siguiente instrucción.

runif(100)
¿¡Números aleatorios!?

Los valores que se generan con las funciones que inician con la letra r son en realidad números seudoaleatorios.

Las muestras seudoaleatorias son conjuntos de números generados mediante algún algoritmo computacional, que, aunque reflejan el comportamiento probabilístico de la variable aleatoria en la que se basan, no son verdaderamente aleatorias o imprevisibles.

El usuario no suele percatarse de ello, puesto que cada vez que genera una muestra con tales características, obtiene un conjunto diferente. No obstante, si lo requiriera también podría obtener siempre el mismo conjunto, fijando la semilla generadora, mediante la función set.seed.

A menudo se obvia este tecnicismo y, a las muestras generadas a través de estos procedimientos se les denomina simplemente muestras aleatorias.

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