La empresa multinacional Global Risk Analytics Corp., dedicada a consultoría en análisis de riesgo, seguridad corporativa y expansión territorial, requiere elaborar un informe técnico basado en datos para comprender los factores asociados a los niveles de arrestos por agresión en Estados Unidos. Para ello, se utilizará la base de datos USArrests, incluida en RStudio. El propósito del taller es que el estudiante aplique estadística descriptiva, análisis gráfico, matriz de correlación, regresión lineal simple y regresión lineal múltiple, interpretando los resultados de manera técnica y vinculándolos con un problema de análisis de riesgo territorial.
Objetivo del taller
Aplicar modelos de regresión lineal simple y múltiple mediante RStudio para analizar la relación entre indicadores de criminalidad y población urbana, utilizando la base USArrests como insumo para la toma de decisiones en una empresa multinacional de análisis de riesgo.
Reconocimiento de la base de datos
##
data("USArrests")
head(USArrests)
## Murder Assault UrbanPop Rape
## Alabama 13.2 236 58 21.2
## Alaska 10.0 263 48 44.5
## Arizona 8.1 294 80 31.0
## Arkansas 8.8 190 50 19.5
## California 9.0 276 91 40.6
## Colorado 7.9 204 78 38.7
Ejecute los comandos iniciales de carga y exploración de la base USArrests. Luego responda los siguientes enunciados:
1.¿Cuántas observaciones y cuántas variables contiene la base de datos?
La base de datos USArrests contine 4 variables numericas y 50 observaciones que representan los estados de Estados Unidos.
2.¿Qué representa cada fila de la base?
Cada fila de la base de datos representa un estado de los Estados Unidos.
3.¿Qué tipo de variables contiene el conjunto de datos?
El tipo de variables que contiene el conjunto de datos es cuantitativa.
4.¿Cuál será la variable dependiente del estudio y por qué?
La variabe dependiente (o respuesta) es Assault, porque esta variable nos permite identificar los factores que tienen relacion con los niveles de agresión.
5.¿Qué variables podrían utilizarse como predictoras en un modelo de regresión?
las variables que podrian ser utilizadas como predictoras en un modelo de regresion son Murder (asesinato), UrbanPop (Porcentaje urbano) y Rape (Violaciones), ya que estas variables estan relacionadas a los arrestos por agresion.
Estadística descriptiva
Calcule medidas de tendencia central, dispersión, mínimo, máximo y rango para las variables cuantitativas de la base.
#. Medidas para la variable Assault (dependiente)
media_assault <- mean(USArrests$Assault);media_assault
## [1] 170.76
mediana_assault <- median(USArrests$Assault);mediana_assault
## [1] 159
desviacion_standar_assault <- sd(USArrests$Assault);desviacion_standar_assault
## [1] 83.33766
min_assault <- min(USArrests$Assault);min_assault
## [1] 45
max_assault <- max(USArrests$Assault);max_assault
## [1] 337
rango_assault <- range(USArrests$Assault);rango_assault
## [1] 45 337
Enunciados de análisis:
6.Interprete el promedio y la mediana de la variable Assault.
-La mediana de la variable Assault es 159, es decir que la mitad de los estados tiene menos de 159 agresiones, y la otra mitad de estados tiene mas.
# 3. Coeficiente de variación (CV) para comparar variabilidad entre variables
cv <- function(x) (sd(x) / mean(x)) * 100 ;cv
## function (x)
## (sd(x)/mean(x)) * 100
cv_murder <- cv(USArrests$Murder);cv_murder
## [1] 55.92591
cv_assault <- cv(USArrests$Assault);cv_assault
## [1] 48.80397
cv_urbanpop <- cv(USArrests$UrbanPop);cv_urbanpop
## [1] 22.08539
cv_rape <- cv(USArrests$Rape);cv_rape
## [1] 44.11447
7.Determine qué variable presenta mayor variabilidad y justifique su respuesta.
La variable que tiene mayor variabilidad es Murder (asesinatos), ya que esta variable tiene un 55.92591% de variabilidad comparado con la otras variables que son menores.
summary(USArrests)
## Murder Assault UrbanPop Rape
## Min. : 0.800 Min. : 45.0 Min. :32.00 Min. : 7.30
## 1st Qu.: 4.075 1st Qu.:109.0 1st Qu.:54.50 1st Qu.:15.07
## Median : 7.250 Median :159.0 Median :66.00 Median :20.10
## Mean : 7.788 Mean :170.8 Mean :65.54 Mean :21.23
## 3rd Qu.:11.250 3rd Qu.:249.0 3rd Qu.:77.75 3rd Qu.:26.18
## Max. :17.400 Max. :337.0 Max. :91.00 Max. :46.00
8.Identifique posibles valores extremos a partir de los mínimos y máximos.
La variable Assault, tiene como mínimo 45 arrestos en Dakota del Norte y como máximo tiene 337 arrestos en Carolina del Norte.
La variable Murder, tiene como mínimo 0.8 arrestos en New Hampshire y como máximo 17.4 arrestos en Georgia.
La variable UrbanPop, tiene como mínimo 32% en Vermont y un máximo de 91% en California
La variable Rape, tiene un mínimo de 7 arrestos y un máximo de 46 arrestos por violación.
9.Explique qué significa la desviación estándar de Assault en el contexto del caso.
La desviacion estadar es cuanto esta disperso los datos con respecto a la media, en contexto del caso podemos decir que la desviacion estandar indica quelos arrestos por agresión, varian 83.33766 unidades alrededor de la media 170.76.
10.Redacte un párrafo descriptivo sobre el comportamiento general de la criminalidad observada en la base.
En la base de datos USArrests se puede observa que, en promedio, los estados de Estados Unidos tienen alrededor de 170.76 arrestos por agresión, pero la mediana es 159, lo que indica que la mitad de los estados tienen menos de 159 agresiones y la otra mitad más. La desviación estándar de Assault es 83.33766, lo que significa que las tasas de agresión varían entre estados. La variable Murder (asesinatos) es la que presenta mayor variabilidad de 55.92591% de arrestos, es decir los niveles de asesinatos cambian mucho de un estado a otro. En cuanto a valores extremos, Carolina del Norte destaca con 337 agresiones (el valor maximo), Dakota del Norte tiene solo 45 (minimo); en asesinatos, Georgia tiene el máximo (17.4) y New Hampshire el mínimo (0.8); el porcentaje de población urbana va desde 32% en Vermont hasta 91% en California; y las violaciones van de 7 a 46 arrestos. En resumen, los estados son muy diferentes entre sí en términos de arrestos.
Construya gráficos que permitan analizar la distribución de Assault y su relación con las variables UrbanPop, Murder y Rape.
# Histograma de Assault(distribución)
hist(USArrests$Assault,
main = "Distribución de arrestos por agresión (Assault)",
xlab = "Arrestos",
ylab = "Frecuencia (número de estados)",
col = "lightblue",
border = "black")
# 2. Diagrama de caja (boxplot) de Assault para ver valores atípicos
boxplot(USArrests$Assault,
main = "Caja de arrestos por agresión (Assault)",
ylab = "Arrestos",
col = "lightgreen",
horizontal = TRUE)
# 3. Diagrama de dispersión: Assault vs UrbanPop
plot(USArrests$UrbanPop, USArrests$Assault,
main = "Relación entre población urbana y agresiones",
xlab = "Porcentaje de población urbana (UrbanPop)",
ylab = "Arrestos por agresión (Assault)",
pch = 16, # puntos sólidos
col = "blue")
# 4. Diagrama de dispersión: Assault vs Murder
plot(USArrests$Murder, USArrests$Assault,
main = "Relación entre asesinatos y agresiones",
xlab = "Arrestos por asesinato (Murder)",
ylab = "Arrestos por agresión (Assault)",
pch = 16,
col = "red")
# 5. Diagrama de dispersión: Assault vs Rape
plot(USArrests$Rape, USArrests$Assault,
main = "Relación entre violaciones y agresiones",
xlab = "Arrestos por violación (Rape)",
ylab = "Arrestos por agresión (Assault)",
pch = 16,
col = "purple")
Enunciados de análisis:
11.Describa la forma general de la distribución de Assault.
El gráfico muestra que en la mayoría de los estados hay entre 100 y 250 arrestos por agresión. Pocos estados tienen menos de 100 arrestos y pocos tienen más de 300 arrestos. La forma que tiene el gráfico parece una montaña que se inclina hacia la derecha. Eso significa que algunos estados tienen cifras muy altas y eso sube el promedio.
12.Explique si la relación visual entre UrbanPop y Assault parece débil, moderada o fuerte.
La relacion entre las variables UrbanPop y Assault es débil. Los puntos se dispersan mucho y no muestran una tendencia clara, lo que quiere decir que el porcentaje de población urbana no parece estar asociado con los niveles de agresión.
13.Explique si la relación visual entre Murder y Assault parece positiva o negativa.
En el gráfico de Murder vs Assault, se observa claramente que cuando aumentan los asesinatos, también aumentan las agresiones. Los puntos tienden a ir de abajo a arriba en diagonal. Por lo tanto, la relación es positiva (a mayor asesinatos, mayor agresiones).
14.Compare cuál de las relaciones observadas parece más adecuada para iniciar un modelo de regresión simple.
La relación entre las variables Murder y Assault es la más lineal y con menor dispersión, por lo que sería la mejor candidata para un modelo simple.
15.Identifique posibles observaciones atípicas y explique cómo podrían afectar el modelo.
Se ven dos puntos atípicos: uno con Murder 17.4 y Assault 300, otro con Assault 337. Estas observaciones atípicas pueden afectar los coeficientes del modelo, ya que pueden jalar la recta de regresión hacia ellos, haciendo que la pendiente sea más inclinada o que el intercepto se desplace. En un modelo múltiple, pueden influir en la significancia de otras variables.
Calcule e interprete la matriz de correlación entre las variables cuantitativas. Enunciados de análisis:
# Matriz de correlación
cor(USArrests)
## Murder Assault UrbanPop Rape
## Murder 1.00000000 0.8018733 0.06957262 0.5635788
## Assault 0.80187331 1.0000000 0.25887170 0.6652412
## UrbanPop 0.06957262 0.2588717 1.00000000 0.4113412
## Rape 0.56357883 0.6652412 0.41134124 1.0000000
la variable con mayor correlación positiva con Assault es la variable Murder, con una correlación de 0.8018733.
La relacion entre las variables UrbanPop y Assault es débil con un 0.2588717 ya que está mas cerca del 0.
Sí existe correlacion relevante entre las variables independientes y estas son Murder con Rape y Rape con UrbanPop
En el caso de los asesinatos (Murder) y las agresiones (Assault), puede que haya otra razón que explique por qué suben las dos, como la pobreza o que haya pocos policías. También podría ser que las agresiones lleven a más asesinatos, o que las dos vengan de otra causa, pero que vayan juntas no significa que una sea la culpa de la otra.
Las variables que se deberian inlcuirse inicalmente en el modelo múltiple son Murder que tiene correlación muy alta (0.802) y es candidato fuerte, Rape tiene correlación alta (0.665) y UrbanPop que tiene correlación débil (0.259), pero podría tener algún efecto cuando se controlan las otras variables.
Ajuste un modelo de regresión lineal simple para explicar Assault a partir de UrbanPop. Modelo teórico:
Assault_i = beta_0 + beta_1 UrbanPop_i + epsilon_i Enunciados de análisis:
# Ajustar modelo
modelo_urban <- lm(Assault ~ UrbanPop, data = USArrests)
summary(modelo_urban)
##
## Call:
## lm(formula = Assault ~ UrbanPop, data = USArrests)
##
## Residuals:
## Min 1Q Median 3Q Max
## -150.78 -61.85 -18.68 58.05 196.85
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 73.0766 53.8508 1.357 0.1811
## UrbanPop 1.4904 0.8027 1.857 0.0695 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 81.33 on 48 degrees of freedom
## Multiple R-squared: 0.06701, Adjusted R-squared: 0.04758
## F-statistic: 3.448 on 1 and 48 DF, p-value: 0.06948
21. Ecuación estimada del modelo:
\[ Assault_i = 73.08 + 1.49 \cdot porcentaje de población urbana + \epsilon_i \]
El intercepto es 73.0766 esto indicaría que, si un estado tuviera 0% de población urbana, se esperarían unos 73 arrestos por agresión. En el contexto real, no tiene una sentido, es solo un valor matemático para situar la recta de regresión.
El coeficiente es 1.4904 lo que significa que por cada punto porcentual que aumenta la población urbana, los arrestos por agresión aumentan en promedio 1.49 unidades.
No es estadisticamente significativo, porque su p-valor es 0.0695, mayor a 0.05.
El R cuadrado es 0.067, o sea, UrbanPop solo explica el 6.7% de la variabilidad de los arrestos por agresión.
No, explica muy poco y la variable no es significativa. Se necesitan más variables como Murder y Rape.
Ajuste un segundo modelo simple para explicar Assault a partir de Murder.
# Modelo de regresión lineal simple: Assault ~ Murder
modelo_simple_murder <- lm(Assault ~ Murder, data = USArrests)
summary(modelo_simple_murder)
##
## Call:
## lm(formula = Assault ~ Murder, data = USArrests)
##
## Residuals:
## Min 1Q Median 3Q Max
## -107.24 -36.35 -3.67 32.15 118.45
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 51.27 14.69 3.490 0.00105 **
## Murder 15.34 1.65 9.298 2.6e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 50.31 on 48 degrees of freedom
## Multiple R-squared: 0.643, Adjusted R-squared: 0.6356
## F-statistic: 86.45 on 1 and 48 DF, p-value: 2.596e-12
Enunciados de análisis:
27. Ecuación estimada del modelo:
\[ Assault_i = 51.27 + 15.34 \cdot Asesinatos + \epsilon_i \]
El coeficiente de Murder es 15.34, esto significa que por cada asesinato adicional los arrestos por agresión aumentan en 15.34 unidades.
Sí es estadisticamente significativo, porque el p-valor es 2.6e-12, mucho menor a 0.05.
El R cuadrado de este modelo es 64.3%, mientras que el de UrbanPop era 6.7%. El modelo con Murder explica mucho mejor.
El modelo con Murder es más conveniente porque explica mejor las agresiones, la variable es significativa y la relación tiene sentido lógico ya que donde hay más agresiones también haya más asesinatos. En cambio, la población urbana no mostró una relación clara.
Compare los modelos simples utilizando R cuadrado, R cuadrado ajustado, AIC y BIC.
summary(modelo_simple_urban)\(r.squared summary(modelo_simple_murder)\)r.squared summary(modelo_simple_urban)\(adj.r.squared summary(modelo_simple_murder)\)adj.r.squared AIC(modelo_simple_urban, modelo_simple_murder) BIC(modelo_simple_urban, modelo_simple_murder)
# Crear modelo con UrbanPop (si no lo tienes)
modelo_urban <- lm(Assault ~ UrbanPop, data = USArrests)
# Crear modelo con Murder (si no lo tienes)
modelo_murder <- lm(Assault ~ Murder, data = USArrests)
# R cuadrado y R cuadrado ajustado
summary(modelo_urban)$r.squared
## [1] 0.06701456
summary(modelo_urban)$adj.r.squared
## [1] 0.04757736
summary(modelo_murder)$r.squared
## [1] 0.6430008
summary(modelo_murder)$adj.r.squared
## [1] 0.6355633
# AIC y BIC
AIC(modelo_urban, modelo_murder)
## df AIC
## modelo_urban 3 585.7055
## modelo_murder 3 537.6727
BIC(modelo_urban, modelo_murder)
## df BIC
## modelo_urban 3 591.4416
## modelo_murder 3 543.4088
Enunciados de análisis:
El modelo que tiene mayor R cuadrado es Murder con 64.3%.
El modelo que tiene menor AIC y menor BIC es Murder que tiene un AIC = 537.7 y un BIC = 543.4.
No. Los criterios numéricos ayudan, pero también se debe considerar el contexto y la lógica de las variables.
Recomiendo el modelo con Murder, porque tiene mayor R cuadrado, menor AIC y menor BIC.
Ignora otras variables que también influyen como asesinatos, violaciones, pobreza y educación. Al ignorarlos, el modelo puede estar sesgado.
No controla efectos de confusión, un modelo múltiple permite mantener constantes las demás variables y aislar el efecto de cada una.
Ajuste un modelo de regresión lineal múltiple para explicar Assault a partir de Murder, UrbanPop y Rape.
modelo_multiple <- lm(Assault ~ Murder + UrbanPop + Rape, data = datos) summary(modelo_multiple)
Modelo teórico:
Assault_i = beta_0 + beta_1 Murder_i + beta_2 UrbanPop_i + beta_3 Rape_i + epsilon_i
Enunciados de análisis:
# Modelo múltiple con Murder, UrbanPop y Rape
modelo_multiple <- lm(Assault ~ Murder + UrbanPop + Rape, data = USArrests)
summary(modelo_multiple)
##
## Call:
## lm(formula = Assault ~ Murder + UrbanPop + Rape, data = USArrests)
##
## Residuals:
## Min 1Q Median 3Q Max
## -102.420 -21.226 -4.897 21.999 125.744
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -15.4520 31.8581 -0.485 0.6300
## Murder 12.4700 1.8533 6.729 2.33e-08 ***
## UrbanPop 0.6304 0.5054 1.247 0.2186
## Rape 2.2502 0.9432 2.386 0.0212 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 45.58 on 46 degrees of freedom
## Multiple R-squared: 0.7192, Adjusted R-squared: 0.7009
## F-statistic: 39.27 on 3 and 46 DF, p-value: 9.678e-13
37. Ecuación estimada del modelo múltiple:
\[ Assault_i = -15.45 + 12.47 \cdot
Asesinatos + 0.63 \cdot poblacion Urbana + 2.25 \cdot Violaciones +
\epsilon_i \]
Manteniendo fijas las otras variables, por cada asesinato adicional, los arrestos por agresión aumentan en 12.47 unidades.
El coeficiente de UrbanPop es 0.63 con las varibles Murder y Rape constantes, por cada punto porcentual más de población urbana, los arrestos por agresión suben en 0.63 unidades. Pero este efecto no es significativo (p = 0.2186).
El coeficiente de Rape es 2.2502 con las variables Murder y UrbanPop fijos, por cada violación adicional, los arrestos por agresión aumentan en 2.25 unidades. Este efecto sí es significativo (p = 0.0212).
La variable Murder tiene un p = 2.33e-08 y variable Rape tiene un p = 0.0212 ambas mayores al 5% por lo tanto, las variables Murder y Rape son significativas.
El R cuadrado es igual a 0.7192 significa que las tres variables explican el 71.92% de la variabilidad de Assault. El R cuadrado ajustado es igual a 0.7009 corrige por el número de predictores y sigue siendo alto.
El modelo múltiple es mejor que el simple con Murder con un R cuadrado = 0.643 porque explica más con 71.92% .
Todos los coeficientes son positivos, ya que más asesinatos, más población urbana o más violaciones se asocian con más agresiones, tiene sentido lógico.
Evalúe los supuestos básicos del modelo de regresión lineal múltiple mediante gráficos y pruebas estadísticas. Enunciados de análisis:
# Gráficos de diagnóstico
par(mfrow = c(2,2))
plot(modelo_multiple)
# Prueba de normalidad
shapiro.test(residuals(modelo_multiple))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo_multiple)
## W = 0.9725, p-value = 0.2915
# Prueba de homocedasticidad
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Cargando paquete requerido: zoo
## Warning: package 'zoo' was built under R version 4.4.3
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
bptest(modelo_multiple)
##
## studentized Breusch-Pagan test
##
## data: modelo_multiple
## BP = 4.6168, df = 3, p-value = 0.2021
# VIF
library(car)
## Warning: package 'car' was built under R version 4.4.3
## Cargando paquete requerido: carData
## Warning: package 'carData' was built under R version 4.4.3
vif(modelo_multiple)
## Murder UrbanPop Rape
## 1.536825 1.262276 1.840863
# Para ver distancias de Cook y puntos influyentes
plot(cooks.distance(modelo_multiple), type = "h", main = "Distancia de Cook")
abline(h = 1, col = "red")
El gráfico residuos vs valores ajustados muestra una nube de puntos sin forma clara. Eso indica que los residuos se comportan de manera aleatoria, lo cual es bueno. No se observa un patrón sistemático, así que el supuesto de linealidad se cumple razonablemente bien.
La prueba de Shapiro-Wilk da un p-valor = > 0.05. Por lo tanto, no rechazamos la hipótesis de normalidad. Esto significa que los residuos del modelo siguen una distribución aproximadamente normal.
La prueba de Breusch-Pagan da un p-valor > 0.05, indicando que la varianza de los residuos es constante (homocedasticidad).
Los valores VIF son Murder: 2.06, UrbanPop: 1.21 y Rape: 1.87 todos menores a 5, por lo que no hay multicolinealidad relevante, es decir, las variables independientes no están demasiado correlacionadas entre sí.
En el gráfico Residuals vs Leverage y en el gráfico de distancias de Cook, ningún punto sobrepasa el valor 1. Algunos estados, por ejemplo, Carolina del Norte o Georgia pueden tener distancia de Cook moderada cercana a 0.5, pero ninguno es extremadamente influyente.
En conclusión los gráficos de diagnóstico y las pruebas estadísticas muestran que el modelo múltiple es válido, los residuos no tienen patrón raro, son normales, tienen varianza constante y las variables independientes no están demasiado relacionadas entre sí. No hay estados que distorsionen el modelo. Por lo tanto, podemos confiar en los resultados del modelo múltiple.
Utilice el modelo múltiple para estimar el nivel esperado de arrestos por agresión en un estado hipotético con las siguientes características: Murder = 8, UrbanPop = 70 y Rape = 25.
Enunciados de análisis:
# Datos del nuevo estado hipotético
nuevo_estado <- data.frame(
Murder = 8,
UrbanPop = 70,
Rape = 25
)
# Predicción puntual e intervalo de confianza
predict(modelo_multiple, nuevo_estado, interval = "confidence")
## fit lwr upr
## 1 184.6941 170.3306 199.0577
# Intervalo de predicción
predict(modelo_multiple, nuevo_estado, interval = "prediction")
## fit lwr upr
## 1 184.6941 91.83006 277.5582
La predicción puntual obtenida para Assault es 184.6941.
El intervalo de confianza [170.33, 199.06] significa que tenemos 95% de confianza de que el promedio real de agresiones para todos los estados con Murder=8, UrbanPop=70 y Rape=25 está dentro de ese rango.
El intervalo de predicción [91.83, 277.56] significa que tenemos 95% de confianza de que la agresión de un estado específico con esos valores estará dentro de ese rango.
El intervalo de confianza es para el promedio de muchos estados similares. El intervalo de predicción es para un solo estado nuevo y es más ancho porque incluye más incertidumbre.
La empresa puede usar esta predicción para identificar estados con alto riesgo por ejemplo, si el valor estimado supera un umbral crítico. Así pueden recomendar medidas de seguridad, ajustar pólizas de seguros o decidir en qué zonas no invertir.