El objetivo de esta clase es entender el concepto de probabilidad, como un evento que pude ocurrir con cierta frecuencia, y que dicha frecuencia determina si el evento es sumamente inusual o al contrario es un evento que usualmente ocurre. Este concepto es básico porque de aquí parte la estadistica inferencial.
Es importante definir claramente los dos tipos de variables cuantitativas que existen:
En la siguiente base de datos de ejemplo
db <- read.delim(paste0(dirname(getwd()),"/chp4/data/curva de crecimiento final.txt"))
knitr::kable(
db,
caption = "Crecimiento bactriano"
)
tiempo1 | reactor | tiempo2 | sp | Medio.BBM | Medio.BG.11 | Medio.F.2 |
---|---|---|---|---|---|---|
T:0 | reactor 1 | 12h | Chloridium | 819.222 | 554.778 | 554.778 |
T:1 | reactor 1 | 12h | Chloridium | 1567.000 | 1248.222 | 1393.667 |
T:2 | reactor 1 | 12h | Chloridium | 2093.667 | 3505.889 | 2392.556 |
T:3 | reactor 1 | 12h | Chloridium | 2585.889 | 1912.556 | 1965.889 |
T:4 | reactor 1 | 12h | Chloridium | 4985.111 | 5916.222 | 17935.000 |
T:5 | reactor 1 | 12h | Chloridium | 5217.667 | 1925.889 | 11873.889 |
T:6 | reactor 1 | 12h | Chloridium | 6271.000 | 8968.333 | 25992.222 |
T:0 | reactor 2 | 12h | Chloridium | 819.222 | 554.778 | 554.778 |
T:1 | reactor 2 | 12h | Chloridium | 1830.333 | 3220.333 | 2024.778 |
T:2 | reactor 2 | 12h | Chloridium | 2089.222 | 5934.000 | 3612.556 |
T:3 | reactor 2 | 12h | Chloridium | 2997.000 | 5834.333 | 3595.889 |
T:4 | reactor 2 | 12h | Chloridium | 6151.778 | 17168.667 | 8285.000 |
T:5 | reactor 2 | 12h | Chloridium | 8496.111 | 7051.667 | 15636.667 |
T:6 | reactor 2 | 12h | Chloridium | 10528.667 | 8602.000 | 25936.667 |
T:0 | reactor 3 | 12h | Chloridium | 283.589 | 2232.556 | 5375.556 |
T:1 | reactor 3 | 12h | Chloridium | 306.811 | 1661.444 | 6417.778 |
T:2 | reactor 3 | 12h | Chloridium | 496.289 | 1584.778 | 5273.333 |
T:3 | reactor 3 | 12h | Chloridium | 576.100 | 1681.444 | 9908.889 |
T:4 | reactor 3 | 12h | Chloridium | 323.144 | 2172.556 | 5824.444 |
T:5 | reactor 3 | 12h | Chloridium | 450.733 | 2953.667 | 5552.222 |
T:6 | reactor 3 | 12h | Chloridium | 595.889 | 11412.778 | 56622.222 |
T:0 | reactor 1 | 24h | Chloridium | 819.222 | 554.778 | 554.778 |
T:1 | reactor 1 | 24h | Chloridium | 1875.667 | 1353.667 | 2635.889 |
T:2 | reactor 1 | 24h | Chloridium | 3109.222 | 1749.222 | 5422.889 |
T:3 | reactor 1 | 24h | Chloridium | 4505.111 | 2479.222 | 3489.222 |
T:4 | reactor 1 | 24h | Chloridium | 9464.333 | 2300.333 | 33858.889 |
T:5 | reactor 1 | 24h | Chloridium | 3453.667 | 7341.000 | 9794.333 |
T:6 | reactor 1 | 24h | Chloridium | 7474.333 | 10235.333 | 23092.222 |
T:0 | reactor 2 | 24h | Chloridium | 819.222 | 554.778 | 554.778 |
T:1 | reactor 2 | 24h | Chloridium | 1327.000 | 2405.889 | 2437.000 |
T:2 | reactor 2 | 24h | Chloridium | 2463.667 | 2137.000 | 3448.111 |
T:3 | reactor 2 | 24h | Chloridium | 6618.444 | 5020.667 | 8435.000 |
T:4 | reactor 2 | 24h | Chloridium | 14973.889 | 8794.333 | 9551.667 |
T:5 | reactor 2 | 24h | Chloridium | 14846.111 | 8601.667 | 12146.111 |
T:6 | reactor 2 | 24h | Chloridium | 28303.333 | 12158.889 | 11981.111 |
T:0 | reactor 3 | 24h | Chloridium | 819.222 | 554.778 | 554.778 |
T:1 | reactor 3 | 24h | Chloridium | 3709.556 | 3951.778 | 4911.778 |
T:2 | reactor 3 | 24h | Chloridium | 6254.000 | 2577.000 | 8635.000 |
T:3 | reactor 3 | 24h | Chloridium | 2853.667 | 3151.444 | 11729.444 |
T:4 | reactor 3 | 24h | Chloridium | 2693.667 | 3391.444 | 14818.333 |
T:5 | reactor 3 | 24h | Chloridium | 2381.444 | 3512.556 | 24025.556 |
T:6 | reactor 3 | 24h | Chloridium | 4635.000 | 5757.667 | 29858.889 |
T:0 | reactor 1 | 12h | Chlorella | 594.667 | 251.333 | 396.333 |
T:1 | reactor 1 | 12h | Chlorella | 1313.000 | 1226.333 | 986.333 |
T:2 | reactor 1 | 12h | Chlorella | 1624.667 | 2821.333 | 2593.000 |
T:3 | reactor 1 | 12h | Chlorella | 2181.333 | 3606.333 | 4936.333 |
T:4 | reactor 1 | 12h | Chlorella | 7664.000 | 6992.667 | 13039.000 |
T:5 | reactor 1 | 12h | Chlorella | 4961.333 | 5392.667 | 11631.667 |
T:6 | reactor 1 | 12h | Chlorella | 5909.333 | 18148.333 | 17948.000 |
T:0 | reactor 2 | 12h | Chlorella | 594.667 | 251.333 | 396.333 |
T:1 | reactor 2 | 12h | Chlorella | 1184.667 | 1156.333 | 1019.667 |
T:2 | reactor 2 | 12h | Chlorella | 1489.667 | 1484.667 | 2738.000 |
T:3 | reactor 2 | 12h | Chlorella | 9332.667 | 6936.000 | 11165.000 |
T:4 | reactor 2 | 12h | Chlorella | 4451.333 | 12549.000 | 12399.000 |
T:5 | reactor 2 | 12h | Chlorella | 3738.000 | 7684.000 | 11344.000 |
T:6 | reactor 2 | 12h | Chlorella | 4534.667 | 15980.000 | 34163.333 |
T:0 | reactor 3 | 12h | Chlorella | 594.667 | 251.333 | 396.333 |
T:1 | reactor 3 | 12h | Chlorella | 7516.000 | 8336.000 | 11614.000 |
T:2 | reactor 3 | 12h | Chlorella | 7886.000 | 11898.333 | 13540.000 |
T:3 | reactor 3 | 12h | Chlorella | 3983.000 | 4429.667 | 16106.667 |
T:4 | reactor 3 | 12h | Chlorella | 11899.000 | 20506.667 | 19681.667 |
T:5 | reactor 3 | 12h | Chlorella | 12538.000 | 21598.000 | 31230.000 |
T:6 | reactor 3 | 12h | Chlorella | 10330.000 | 16598.000 | 3898.000 |
T:0 | reactor 1 | 24h | Chlorella | 594.667 | 298.000 | 401.333 |
T:1 | reactor 1 | 24h | Chlorella | 1148.000 | 1069.667 | 1246.333 |
T:2 | reactor 1 | 24h | Chlorella | 2514.667 | 2296.333 | 2026.333 |
T:3 | reactor 1 | 24h | Chlorella | 5084.667 | 2736.333 | 3376.333 |
T:4 | reactor 1 | 24h | Chlorella | 3311.333 | 17278.667 | 4916.333 |
T:5 | reactor 1 | 24h | Chlorella | 4399.667 | 11669.000 | 5762.667 |
T:6 | reactor 1 | 24h | Chlorella | 3686.333 | 30030.000 | 13130.000 |
T:0 | reactor 2 | 24h | Chlorella | 594.667 | 298.000 | 401.333 |
T:1 | reactor 2 | 24h | Chlorella | 981.333 | 953.000 | 2134.667 |
T:2 | reactor 2 | 24h | Chlorella | 2371.333 | 4861.333 | 3949.667 |
T:3 | reactor 2 | 24h | Chlorella | 3133.000 | 15640.000 | 13290.000 |
T:4 | reactor 2 | 24h | Chlorella | 7944.000 | 19765.000 | 42913.333 |
T:5 | reactor 2 | 24h | Chlorella | 4439.667 | 18481.667 | 28948.000 |
T:6 | reactor 2 | 24h | Chlorella | 11589.000 | 20790.000 | 16198.333 |
T:0 | reactor 3 | 24h | Chlorella | 594.667 | 298.000 | 401.333 |
T:1 | reactor 3 | 24h | Chlorella | 12754.000 | 22856.667 | 8804.000 |
T:2 | reactor 3 | 24h | Chlorella | 17006.667 | 27178.000 | 8956.667 |
T:3 | reactor 3 | 24h | Chlorella | 20306.667 | 21206.667 | 15465.000 |
T:4 | reactor 3 | 24h | Chlorella | 36896.667 | 27288.000 | 22630.000 |
T:5 | reactor 3 | 24h | Chlorella | 35463.333 | 34796.667 | 19630.000 |
T:6 | reactor 3 | 24h | Chlorella | 29558.000 | 85326.667 | 17093.333 |
levels(as.factor(db$tiempo2))
## [1] "12h" "24h"
Podemos obserbar que los valores de la variable “tiempo2” es discreta, ya que solo puede tomar dos valores : “12h” y “24h”; y no acepta valores intermedios entre ellos. Por otro lado la variable correspondiente a los diferentes medios de cultivo: “Medio.BBM”, “Medio.BG.11” y “Medio.F.2” puede tomar valores numéricos intermedios entre ellos de forma infinita. En este capítulo nos enfocaremos en las variables aleatorias discretas.
Para ejemplificar esta distribución, determinaremos cual es la distribución de probabilidades de obtener de obtner dos muetras seguidas de “Chlorella” de la tabla anterior. Primero determinaremos cual es la probabilidad de las valores para la variable “sp”
table(db$sp)/nrow(db)
##
## Chlorella Chloridium
## 0.5 0.5
Ahora determinemos cual es nuestro espacio muestral
outer(levels(as.factor(db$sp)), levels(as.factor(db$sp)),paste, sep = "-")
## [,1] [,2]
## [1,] "Chlorella-Chlorella" "Chlorella-Chloridium"
## [2,] "Chloridium-Chlorella" "Chloridium-Chloridium"
Entonces nuestro espacio muestral está determinado por {(“Chlorella-Chlorella”);(“Chlorella-Chloridium”);(“Chloridium-Chlorella”);“Chloridium-Chloridium”}. Aplicando la regla de la multiplicación podemos obtener la probabilidad para cada combinación, de la siguiente forma \[ \begin{aligned} P(m) = P(sp_1).P(sp_2)\\ P(m) = (0.5)(0.5)\\ P(m) = 0.25\\ \end{aligned} \] Entonces las probabilidades para nuestro espacio muestral son las siguientes {(0.25);(0.25);(0.25);(0.25)}. Como nos resulta igual el orden de los resultados, reealmente no importa si el resultado es “Chlorella-Chloridium” o “Chloridium-Chlorella”, entonces nuestro espacio muestral queda reducido a tres resultados probables y sus probabilidades serían {(0.25);(0.50);(0.25)} (recordemos la regla de la suma cuando queremos saber la posibilidad de uno “O” el otro). Si quisieramos
df <- data.frame(Combinacion = c("Chlorella-Chlorella", "Chloridium-Chlorella", "Chloridium-Chloridium"),
Exito = c(0,1,2),
P.x = c(0.25, 0.5, 0.25))
df
## Combinacion Exito P.x
## 1 Chlorella-Chlorella 0 0.25
## 2 Chloridium-Chlorella 1 0.50
## 3 Chloridium-Chloridium 2 0.25
Media: que se calcula conn la siguiente fórmula \[\mu = \sum{[x.P(x)]}\]
Varianza: \[\sigma ^2 = \sum{[(x-\mu)^2.P(x)]}\]
desviación estandar: \[ \sigma =\sqrt{\sum{[(x-\mu)^2.P(x)]}} \]
Para mostrar un ejemplo practico, utilizaremos la tabla de distribución de probabilidades de especies, vista anteriormente.
df$x.Px <- df$Exito*df$P.x
df$varianza <- (df$Exito-sum(df$x.Px))^2 * df$P.x
df
## Combinacion Exito P.x x.Px varianza
## 1 Chlorella-Chlorella 0 0.25 0.0 0.25
## 2 Chloridium-Chlorella 1 0.50 0.5 0.00
## 3 Chloridium-Chloridium 2 0.25 0.5 0.25
(media <- sum(df$x.Px))
## [1] 1
(varianza <- sum(df$varianza))
## [1] 0.5
(desvi <- varianza^(1/2))
## [1] 0.7071068
Esta distribución aplica aquellos resultados donde el espacio muestral está compuesto por solo dos eventos simples, como por ejemplo: sexo, vivos/muertos, sano/enfermo.
$$ \[\begin{equation} E = exito\\ F = fracaso\\ P(E) = probilidad\space exito = p\\ P(F) = probilidad\space fracaso = 1-p = q\\ n = numero\space ensayo\\ p = probabiliad\space exito \space en\space un\space ensayo\\ q = probabiliad\space fracaso \space en\space un\space ensayo\\ P(x) = probabiliad\space "x"\space exitos \space en\space "n"\space ensayos\\ \end{equation}\] \[ ### 5.4 Fórmula de probabilidad binomial Para determinar la probabilidad de que sucedan exactanente "x" eventos de éxito "E" en un número de ensayos "n", para una distribución binomial podemos usar la siguiente fórmula: \] \[\begin{equation} P(x) = \frac{n!}{(n-x)!x!}.p^x .q^{(n-x)} \end{equation}\] $$
De la tabla anterior, cuya probabilidad de obtener “Chlorella” es de \(p = 0.5\), determinemos ¿Cuál es la probabilidad de obtener 38 veces “Chlorella” de 40 ensayos? Primero definamos nuestras variables \[ \begin{equation} p=0.5\\ q=0.5\\ n=40\\ x=38\\ \end{equation} \] Reemplazando en la fórmula anterior tenemos que: $$ \[\begin{equation} P(38) = \frac{40!}{(40-38)!38!}.0.5^{38} .q^{(40-38)}\\ P(38) = \frac{40.39.38!}{(2)!38!}.0.5^{38} .0.5^{2}\\ P(38) = \frac{40.39}{2}.(3.64E-12).(0.25)\\ P(38) = 780.(3.64E-12).(0.25)\\ P(38) = 7.09406E-10 \end{equation}\] $$ En R todo este cálculo podemos calcularlo con la función dbinom(), que tiene tres párametros + x= donde se define el número de éxitos + size= donde se define el tamaño de la muestra + prob= donde se define la probabilidad de éxito.
dbinom(x = 38,size = 40,prob = 0.5)
## [1] 7.094059e-10
El resultado obtenido muestra que es sumamente improbable obtener 38 veces “Chlorella” en una muestra de 40 datos seleccionados aleatoriamente de nuestra base de datos.
Podemos graficar nuestra distribución de frecuencias con el siguiente loop:
p <- numeric()
for (i in 0:40){
p[i] <- dbinom(x = i,size = 40,prob = 0.5)
}
par(mfrow = c(1,2))
barplot(p, col = colores1,beside = T)
plot(p, type = "l", las = 1)
Pero que hubiera pasado con la distribución si la probabilidad de exito sería \(p=0.02\)
p <- numeric()
for (i in 0:40){
p[i] <- dbinom(x = i,size = 40,prob = 0.02)
}
par(mfrow = c(1,2))
barplot(p, col = colores1,beside = T)
plot(p, type = "l", las = 1)
### 5.6 Descriptores para una distribución binomial + Media: que se calcula conn la siguiente fórmula \[\mu = n.p\] + Varianza: \[\sigma ^2 = npq\]
En el ejemplo anterior de seleccionar 38 veces “Clhorella” en 40 muestreos, la probabilidad es de 7E-10. Para identificar los valores atípicos podemos establecer los límites como +/- DE de la media. Hallemos dichos valores en nuestro ejemplo
media <- (40*0.5)
sd <- (40*0.5*0.5)^(1/2)
lim.sup <- media + 2*sd
lim.inf <- media - 2*sd
print(lim.sup)
## [1] 26.32456
print(lim.inf)
## [1] 13.67544
La distribución de Poisson se aplica a la ocurrencia de eventos discretos en UN INTERVALO ESPECÍFICO, ya sea un intervalo de tiempo, espacio, volumen, área, etc. Por ejemplo: Númereo de usarios que entran en un sitio web por día, númereo de personas que entran a emergencias en el hospital por día, número de metioritos que caen a la luna en mes.
$$ \[\begin{equation} P(x) = \frac{\mu^x.e^{-x}}{x!} \end{equation}\] $$
Suponga Ud. que en 15 años han caido 325 metoritos a la superficie lunar. Asumamos que la distribución de Possion es un modelo adecuado. Calcule Ud. la probabilidad de que en una año caiga exactamente 25 meteoritos. Primero definimos nuestras variables
media <- 325/15
media
## [1] 21.66667
desvi <- media^(1/2)
desvi
## [1] 4.654747
Reemplaznado en la fórmula anterior
$$ \[\begin{equation} P(x) = \frac{(21.67)^{25}.(2.71828)^{-25}}{25!} P(x) = \frac{73.46E22}{1.55E25} P(x) = 0.06 \end{equation}\] $$
Con R podemos calcular la probabilidad acumulada por encima o por debajo de “x”, con la función dpois() y usando el parámetro lower
dpois(x = 25,lambda = media)
## [1] 0.06229355
ppois(q = 25,lambda = media, lower.tail = FALSE)
## [1] 0.2016158
ppois(q = 25,lambda = media, lower.tail = TRUE)
## [1] 0.7983842
Tambien podemos graficar la frecuencia de las probabilidades de la siguiente forma
p <- numeric()
for (i in 0:44){
p[i] <- dpois(x = i,lambda = media)
}
par(mfrow = c(1,2))
barplot(p, col = colores1,beside = T)
plot(p, type = "l", las = 1)