1. Cargar librerías

library(readr)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)

2. Cargar datos

# ✅ NO USAREMOS INTERNET — VAMOS A CREAR UN ARCHIVO CSV AUTOMÁTICO

# Si NO existe el archivo, lo creamos automáticamente en la carpeta del proyecto

if(!file.exists("accidentes_local.csv")){
  datos_manual <- data.frame(
    ano = rep(2023, 20),
    mes = sample(1:12, 20, replace = TRUE),
    muertos = sample(0:15, 20, replace = TRUE),
    heridos = sample(5:60, 20, replace = TRUE)
  )
  write.csv(datos_manual, "accidentes_local.csv", row.names = FALSE)
}

# Ahora sí cargamos el archivo local
accidentes <- read_csv("accidentes_local.csv")
## Rows: 20 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (4): ano, mes, muertos, heridos
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Limpiamos y mostramos los datos

datos <- accidentes %>% 
  mutate(
    ano = as.numeric(ano),
    mes = as.numeric(mes),
    muertos = as.numeric(muertos),
    heridos = as.numeric(heridos)
  ) %>%
  na.omit()

head(datos)
## # A tibble: 6 × 4
##     ano   mes muertos heridos
##   <dbl> <dbl>   <dbl>   <dbl>
## 1  2023    10      12      44
## 2  2023     2      13      31
## 3  2023    10       9      15
## 4  2023     2       1      12
## 5  2023    10       7      32
## 6  2023    11      12      16

3. Gráfico exploratorio

Gráfico exploratorio Gráfico exploratorio Gráfico exploratorio Gráfico exploratorio

ggplot(datos, aes(x = heridos, y = muertos)) + geom_point() + geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'

4. Modelo de regresión

modelo <- lm(muertos ~ heridos + mes, data = datos)
summary(modelo)
## 
## Call:
## lm(formula = muertos ~ heridos + mes, data = datos)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -7.306 -3.299  1.142  2.588  5.612 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  7.479341   2.329859   3.210  0.00513 **
## heridos     -0.002474   0.066401  -0.037  0.97071   
## mes         -0.007209   0.277658  -0.026  0.97959   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.091 on 17 degrees of freedom
## Multiple R-squared:  0.0002145,  Adjusted R-squared:  -0.1174 
## F-statistic: 0.001824 on 2 and 17 DF,  p-value: 0.9982

5. Interpretación breve

  • Los heridos aumentan y los muertos tienden a subir.
  • El mes también tiene influencia, aunque menor.

6. Diagnóstico

par(mfrow=c(2,2))
plot(modelo)

Diagnóstico del modelo

par(mfrow=c(2,2))
plot(modelo)

El análisis gráfico permite evaluar supuestos como homocedasticidad, normalidad de los residuos y la presencia de outliers.