class: center, middle, inverse, title-slide .title[ # Biometría I - Introducción a Estadística en R ] .author[ ### Dra. Katia Aviña Padilla ] .date[ ### 23 de Septiembre de 2025 ] --- class: center, middle, inverse # Biometría I ## Introducción a Estadística y R **Estructuras de datos y conceptos básicos en R** --- # ¿Qué es la Estadística? - La **estadística** es la ciencia que nos permite **organizar, resumir y analizar datos**. - Nos ayuda a pasar de **números sin forma** a **información útil** para tomar decisiones. - Ejemplo: si medimos la altura de 100 plantas, no tiene sentido leer todos los valores uno por uno. 👉 La estadística nos da **resúmenes** (promedios, gráficas) que condensan la información. 👉 La **Biometría I** comienza con lo más básico: aprenderemos a **describir datos biológicos** con números y gráficos. --- ## Agenda 1. Fundamentos y **organización de datos** en R: vector, matriz, data frame, lista, factor. 2. **Estadística descriptiva** (definición matemática + interpretación): media, mediana, moda, cuantiles, IQR, varianza, SD. 3. **Forma de la distribución**: asimetría, curtosis (idea), estandarización (z-scores), **error estándar** y **IC**. 4. **Exploración gráfica**: histogramas (Sturges vs Freedman–Diaconis), densidad, boxplot (anatomía), QQ-plot. 5. **Ejemplo aplicado** (tres tratamientos): reproducibilidad, resumen por grupo, interpretación biológica. 6. **Submuestras ≠ réplicas** y **NA**: tipos de ausencia y manejo en R. 7. **Transformaciones** (log, sqrt) y cuándo usarlas. 8. Actividades guiadas + lectura recomendada. --- ## Biometría: propósito y flujo - **Pregunta científica** → **diseño** → **datos** → **análisis** → **interpretación** → **reporte**. - La **estadística descriptiva** es el primer espejo del experimento: detecta **sesgos**, **errores** y **patrones**. - En investigación, buscamos **rigor conceptual** + **ejecución reproducible** en R. **Buenas prácticas** 1) Versionar scripts · 2) Incluir autor y fecha · 3) Anotar metadatos · 4) Registrar decisiones de limpieza y exclusión. --- # ¿Qué significa "describir datos"? Cuando tenemos un conjunto de observaciones (ej: 10 alturas de plantas), podemos: 1. **Organizar** los datos → tablas, vectores en R. 2. **Resumir numéricamente** → media, mediana, varianza. 3. **Representar gráficamente** → histogramas, boxplots. Esto se llama **estadística descriptiva**. --- # ¿Qué es R? - Lenguaje de programación estadístico. - Ideal para análisis de datos en biología. - Trabajaremos en **RStudio** con 4 paneles: - Script (código) - Consola (ejecución) - Environment (objetos en memoria) - Gráficos / Archivos / Ayuda --- # Estructuras de datos en R (panorama) - **Vector**: secuencia ordenada de un solo tipo (numérico, lógico, carácter). - **Matriz**: arreglo rectangular (filas × columnas) de **un** tipo. - **Data frame**: tabla experimental (columnas = variables; filas = observaciones) de **tipos mixtos**. - **Lista**: contenedor heterogéneo (vectores, tablas, modelos). - **Factor**: variable categórica con **niveles** (ordenados o no). --- Tipos base útiles: `numeric`, `integer`, `character`, `logical`, `factor`, `Date`, `POSIXct`. Coerción automática (cuidado): número + texto → **texto**. R busca un **tipo común** al combinar/operar: `logical` → `integer` → `numeric` → `character`. > Por eso, si mezclas número y texto en un vector, gana `character` y “número + texto” termina como texto (o en `NA` si no es convertible a número). --- # Veamos ejemplos (tipos base) **numeric** — Números reales (con decimales). ``` r x <- 3.14; typeof(x) # "double" ``` ``` ## [1] "double" ``` **integer** — Enteros exactos. ``` r n <- 10L; typeof(n) # "integer" ``` ``` ## [1] "integer" ``` **character** — Texto (cadenas). ``` r s <- "tomate"; typeof(s) # "character" ``` ``` ## [1] "character" ``` --- **logical** — Valores booleanos. ``` r b <- TRUE; typeof(b) # "logical" ``` ``` ## [1] "logical" ``` **factor** — Categóricas con niveles fijos (útiles para modelos/ANOVA). ``` r f <- factor(c("control","infectado","control")) f # levels: control < infectado ``` ``` ## [1] control infectado control ## Levels: control infectado ``` ``` r # ⚠️ as.numeric(f) devuelve códigos (1,2,...) de los niveles ``` **Date / POSIXct** — Fechas y fechas‑hora. ``` r d <- as.Date("2025-09-23") class(d) # "Date" ``` ``` ## [1] "Date" ``` ``` r t <- as.POSIXct("2025-09-23 18:30:00", tz="America/Mexico_City") class(t) # "POSIXct" "POSIXt" ``` ``` ## [1] "POSIXct" "POSIXt" ``` --- ## Coerción automática (cómo y por qué ocurre) R intenta que los elementos de un mismo vector o el resultado de una operación tengan un tipo común (jerarquía: `logical → integer → numeric → character`). Si aparece `character`, **todo** se hace `character`. **Ejemplos clave** “número + texto → texto” al combinar en un vector: ``` r c(1, "2") # "1" "2" ``` ``` ## [1] "1" "2" ``` Conversión explícita y casos con `NA`: ``` r as.numeric("2") + 1 # 3 ``` ``` ## [1] 3 ``` ``` r as.numeric("dos") + 1 # NA + 1 -> NA (con warning) ``` ``` ## Warning: NAs introduced by coercion ``` ``` ## [1] NA ``` Lógicos en aritmética (`TRUE=1`, `FALSE=0`): ``` r 1 + TRUE # 2 ``` ``` ## [1] 2 ``` ``` r sum(c(TRUE, FALSE, TRUE)) # 2 ``` ``` ## [1] 2 ``` Enteros y numéricos: ``` r typeof(c(1L, 2.5)) # "double" ``` ``` ## [1] "double" ``` Factores a número “real” (primero a texto, luego a número): ``` r f <- factor(c("10","20")) as.numeric(f) # 1 2 (códigos) ``` ``` ## [1] 1 2 ``` ``` r as.numeric(as.character(f)) # 10 20 (valores) ``` ``` ## [1] 10 20 ``` --- # Estructuras de Datos en R — Definiciones sencillas Antes de calcular estadísticas, necesitamos saber **cómo se guardan** los datos en R. - **Vector**: lista de números o palabras en fila. - **Matriz**: tabla de números (filas y columnas). - **Data Frame**: tabla tipo Excel (puede mezclar números y texto). - **Lista**: caja que guarda objetos distintos. - **Factor**: variable categórica (ej: Tratamiento A, Tratamiento B). --- # Vector **Idea intuitiva** — Una **fila de valores**. Ejemplo (alturas cm de 5 plantas): 45, 50, 47, 52, 49. **Definición matemática** `$$\vec{v}=(v_1,v_2,\dots,v_n)$$` **En R** ``` r alturas <- c(45, 50, 47, 52, 49) alturas ``` ``` ## [1] 45 50 47 52 49 ``` --- # Matriz **Idea intuitiva** — Una **tabla de números** (p.ej., 3 plantas × 4 días). **Definición matemática** $$ A= `\begin{bmatrix} a_{11}&a_{12}&a_{13}&a_{14}\\ a_{21}&a_{22}&a_{23}&a_{24}\\ a_{31}&a_{32}&a_{33}&a_{34} \end{bmatrix}` $$ **En R** ``` r M <- matrix(1:12, nrow=3, ncol=4) M ``` ``` ## [,1] [,2] [,3] [,4] ## [1,] 1 4 7 10 ## [2,] 2 5 8 11 ## [3,] 3 6 9 12 ``` --- # Data Frame **Idea intuitiva** — Una hoja de **Excel**. Filas = observaciones (plantas, pacientes, muestras). Columnas = variables (altura, peso, frutos, tratamiento). 👉 Cada columna puede tener un **tipo distinto**: numérico, texto, factor. **En R** ``` r df <- data.frame( Planta = c("Tomate","Pepino","Calabaza"), Altura = c(45, 60, 55), Frutos = c(10, 5, 12) ) df ``` ``` ## Planta Altura Frutos ## 1 Tomate 45 10 ## 2 Pepino 60 5 ## 3 Calabaza 55 12 ``` --- # Factor **Idea intuitiva** — Una **categoría** (p.ej., Control vs Tratado). ¿Por qué importa? Etiqueta grupos y permite compararlos; R los usa en ANOVA y regresión. **En R** ``` r trat <- factor(c("Control","Tratado","Control","Tratado")) trat ``` ``` ## [1] Control Tratado Control Tratado ## Levels: Control Tratado ``` ``` r levels(trat) ``` ``` ## [1] "Control" "Tratado" ``` --- # Media **Explicación** — Promedio (suma de valores / número de datos). **Definición matemática** `$$\bar{x}=\frac{\sum_{i=1}^{n}x_i}{n}$$` **En R** ``` r plantas <- c(45,50,47,52,49,51,48,46,53,50) mean(plantas) ``` ``` ## [1] 49.1 ``` > La media es sensible a valores extremos. --- # Mediana **Explicación** — Valor central con datos ordenados (robusta a extremos). **En R** ``` r median(plantas) ``` ``` ## [1] 49.5 ``` --- # Moda **Explicación** — Valor que **más se repite**. **En R (frecuencias)** ``` r table(plantas) # la moda es el valor con mayor frecuencia ``` ``` ## plantas ## 45 46 47 48 49 50 51 52 53 ## 1 1 1 1 1 2 1 1 1 ``` --- # Varianza y Desviación Estándar (SD) **Ideas clave** - La **varianza** mide dispersión alrededor de la media. - La **SD** es la raíz de la varianza (mismas unidades que los datos). **Fórmula** `$$s^2=\frac{\sum_{i=1}^{n}(x_i-\bar{x})^2}{n-1} \qquad s=\sqrt{s^2}$$` **En R** ``` r var(plantas) ``` ``` ## [1] 6.766667 ``` ``` r sd(plantas) ``` ``` ## [1] 2.601282 ``` --- # Rango e IQR - **Rango**: máximo − mínimo. - **IQR**: rango intercuartílico = \(Q_3-Q_1\) (mitad central). **En R** ``` r max(plantas) - min(plantas) ``` ``` ## [1] 8 ``` ``` r IQR(plantas) ``` ``` ## [1] 3.5 ``` > El rango es sensible a outliers; el IQR es más robusto. --- # Histogramas **Idea** — Muestran **cómo se distribuyen los datos** por intervalos (bins). La forma depende del ancho de los bins (muy anchos: poco detalle; muy estrechos: ruido). **En R** ``` r hist(plantas, main="Distribución de alturas", xlab="Altura (cm)", col="lightblue", border="black") ``` <!-- --> --- # Boxplot **Idea** — Resume mediana, cuartiles (caja), bigotes y outliers. Bigotes: hasta \(1.5\times IQR\). Puntos fuera: valores atípicos. **En R** ``` r boxplot(plantas, main="Alturas de plantas", ylab="cm", col="lightgreen") ``` <!-- --> --- # Ejemplo Experimental · Actividad 1) Data frame con 3 tratamientos (Control, Fert A, Fert B). 2) Simular 5 alturas por tratamiento. 3) Calcular: media, mediana, varianza, SD por grupo. 4) Hacer un boxplot comparativo. 5) Interpretar: ¿qué tratamiento parece más efectivo? --- # Conclusiones - La descriptiva da **resúmenes claros** de los datos. - **Media, mediana y moda** describen el centro. - **Varianza, SD e IQR** describen la dispersión. - **Gráficos** revelan patrones que la tabla no muestra. - Base para **pruebas de hipótesis** y **ANOVA**.