class: inverse, center, middle # AlwaysR, Módulo III: Estadística en R <style type="text/css"> .my-one-page-font { font-size: 25px; } .scroll-output { overflow-y: scroll; } </style> ## Clase 1: Introducción. Estadística descriptiva. Distribuciones de probabilidad. ### Dr. Giancarlo M. Correa <img src="LOGO05.png" width="350px"/> --- class: inverse, center, middle # Introducción
--- # Presentaciones <br> <br> .my-one-page-font[ * Mi nombre es: * Mi nacionalidad es y/o resido en: * Me dedico a: * Mi área de estudio es: ] --- # Silabo Revisar silabo en [Cousteau Consultant Group](https://cousteau-group.com/cursos/alwasyr_modulo_3/). También puede ser encontrado en el Google Drive. --- # Metodología * ***Preguntas***: En cualquier momento. Dejar preguntas en el chat o activar micrófono. -- * ***Material***: Presentaciones, códigos y videos en Google Drive. También puede ser encontrado en mi [sitio web](https://giancarlomcorrea.netlify.app/es/courses/alwaysr3/). -- * ***Certificado***: De asistencia ó aprobación (completar todos los quizzes al término de la semana). -- * ***Horas de oficina***: Por definir -- * ***Contacto***: Escribir a [*cursos@cousteau-group.com*](mailto:cursos@cousteau-group.com) ó [*gcorrea@uw.edu*](mailto:gcorrea@uw.edu) --- class: inverse, center, middle # Estadística descriptiva --- # Variable Es un atributo que describe un individuo, lugar, o cosa. Este atributo puede variar entre individuos. Ejemplo: altura total, temperatura, edad, estadio sexual. -- * **Cuantitativa**: Refleja magnitud. Representa una medida y es numérica. > - *Discreta*: Valores que toman son contables y tienen un número finito de posibilidades. > - *Continua*: Valores no son contables y tiene un infinito número de posibilidades. -- * **Cualitativa**: No son numericas, valores son categorías. > - *Nominal*: No existe un orden para los niveles. > - *Ordinal*: Existe un orden para los niveles. --- # Población vs Muestra <img src="images/sample-size-definition.png" width="500" style="display: block; margin: auto;" /> -- <img src="images/sample-pop-mean.png" width="300" style="display: block; margin: auto;" /> --- # Muestra .scroll-output[ Tomamos datos de la altura ( `\(m\)` ) de 20 árboles ( `\(n = 20\)` ) de un bosque que se quiere investigar y lo guardamos en un vector llamado `altura`: ```r print(altura) ``` ``` ## [1] 94.40 97.70 115.59 100.71 101.29 117.15 104.61 87.35 93.13 95.54 ## [11] 112.24 103.60 104.01 101.11 94.44 117.87 104.98 80.33 107.01 95.27 ``` -- También tomamos datos del número de raíces principales de cada árbol: ```r print(raices) ``` ``` ## [1] 1 3 2 4 4 0 2 4 2 2 5 2 3 2 0 4 1 0 1 5 ``` ] --- # Media Calculada como: `$$\bar{x}={\frac {1}{n}}\sum _{i=1}^{n}x_{i}={\frac {x_{1}+x_{2}+\cdots +x_{n}}{n}}$$` -- En *R* podemos usar: ```r mean(x = altura) ``` ``` ## [1] 101.4165 ``` Unidades: `\(m\)` -- Algo **muy** imporante es ver la ayuda de una función cuando no sepamos como utilizarla, por ejemplo: `?mean` --- # Mediana Valor encontrado en el medio de todo el conjunto de valores. -- En *R* podemos usar: ```r median(x = altura) ``` ``` ## [1] 101.2 ``` Unidades: `\(m\)` --- # Moda El valor más frecuente en los datos. -- *R* no tiene una función por defecto para calcular la moda, pero podemos hacer una: ```r getmode <- function(x) { uniqv <- unique(x) uniqv[which.max(tabulate(match(x, uniqv)))] } ``` -- Luego la usamos: ```r getmode(x = raices) ``` ``` ## [1] 2 ``` -- O utilizar: ```r DescTools::Mode(x = altura) ``` --- # Varianza Calculada como (para la muestra): `$$s^2 = \frac{\sum_{i=1}^{n}(x_i - \bar{x})^2} {n-1}$$` -- En *R* podemos usar: ```r var(x = altura) ``` ``` ## [1] 94.62027 ``` Si se desea calcular la varianza poblacional, se multiplica por `\((n-1)/n\)`. Unidades: `\(m^2\)`. --- # Desviación estándar Calculada como (para la muestra): `$$s = \sqrt{s^2}$$` -- En *R* podemos usar: ```r sd(x = altura) ``` ``` ## [1] 9.727295 ``` Unidades: `\(m\)`. -- Recordemos que `sd(x = altura)^2` es igual a `var(x = altura)`. --- # Coeficiente de variación Calculada como: `$$CV = s/\bar{x}$$` -- En *R* podemos usar: ```r sd(altura)/mean(altura) ``` ``` ## [1] 0.09591432 ``` --- # Mínimo y máximo Simplemente se calcula es mínimo y máximo valor observado en la muestra. -- En *R* podemos usar (mínimo): ```r min(x = altura) ``` ``` ## [1] 80.33 ``` Unidades: `\(m\)`. -- En *R* podemos usar (máximo): ```r max(x = altura) ``` ``` ## [1] 117.87 ``` Unidades: `\(m\)`. --- # Rango Simplemente se calcula es mínimo y máximo valor observado en la muestra. -- En *R* podemos usar: ```r range(x = altura) ``` ``` ## [1] 80.33 117.87 ``` Unidades: `\(m\)`. --- # Cuartiles y percentiles * *Cuartiles*: Valores que dividen a los datos en cuatro partes. E.g.: primer (25%), segundo (50%) y tercer (75%) cuartil. * *Percentil*: Valores que dividen a los datos en cien partes. E.g.: Percentil 1, 2, etc. -- En *R* podemos usar (para cuartiles y percentiles) (Unidades: `\(m\)`): ```r quantile(x = altura, probs = 0.25) ``` ``` ## 25% ## 95.0625 ``` Aquí, `probs = 0.25` especifica el primer cuartil o el percentil 25. -- ```r quantile(x = altura, probs = 0.6) ``` ``` ## 60% ## 103.764 ``` Aquí, `probs = 0.6` especifica el percentil 60. --- # Rango interquartil Diferencia entre el tercer y primer cuartil. -- En *R* podemos usar: ```r IQR(x = altura) ``` ``` ## [1] 10.425 ``` --- # Datos faltantes .scroll-output[ En el caso que tengamos datos faltantes, la variable puede ser: ``` ## [1] 94.40 97.70 NA 100.71 101.29 117.15 NA 87.35 93.13 95.54 ## [11] 112.24 103.60 104.01 101.11 94.44 117.87 104.98 80.33 107.01 95.27 ``` -- Si usamos las funciones anteriores tal cual, vemos que: ```r mean(altura) ``` ``` ## [1] NA ``` ] -- En estos casos, tenemos que agregar el argumento `na.rm = TRUE` a las funciones exploradas: ```r mean(altura, na.rm = TRUE) ``` ``` ## [1] 100.4517 ``` --- # Resumen de un conjunto de datos Podemos obtener estadísticos descriptivos rápidamente de todas las variables de una base de datos, por ejemplo: ```r summary(airquality) ``` ``` ## Ozone Solar.R Wind Temp ## Min. : 1.00 Min. : 7.0 Min. : 1.700 Min. :56.00 ## 1st Qu.: 18.00 1st Qu.:115.8 1st Qu.: 7.400 1st Qu.:72.00 ## Median : 31.50 Median :205.0 Median : 9.700 Median :79.00 ## Mean : 42.13 Mean :185.9 Mean : 9.958 Mean :77.88 ## 3rd Qu.: 63.25 3rd Qu.:258.8 3rd Qu.:11.500 3rd Qu.:85.00 ## Max. :168.00 Max. :334.0 Max. :20.700 Max. :97.00 ## NA's :37 NA's :7 ## Month Day ## Min. :5.000 Min. : 1.0 ## 1st Qu.:6.000 1st Qu.: 8.0 ## Median :7.000 Median :16.0 ## Mean :6.993 Mean :15.8 ## 3rd Qu.:8.000 3rd Qu.:23.0 ## Max. :9.000 Max. :31.0 ## ``` --- # Figuras ```r boxplot(x = altura, ylab = 'Altura (m)') ``` <img src="Clase_1_files/figure-html/unnamed-chunk-27-1.png" width="500" style="display: block; margin: auto;" /> --- # Figuras ```r hist(x = altura, xlab = 'Altura (m)', ylab = 'Frecuencia', main = '') ``` <img src="Clase_1_files/figure-html/unnamed-chunk-28-1.png" width="400" style="display: block; margin: auto;" /> --- # Figuras ```r hist(x = altura, xlab = 'Altura (m)', ylab = 'Frecuencia', main = '') abline(v = mean(altura), col = 'red', lty = 2) ``` <img src="Clase_1_files/figure-html/unnamed-chunk-29-1.png" width="400" style="display: block; margin: auto;" /> --- # Figuras ```r hist(x = altura, xlab = 'Altura (m)', ylab = 'Frecuencia', main = '') abline(v = mean(altura), col = 'red', lty = 2) abline(v = median(altura), col = 'blue', lty = 2) ``` <img src="Clase_1_files/figure-html/unnamed-chunk-30-1.png" width="400" style="display: block; margin: auto;" /> --- # Figuras ```r plot(density(altura)) ``` <img src="Clase_1_files/figure-html/unnamed-chunk-31-1.png" width="400" style="display: block; margin: auto;" /> --- # Figuras Los histogramas y boxplots nos dan información de la dispersión de los datos: <img src="images/IQR_image.jpg" width="400" style="display: block; margin: auto;" /> --- class: inverse, center, middle # Distribuciones de probabilidad --- # Distribución normal Variable continua. Función de densidad: `$$f(x) = \frac{1}{{\sigma \sqrt{2\pi}}} e^{{{ -(x - \mu)^2/2\sigma^2 }}}\hspace{1cm}-\infty <x< \infty$$` donde `\(\mu\)` (media) y `\(\sigma\)` (desviación estándar) son los parámetros de la función. Representada como: `\(N(\mu, \sigma^2)\)`. -- Media `\(E(X) = \mu\)` Varianza `\(Var(X) = \sigma^2\)` --- # Distribución normal Podemos generar 100 números aleatorios con distribución normal, con determinada media y desviación estándar: ```r rnorm(n = 100, mean = 20, sd = 3) ``` <img src="Clase_1_files/figure-html/unnamed-chunk-34-1.png" width="400" style="display: block; margin: auto;" /> --- # Distribución normal Distribución normal estándar ( `\(\mu = 0\)` y `\(\sigma^2=1\)` ): <img src="Clase_1_files/figure-html/unnamed-chunk-35-1.png" width="400" style="display: block; margin: auto;" /> --- # Distribución normal Probabilidad acumulada: <img src="Clase_1_files/figure-html/unnamed-chunk-36-1.png" width="300" style="display: block; margin: auto;" /> -- Podemos usar la función: ```r pnorm(q = -2, mean = 0, sd = 1) ``` ``` ## [1] 0.02275013 ``` --- # Distribución normal Probabilidad a un valor de variable dado: <img src="Clase_1_files/figure-html/unnamed-chunk-38-1.png" width="300" style="display: block; margin: auto;" /> -- Podemos usar la función: ```r dnorm(x = -2, mean = 0, sd = 1) ``` ``` ## [1] 0.05399097 ``` --- # Distribución normal Valor de variable dado una probabilidad acumulada: <img src="Clase_1_files/figure-html/unnamed-chunk-40-1.png" width="300" style="display: block; margin: auto;" /> -- Podemos usar la función: ```r qnorm(p = 0.0227, mean = 0, sd = 1) ``` ``` ## [1] -2.000929 ``` --- # Distribución normal Ejemplo 1: ¿Cúal es la probabilidad que la altura de un árbol sea menor a 90 m, dado que la media de la muestra es 100 y desviación estándar de 10? -- ```r pnorm(q = 90, mean = 100, sd = 10) ``` ``` ## [1] 0.1586553 ``` -- Ejemplo 2: ¿Cúal es la probabilidad que la altura de un árbol sea mayor a 115 m, dado que la media de la muestra es 100 y desviación estándar de 10? -- ```r 1 - pnorm(q = 115, mean = 100, sd = 10) ``` ``` ## [1] 0.0668072 ``` --- # Distribución lognormal Variable continua. Función de densidad: `$$f(x) = \frac{1}{{x\sigma \sqrt{2\pi}}} e^{{{ -(ln(x) - \mu)^2/2\sigma^2 }}}\hspace{1cm} x\in (0,+\infty)$$` donde `\(\mu\)` (media) y `\(\sigma\)` (desviación estándar) son los parámetros de la función. Representada como: `\(LnN(\mu, \sigma^2)\)`. -- Media `\(E(X) = e^{\mu+\sigma^2/2}\)` Varianza `\(Var(X) = e^{2\mu+\sigma^2}(e^{\sigma^2}-1)\)` --- # Distribución lognormal Podemos generar 1000 números aleatorios con distribución lognormal, con determinada media y desviación estándar: ```r rlnorm(n = 1000, mean = 2, sd = 1) ``` <img src="Clase_1_files/figure-html/unnamed-chunk-45-1.png" width="400" style="display: block; margin: auto;" /> --- # Distribución lognormal Similar al caso de la distribución normal, podemos calcular: -- Probabilidad acumulada: ```r plnorm(q = 20, mean = 2, sd = 1) ``` ``` ## [1] 0.8403099 ``` -- Probabilidad a un valor de variable dado: ```r dlnorm(x = 20, mean = 2, sd = 1) ``` ``` ## [1] 0.01215017 ``` -- Valor de variable dado una probabilidad acumulada: ```r qlnorm(p = 0.84, mean = 2, sd = 1) ``` ``` ## [1] 19.97453 ``` --- # Distribución poisson Variable discreta. Función de densidad: `$$P(X=x) = \frac{{e^{ - \lambda } \lambda ^x }}{{x!}}\hspace{1cm}x=0,1,2,...$$` donde `\(\lambda\)` es el parámetro principal y es mayor a cero. Representada como: `\(Poi(\lambda)\)`. -- Media `\(E(X) = \lambda\)` Varianza `\(Var(X) = \lambda\)` --- # Distribución poisson Podemos generar 100 números aleatorios con distribución poisson, con determinada parámetro `\(\lambda\)`: ```r rpois(n = 100, lambda = 10) ``` <img src="Clase_1_files/figure-html/unnamed-chunk-50-1.png" width="400" style="display: block; margin: auto;" /> --- # Distribución poisson Similar al caso de la distribución normal, podemos calcular: -- Probabilidad acumulada: ```r ppois(q = 8, lambda = 10) ``` ``` ## [1] 0.3328197 ``` -- Probabilidad a un valor de variable dado: ```r dpois(x = 8, lambda = 10) ``` ``` ## [1] 0.112599 ``` -- Valor de variable dado una probabilidad acumulada: ```r qpois(p = 0.33, lambda = 10) ``` ``` ## [1] 8 ``` --- # Distribución binomial Variable discreta. Función de probabilidad: `$$P(X=x) = \binom{n}{x}p^x(1-p)^{n-x}\hspace{1cm}x=0,1,2,...,n$$` donde `\(n\)` representa el número de intentos y `\(p\)` es la probabilidad de ocurrencia de un evento de interés. Representada como: `\(Bin(n,p)\)`. -- Media `\(E(X) = np\)` Varianza `\(Var(X) = np(1-p)\)` --- # Distribución binomial Podemos generar 100 experimentos (`n=100`), cada uno con 20 intentos (`size=20`), donde cada intento tiene probabilidad de éxito `\(p=0.5\)` para un evento de interés: ```r rbinom(n = 100, size = 20, prob = 0.5) ``` <img src="Clase_1_files/figure-html/unnamed-chunk-55-1.png" width="400" style="display: block; margin: auto;" /> El número de veces donde el evento de interés ha sido exitoso para los 100 experimentos --- # Distribución binomial Similar al caso de la distribución normal, podemos calcular: -- Probabilidad acumulada: ```r pbinom(q = 10, size = 20, prob = 0.5) ``` ``` ## [1] 0.5880985 ``` -- Probabilidad a un valor de variable dado: ```r dbinom(x = 10, size = 20, prob = 0.5) ``` ``` ## [1] 0.1761971 ``` -- Valor de variable dado una probabilidad acumulada: ```r qbinom(p = 0.588, size = 20, prob = 0.5) ``` ``` ## [1] 10 ``` --- # Distribución binomial Ejemplo 1: Se sabe que la proporción de hembras en una muestra es de 0.6. En una muestra se tienen 80 individuos. ¿Cuál es la probabilidad de encontrar menos de 40 hembras? -- ```r pbinom(q = 40, size = 80, prob = 0.6) ``` ``` ## [1] 0.04449706 ``` --- class: inverse, center, middle # Gracias! Contacto: [**cursos@cousteau-group.com**](mailto:cursos@cousteau-group.com) <img src="LOGO05.png" width="450" style="display: block; margin: auto;" />