En R podemos trabajar con las distribuciones de probabilidad usuales, ya sean continuas o discretas. Para ello, podemos recurrir a las siguientes 4 funciones especÃficas de R:
\[ \begin{array}{l|l|l|c} \text{Función} & \text{Significado} & \text{Uso}& \text{Observación}\\ \hline p & \text{probability} & \text{Calcula probabilidades acumuladas (cdf)} & \text{---}\\ q & \text{quantile} & \text{Calcula cuantiles (percentiles)} & \text{---}\\ d & \text{density} & \text{Calcula probabilidades puntuales} & \text{Sólo uso gráfico en el caso continuo}\\ r & \text{random} & \text{Genera datos aleatorios según una distribución especÃfica} & \text{---}\\ \hline \end{array} \]
Â
Consideremos una variable aleatoria \(X\) con distribución normal, media igual a 50 y varianza igual a 25.
Â
pnorm(48, mean = 50, sd = sqrt(25))
## [1] 0.3445783
# o bien podemos escribir de forma mas corta:
pnorm(48, 50, sqrt(25))
## [1] 0.3445783
Notemos que necesitamos la desviación tÃpica en vez de la varianza.
Â
pnorm(48, mean = 50, sd = sqrt(25), lower.tail = FALSE)
## [1] 0.6554217
Â
Notemos que: \[ P(45\leq X < 55)=P(X<55)-P(X\leq 45) \]
pnorm(55, 50, sqrt(25)) - pnorm(45, 50, sqrt(25))
## [1] 0.6826895
Â
qnorm(0.90, mean = 50, sd = sqrt(25))
## [1] 56.40776
Â
# set.seed(...) se usa para fijar una generación aleatoria de datos
# ej: compile este código 3 veces con el set.seed() y vea que los resultados no cambian
# compile 3 veces sin el set.seed() y vea que sucede.
# No se asuste si en su computador obtiene resultados diferentes...es normal.
set.seed(123)
rnorm(10, mean = 50, sd = sqrt(25))
## [1] 47.19762 48.84911 57.79354 50.35254 50.64644 58.57532 52.30458 43.67469
## [9] 46.56574 47.77169
Â
pnorm(55, mean = 50, sd = sqrt(25)) - pnorm(35, mean = 50, sd = sqrt(25))
## [1] 0.8399948
Â
curve(dnorm(x, mean = 50, sd = sqrt(25)), xlim = c(35,65), xlab = "Valores de X", ylab = "Densidad de X")
Â
Basta con ingresar distributions en la sección de ayuda para que se despliegue la información con todas las distribuciones disponibles.
Suponga que hay 12 preguntas de selección múltiple en un test de estadÃstica. Cada pregunta tiene 5 alternativas, y solo una de ellas es correcta. Calcular la probabilidad de obtener 4 o menos respuestas correctas si un estudiante cualquiera responde el test al azar.
Existen diversas formas de resolver este problema en R:
# Método largo
dbinom(0, size=12, prob=0.2)+
dbinom(1, size=12, prob=0.2)+
dbinom(2, size=12, prob=0.2)+
dbinom(3, size=12, prob=0.2)+
dbinom(4, size=12, prob=0.2)
## [1] 0.9274445
# Método menos largo
sum(dbinom(x = 0:4, size = 12, prob = 0.2))
## [1] 0.9274445
# Método inteligente: usar distribución acumulada
pbinom(4, size = 12, prob = 0.2)
## [1] 0.9274445
# la probabilidad de tener más de 4 buenas
pbinom(4, size = 12, prob = 0.2, lower.tail = FALSE )
## [1] 0.0725555
La distribución de probabilidades respectiva puede obtenerse mediante un gráfico de barras:
barplot(dbinom(x = 0:12, size = 12, prob = 0.2), names.arg = 0:12)
Â
Si en promedio hay 12 autos por minuto cruzando un determinado puente, Calcular la probabilidad de que 17 o más autos crucen el puente en un minuto cualquiera.
Nos piden calcular \(P(X\geq 17)=1-P(X<17)\).
# Usando la cola izquierda
1-ppois(16, lambda = 12)
## [1] 0.101291
# Usando la cola derecha
ppois(16, lambda = 12, lower.tail = FALSE)
## [1] 0.101291
barplot(dpois(x = 0:30, 12), names.arg = 0:30)
Suponga que el tiempo medio de atención en la caja de un supermercado es de 3 minutos. Encuentre la probabilidad de que un cliente al azar sea atendido en menos de 2 minutos.
Para solucionar este problema debemos considerar que R asume la siguiente forma de la distribución exponencial: \[f(x)=\lambda e^{-\lambda x},\; x\geq 0,\;\lambda>0\]
Luego, con \(\lambda=3\) tenemos que:
pexp(2, rate = 3)
## [1] 0.9975212
# La probabilidad de demorar entre 5 y 6 minutos, inclusive
# P(X<=6)-P(X<=5)
pexp(6, rate = 3)-pexp(5, rate = 3)
## [1] 2.906723e-07
La función de densidad respectiva posee la siguiente gráfica
curve(dexp(x, rate = 3), xlim = c(0,10), xlab = "Valores de X", ylab = "Densidad de Probabilidad")
Â
Encontrar el percentil 95 de una distribución Chi-Cuadrado con 7 grados de libertad.
qchisq(0.95, df = 7)
## [1] 14.06714
La función de densidad respectiva posee la siguiente gráfica
curve(dchisq(x, df = 7), xlim = c(0,20), xlab = "Valores de X", ylab = "Densidad de Probabilidad")
Â
Encontrar el percentil 2.5 y el percentil 97.5 de una distribución t de Student con 5 grados de libertad.
qt(c(0.025,0.975), df = 5)
## [1] -2.570582 2.570582
Podemos graficar la densidad de esta distribución en particular
curve(dt(x, df = 1000), xlim = c(-3,3), xlab = "Valores de t", ylab = "Densidad de Probabilidad")
Â
Encontrar el percentil 90 de una distribución F de Fisher con 5 grados de libertad en el numerador y 2 grados de libertad en el denominador.
qf(0.90, df1 = 5, df2 = 2)
## [1] 9.292626
Podemos graficar la densidad de esta distribución en particular
curve(df(x, df1 = 5, df2 = 2), xlim = c(0,10), xlab = "Valores de F", ylab = "Densidad de Probabilidad")