Estadística Básica
## Objetivos de Aprendizaje
- Calcular estadísticas descriptivas
- Realizar correlación y regresión
- Comprender fundamentos de pruebas de hipótesis
- Realizar t-tests y ANOVA
## Estadísticas Descriptivas
### Tendencia Central
```r
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
# Media - promedio
mean(x) # 5.5
# Mediana - valor del medio
median(x) # 5.5
# Para número impar de valores
y <- c(1, 2, 3, 4, 5)
median(y) # 3
```
### Dispersión
```r
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
# Varianza
var(x) # 9.166667
# Desviación estándar
sd(x) # 3.02765
# Rango
range(x) # 1 10
max(x) - min(x) # 9
# Rango intercuartílico
quantile(x, 0.75) - quantile(x, 0.25) # 5
# Varianza y SD para población
var(x) * (length(x) - 1) / length(x) # 8.25 (varianza poblacional)
```
### Cuantiles
```r
x <- 1:100
# Cuartiles
quantile(x) # 0% 25% 50% 75% 100%
# 1 26 50 75 100
quantile(x, probs = c(0.1, 0.9)) # Percentiles 10 y 90
# Mediana (percentil 50)
median(x) # 50.5
quantile(x, 0.5) # 50.5
```
### Resumen
```r
# Resumen rápido
summary(x)
# Min/Max
min(x) # 1
max(x) # 10
# Suma
sum(x) # 5050
```
## Análisis de Frecuencia
### Tablas
```r
# Frecuencia simple
x <- c("A", "B", "A", "C", "B", "A")
table(x)
# x
# A B C
# 3 2 1
# Proporciones
prop.table(table(x))
# x
# A B C
# 0.5 0.333333 0.166667
```
### Tabla Cruzada
```r
df <- data.frame(
genero = c("M", "F", "M", "F", "M"),
respuesta = c("Sí", "No", "Sí", "Sí", "No")
)
table(df$genero, df$respuesta)
# No Sí
# F 1 1
# M 1 2
# Usando table()
with(df, table(genero, respuesta))
# Proporciones
prop.table(table(df$genero, df$respuesta), margin = 1) # proporciones de fila
prop.table(table(df$genero, df$respuesta), margin = 2) # proporciones de columna
```
## Correlación
### Correlación de Pearson
```r
# Dos variables
x <- c(1, 2, 3, 4, 5)
y <- c(2, 4, 3, 5, 6)
cor(x, y) # 0.949
cor.test(x, y)
# En dataframe
df <- data.frame(x = 1:10, y = 2 * (1:10) + rnorm(10))
cor(df)
```
### Métodos de Correlación
```r
x <- c(1, 2, 3, 4, 5)
y <- c(5, 4, 3, 2, 1)
# Pearson (lineal)
cor(x, y) # -1
# Spearman (rango)
cor(x, y, method = "spearman") # -1
# Kendall (rango)
cor(x, y, method = "kendall") # -1
```
### Matriz de Correlación
```r
df <- mtcars[, c("mpg", "disp", "hp", "wt")]
cor(df)
```
## Regresión Lineal
### Regresión Lineal Simple
```r
# Crear datos
df <- data.frame(
x = c(1, 2, 3, 4, 5),
y = c(2.1, 4.3, 5.8, 8.2, 10.5)
)
# Ajustar modelo
modelo <- lm(y ~ x, data = df)
# Resumen
summary(modelo)
# Coeficientes
coef(modelo)
# (Intercept) x
# 0.26 2.04
# Valores predichos
fitted(modelo)
# Residuos
residuals(modelo)
```
### Regresión Lineal Múltiple
```r
df <- mtcars[, c("mpg", "disp", "hp", "wt")]
modelo <- lm(mpg ~ disp + hp + wt, data = df)
summary(modelo)
```
### Fórmulas de Modelos
```r
# y depende de x
lm(y ~ x, data = df)
# y depende de x1 y x2
lm(y ~ x1 + x2, data = df)
# y depende de x y x al cuadrado
lm(y ~ x + I(x^2), data = df)
# y depende de todas las demás variables
lm(y ~ ., data = df)
# Interacción
lm(y ~ x1 * x2, data = df)
# Sin intercepto
lm(y ~ -1 + x, data = df)
```
### Predicción
```r
# Nuevos datos
nuevos_datos <- data.frame(x = c(6, 7, 8))
# Predecir
predict(modelo, newdata = nuevos_datos)
```
## Pruebas de Hipótesis
### t-test de Una Muestra
```r
# t-test de una muestra (probar si media equals mu)
x <- c(98, 102, 95, 100, 99, 101, 97, 103, 100, 99)
# Probar si media = 100
t.test(x, mu = 100)
```
### t-test de Dos Muestras
```r
# Dos grupos independientes
grupo1 <- c(85, 90, 92, 88, 91)
grupo2 <- c(78, 82, 85, 79, 84)
# t-test de dos muestras
t.test(grupo1, grupo2)
# t-test pareado (mismos sujetos)
antes <- c(100, 102, 98, 105, 101)
despues <- c(95, 98, 92, 99, 96)
t.test(antes, despues, paired = TRUE)
```
### ANOVA
```r
# ANOVA de un factor
df <- data.frame(
grupo = rep(c("A", "B", "C"), each = 5),
valor = c(10, 12, 11, 13, 12,
20, 22, 21, 19, 23,
30, 28, 31, 29, 32)
)
resultado_anova <- aov(valor ~ grupo, data = df)
summary(resultado_anova)
```
### Prueba Chi-Cuadrado
```r
# Frecuencias observadas
observado <- matrix(c(30, 20, 25, 25), nrow = 2)
# Prueba chi-cuadrado
chisq.test(observado)
# Esperado vs observado
resultado_chi <- chisq.test(observado)
resultado_chi$expected # Frecuencias esperadas
resultado_chi$observed # Observado (igual que entrada)
resultado_chi$residuals # Residuos de Pearson
```
## Intervalos de Confianza
### IC de t-distribución
```r
x <- c(98, 102, 95, 100, 99, 101, 97, 103, 100, 99)
# Intervalo de confianza del 95%
t.test(x)$conf.int
# [1] 97.158 102.042
# attr(,"conf.level")
# [1] 0.95
# IC del 99%
t.test(x, conf.level = 0.99)$conf.int
```
### IC Bootstrap
```r
# Intervalo de confianza bootstrap
library(boot)
# Función boot
boot_mean <- function(data, indices) {
mean(data[indices])
}
# Bootstrap
boot_result <- boot(x, boot_mean, R = 1000)
boot.ci(boot_result, type = "perc")
```
## Pruebas de Normalidad
### Prueba de Shapiro-Wilk
```r
x <- rnorm(100, mean = 5, sd = 2)
# Probar normalidad
shapiro.test(x)
# p-value > 0.05 significa normal
```
### Evaluación Visual
```r
# Gráfico Q-Q
qqnorm(x)
qqline(x)
# Histograma con curva normal
hist(x, prob = TRUE)
curve(dnorm(x, mean = mean(x), sd = sd(x)), add = TRUE)
```
## Pruebas No Paramétricas
### Prueba U de Mann-Whitney
```r
# Alternativa no paramétrica a t-test
grupo1 <- c(85, 90, 92, 88, 91)
grupo2 <- c(78, 82, 85, 79, 84)
wilcox.test(grupo1, grupo2)
```
### Prueba de Kruskal-Wallis
```r
# Alternativa no paramétrica a ANOVA
df <- data.frame(
grupo = rep(c("A", "B", "C"), each = 5),
valor = c(10, 12, 11, 13, 12,
20, 22, 21, 19, 23,
30, 28, 31, 29, 32)
)
kruskal.test(valor ~ grupo, data = df)
```
## Referencia de Funciones Estadísticas
| Función | Propósito |
|---------|-----------|
| mean() | Media aritmética |
| median() | Valor mediano |
| sd() | Desviación estándar |
| var() | Varianza |
| cov() | Covarianza |
| cor() | Correlación |
| cov2cor() | Matriz de correlación |
| lm() | Regresión lineal |
| predict() | Predicciones |
| t.test() | T-test |
| aov() | ANOVA |
| chisq.test() | Prueba chi-cuadrado |
| shapiro.test() | Prueba de normalidad |
| wilcox.test() | U de Mann-Whitney |
| kruskal.test() | Kruskal-Wallis |
## Resumen de Estadística
- Estadísticas descriptivas: mean, median, sd, var, quantile, summary
- Análisis de frecuencia: table(), prop.table()
- Correlación: cor() para relaciones lineales
- Regresión: lm() para modelos lineales, predict() para nuevos datos
- t-test: una muestra, dos muestras, pareado
- ANOVA: aov() para comparar múltiples grupos
- Chi-cuadrado: chisq.test() para datos categóricos
- Pruebas no paramétricas cuando los datos no son normales
- Siempre verificar supuestos antes de probar
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →