U1A9

Erick Luke

24/9/2020

AUMENTO DE VIOLENCIA CON ARMAS EN ESTADOS UNIDOS DE 1978 A 1998

library(pacman)
p_load("readr", "tidyverse", "DT","prettydoc")

Regresión lineal simple

Importar

datos

datos <- read.csv("Guns.csv")

Transformar

year <- as.numeric(datos$Año)
violencia <- as.numeric(datos$violencia)
violent <- data.frame(year, violencia)
names(violent)
## [1] "year"      "violencia"

Visualizar

  • Gráfico de correlación, gráfico de pares
head(violent)
##   year violencia
## 1 1979     350.9
## 2 1980     392.6
## 3 1981     430.1
## 4 1982     304.2
## 5 1983     237.2
## 6 1984     242.1
pairs(violent)

## modelar

Grado de correlación lineal

  • Matriz de coeficientes de correlación:
cor(violent) # que tan relacionado esta los datos 
##                 year  violencia
## year       1.0000000 -0.5923799
## violencia -0.5923799  1.0000000

Cálculo y representación de la recta de mínimos cuadrados

regresion <- lm(violencia ~ year, data=violent)
summary(regresion)
## 
## Call:
## lm(formula = violencia ~ year, data = violent)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -82.306 -16.774   1.716  16.251 100.777 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 10052.431   3046.011   3.300  0.00376 **
## year           -4.908      1.531  -3.205  0.00466 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.5 on 19 degrees of freedom
## Multiple R-squared:  0.3509, Adjusted R-squared:  0.3168 
## F-statistic: 10.27 on 1 and 19 DF,  p-value: 0.004662
  • Entonces, la recta de mínimos cuadrados, sería la siguiente:

\[ y = 10052.431 - 4.908 x\] ### Representación gráfica de la recta

plot (violent$year, violent$violencia, xlab = "Año", ylab="violencia")
abline(regresion)

Modelación de valores

new.time <- data.frame(year = seq(1978,1998))
predict(regresion, new.time)
##        1        2        3        4        5        6        7        8 
## 344.0471 339.1390 334.2308 329.3226 324.4144 319.5062 314.5981 309.6899 
##        9       10       11       12       13       14       15       16 
## 304.7817 299.8735 294.9653 290.0571 285.1490 280.2408 275.3326 270.4244 
##       17       18       19       20       21 
## 265.5162 260.6081 255.6999 250.7917 245.8835

Inferencia en el modelo de regresión lineal simple

  • Los errores típicos de los estimadores de los parámetros \(\beta_0\) y \(\beta_1\) se encuentran en la columna Std Error de la salidad anterior. Los valores son: 3046.011 y 1.531 respesctivamente.

  • Los intervalos de confianza de los parámetros se obtienen con el comando confint. El parámetro level permite elegir el nivel de confianza (por lo regular es 0.95)## Inferencia en el modelo de regresión lineal simple

Suponemos que los datos proceden de un modelo de regresión simple de la forma:

\[ y_i = \beta_0 + \beta_1 x_i + \epsilon_i, \ \ \ \ i=1,\ldots,n,\] en donde:

Los errores aleatorios \(\epsilon_i\) son independientes con distribución normal de media 0 y varianza \(\sigma^2\)

Bajo este modelo:

confint(regresion)
##                   2.5 %      97.5 %
## (Intercept) 3677.056794 16427.80476
## year          -8.113483    -1.70288
confint(regresion, level=0.90)
##                     5 %         95 %
## (Intercept) 4785.473469 15319.388089
## year          -7.556212    -2.260151

¿Qué tan confiable es este modelo? Comparativa de datos reales vs datos predecidos

Los intervalos de confianza para la respuesta media y los intervalos de confianza para la respuesta se pueden obtener con el comando predict. Por ejemplo, el código a continuación estima y representa los dos tipos de intervalores (pare el rango del tiempo en los años 19478 a 1998), los de predicción en rojo.

new.time <- data.frame(time = seq(1978,1998))
# Gráfico de dispersión y recta
plot(violent$year, violent$violencia, xlab = "Años", ylab = "Violencia")
abline(regresion)


#Intervalos de confianza de la respuesta media
# ic es una matriz con tres columnas:
#La primera es la predicción, las otras son los extremos del intervalo

ic <- predict(regresion,new.time, interval = "confidence")
lines(new.time$time, ic[, 2], lty=2)
lines(new.time$time, ic[, 3], lty=2)

#Intervalos de predicción


ic <- predict(regresion,new.time, interval = "prediction")
lines(new.time$time, ic[, 2], lty=2, col = "red")
lines(new.time$time, ic[, 3], lty=2, col = "red")

## ANOVA

  • La tabla de análisis de varianza se obtiene con el comando ANOVA
anova(regresion)
## Analysis of Variance Table
## 
## Response: violencia
##           Df Sum Sq Mean Sq F value   Pr(>F)   
## year       1  18549 18549.5  10.272 0.004662 **
## Residuals 19  34311  1805.8                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1