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.
El taller no consiste únicamente en ejecutar código. Cada resultado debe ser interpretado con lenguaje estadístico claro, evitando conclusiones mecánicas o sin sustento.
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.
data("USArrests")
str(USArrests)
## 'data.frame': 50 obs. of 4 variables:
## $ Murder : num 13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ...
## $ Assault : int 236 263 294 190 276 204 110 238 335 211 ...
## $ UrbanPop: int 58 48 80 50 91 78 77 72 80 60 ...
## $ Rape : num 21.2 44.5 31 19.5 40.6 38.7 11.1 15.8 31.9 25.8 ...
La base de datos USArrests compone de 50 observaciones y 4 variables
Cada fila representa un estado de Estados Unidos.
Contiene 4 variables Cuantitaivas.
Nuestra variable dependiente será Assault por qué varían los arrestos por agresión.
Las variables predictoras son: Murder, UrbanPop, Rape.
Calcule medidas de tendencia central, dispersión, mínimo, máximo y rango para las variables cuantitativas de la base.
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
En promedio hay 170.8 de arrestos por agresión y con una mediana 159 arestos por agresión.
sapply(USArrests, sd)
## Murder Assault UrbanPop Rape
## 4.355510 83.337661 14.474763 9.366385
La variable con mas variabilidad es Assault en comparación a otras variables, esto se debe a los datos no solo son de un estado sido de varios estados.
sapply(USArrests, range)
## Murder Assault UrbanPop Rape
## [1,] 0.8 45 32 7.3
## [2,] 17.4 337 91 46.0
La desviación estándar de Assault muestra qué tan dispersos están los niveles de arrestos por agresión del valor promedio.
Algunos estados tienen niveles muy altos de criminalidad, mientras que otros son mucho más bajos. Variables como Assault y Murder muestran mucha variación, lo que indica que en ciertos estados la violencia es mucho mayor. Además, pareciera que a mayor población urbana, también aumentan los niveles de criminalidad.
Construya gráficos que permitan analizar la distribución de Assault y su relación con las variables UrbanPop, Murder y Rape.
hist(USArrests$Assault)
Visualmente podemos ver que es asimetrica y con los datos concentrados en su media.
library(ggplot2)
ggplot(USArrests, aes(UrbanPop, Assault))+
geom_point() +
geom_smooth(method = "lm")+
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
Se puede ver que es una relacion débil por que estan muy dispersos los datos
library(ggplot2)
ggplot(USArrests, aes(Murder, Assault))+
geom_point() +
geom_smooth(method = "lm")+
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
La relación es positiva.
La relación entre Murder y Assault parece más mejor.
boxplot(USArrests$Murder,USArrests$Assault,horizontal = T)
### Respuesta: Al haber hecho el analisis gráfico de mis variables con
la ayuda del boxplot se puedo ver ya ausencia de datos atípicos que
puedan afectar mi modelo. ´ # Actividad 4. Matriz de correlación Calcule
e interprete la matriz de correlación entre las variables cuantitativas.
Enunciados de análisis: ## 16.Identifique la variable con mayor
correlación positiva con Assault.
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 que tiene mayor corelación con Assault es Murder.
Tiene una relación débil.
No existe correlaciones relevantes sino moderadas.
La correlación solo muestra que dos variables están relacionadas, pero no significa que una provoque a la otra.
Se pueden aumentar Murder, UrbanPop y Rape porque todas se relacionan positivamente con Assault.
Ajuste un modelo de regresión lineal simple para explicar Assault a partir de UrbanPop.
\(Assault_i =\beta_0 + \beta_1 UrbanPop_i +\epsilon_i\) Enunciados de análisis:
modelo_simple_urban <- lm(Assault ~ UrbanPop, data = USArrests)
summary(modelo_simple_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
El ecuación del modelo estimado es: \[ \widehat{Assault}=73.0766+1.4904UrbanPop \]
El intercepto dice que si UrbanPop fuera 0, Assault sería 73.08, pero esto no tiene sentido en la práctica porque no hay estados con 0% de población urbana; es solo un valor teórico del modelo.
Por cada 1% más de personas que viven en ciudades, se registran en promedio, 1.49 arrestos más por agresión.
No es estadísticamente significativo ya su p-valor es mas alto que el 0.05.
\(R^2=0.06701\): esto nos indica que el 6.701% de los datos abarca nustro modelo.
No el modelo no es suficiente para explicar completamente ya que el \(R^2\) es bajo.
Ajuste un segundo modelo simple para explicar Assault a partir de 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
La ecuación del modelo estimado es: \[ \widehat{Assault}=51.27+15.34 Murder \]
Por cada aumento de una unidad en Murder,Assault aumentan en promedio, 15.34 unidades.
Es estadísticamente significativa porque su p-valor es menor a 0.05.
En comparación al anterior modelo que usa UrbanPop en este modelo actual nuestro \(R^2=0.643\) es mas alto.
El modelo simple que nos resulta conveniente comparando ambos modelos es cuando usa Murder ya que su \(R^2\) es mas alto y estadísticamente significativo.
Compare los modelos simples utilizando R cuadrado, R cuadrado ajustado, AIC y BIC.
summary(modelo_simple_urban)$r.squared
## [1] 0.06701456
summary(modelo_simple_murder)$r.squared
## [1] 0.6430008
summary(modelo_simple_urban)$adj.r.squared
## [1] 0.04757736
summary(modelo_simple_murder)$adj.r.squared
## [1] 0.6355633
AIC(modelo_simple_urban, modelo_simple_murder)
BIC(modelo_simple_urban, modelo_simple_murder)
El modelos simple murder indica mayor R cuadrado
El modelo simple de murder presenta menor AIC y menor BIC.
No basta solo con ver los criterios números también es importante que el modelo tenga sentido en la realidad y se entienda bien en el contexto del problema que se está estudiando.
Se recomienda usar Modelo Simple Murder para una primera aproximación.
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 = 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
Modelo teórico: \(Assault_i = \beta_0 + \beta_1 Murder_i + \beta_2 UrbanPop_i + \beta_3 Rape_i + \epsilon_i\)
El modelo múltiple estimado es: \[ \widehat{Assault}=-15.4520+12.4700 Murder+0.6304UrbanPop+2.2502Rape \]
Manteniendo contantes a UrbanPop y Rape donde Murder incrementa en promedio 12.47 unidades los arrestos por agresión.
Manteniendo constante a Murder y Rape en UrbanPop incrementa en promedio 0.63 unidades los arrestos por agresión.
Manteniendo constante a Murder y UrbanPop en Rape incrementa en promedio 2.25 unidades los arrestos por agresión.
Las variables que son estadísticamente significativas son: - Murder - Rape
El \(R^2=0.7192\) nos da a conocer que nuestro modelo abarca el 71.92% de nuestros datos. Mientras que el $Ajusted-R^2=0.7009 $ nos indica que el nuestro modelo se ajusta con un 70.09% a los datos.
El modelo múltiple ofrece mejor explicación estadística que los modelos simples porque presenta un mayor \(R^2\)
Los coeficientes tienen signos que tienen sentido en el contexto, porque a mayor nivel de Murder, UrbanPop y Rape, se espera que también aumenten los arrestos por agresión.
Evalúe los supuestos básicos del modelo de regresión lineal múltiple mediante gráficos y pruebas estadísticas.
par(mfrow = c(2,2))
plot(modelo_multiple)
Si ven vizualmente que nuestros residuos muestran un patrón aleatorio y indica que nuestros datos se ajustan a nuestro modelo
\(H_0:\) Los residuos presentan normalidad.
\(H_1:\) Los residuos no presentan normalidad.
shapiro.test(residuals(modelo_multiple))
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo_multiple)
## W = 0.9725, p-value = 0.2915
Hal ver nuestro p-valor que es mayor a 0.05 rechazamos la \(H_0\) y aceptamos la \(H_1\) lo cual decimos que los residuos no presnetan normalidad.
\(H_0:\) El modelo es Homocedastica.
\(H_1:\) El modelo es Heterosedastica.
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.3
## Cargando paquete requerido: zoo
## Warning: package 'zoo' was built under R version 4.5.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
Como se que el p-value es mayor que 0.05, no se rechaza la \(H_0\) por lo que se puede decir que el modelo es homocedastica.
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Cargando paquete requerido: carData
## Warning: package 'carData' was built under R version 4.5.3
vif(modelo_multiple)
## Murder UrbanPop Rape
## 1.536825 1.262276 1.840863
Los valores VIF de muestran que son bajos y menores a 5, por lo que no existe multicolinealidad relevante en el modelo.
La mayoría de las datos gráficados presenta un comportamiento normal; sin embargo, algunos estados que sobresalen del resto y podrían influir de manera importante en los resultados de nuestro modelo.
En conclusión el modelo cumple de forma aceptable con los supuestos básicos de la regresión por ello se puede usar para explicar la variable Assault.
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.
nuevo_estado <- data.frame(
Murder = 8,
UrbanPop = 70,
Rape=25
)
predict(modelo_multiple, nuevo_estado, interval = "confidence")
## fit lwr upr
## 1 184.6941 170.3306 199.0577
predict(modelo_multiple, nuevo_estado, interval = "prediction")
## fit lwr upr
## 1 184.6941 91.83006 277.5582
La predicción puntual nos muestra que para Assault es 184.6941 arrestos por agresión por cada 100000 habitantes.
Con un nivel de confianza del 95%, el promedio esperado de Assault se encuentra entre 170.33 y 199.06.
Que el valor futuro de Assault podría estar entre 91.83 y 277.56.
El intervalo de confianza estima el promedio esperado, mientras que el intervalo de predicción estima un valor individual posible; por eso, el de predicción es más amplio.
Una empresa multinacional dedicada al análisis de riesgo podría usar esta predicción para anticipar posibles problemas y tomar decisiones antes de que ocurran. Por ejemplo, le serviría para evaluar qué tan riesgosa puede ser una zona o un cliente y así reducir pérdidas.
El análisis mostró que las variables Murder y Rape están relacionadas con los arrestos por agresión (Assault). Además, el modelo de regresión múltiple fue mejor que los modelos simples porque explicó mejor los datos. También se comprobó que el modelo cumple bien los supuestos.