##—-Maria Camila Gómez (2040636)————## ##—-Nicolás Salazar Castillo—————## ##—-Alexandra Osorio Martínez (1734535)—-##

Punto 1

Cargar los datos: BOSTON

library(MASS)
data("Boston")
datos <- Boston
names(datos)
##  [1] "crim"    "zn"      "indus"   "chas"    "nox"     "rm"      "age"    
##  [8] "dis"     "rad"     "tax"     "ptratio" "black"   "lstat"   "medv"
str(datos)
## 'data.frame':    506 obs. of  14 variables:
##  $ crim   : num  0.00632 0.02731 0.02729 0.03237 0.06905 ...
##  $ zn     : num  18 0 0 0 0 0 12.5 12.5 12.5 12.5 ...
##  $ indus  : num  2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
##  $ chas   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ nox    : num  0.538 0.469 0.469 0.458 0.458 0.458 0.524 0.524 0.524 0.524 ...
##  $ rm     : num  6.58 6.42 7.18 7 7.15 ...
##  $ age    : num  65.2 78.9 61.1 45.8 54.2 58.7 66.6 96.1 100 85.9 ...
##  $ dis    : num  4.09 4.97 4.97 6.06 6.06 ...
##  $ rad    : int  1 2 2 3 3 3 5 5 5 5 ...
##  $ tax    : num  296 242 242 222 222 222 311 311 311 311 ...
##  $ ptratio: num  15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
##  $ black  : num  397 397 393 395 397 ...
##  $ lstat  : num  4.98 9.14 4.03 2.94 5.33 ...
##  $ medv   : num  24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...

#Ajustar la variable chas como factor –> (“No”, “Si”)

datos$chas <- factor(datos$chas, labels= c("No", "Si"))
str(datos$chas)
##  Factor w/ 2 levels "No","Si": 1 1 1 1 1 1 1 1 1 1 ...

#Dar un vistazo a la variable dependiente e independiente, de manera gráfica

library(ggplot2)

#Histograma para la variable dependiente (medv)

x11()
ggplot(data=datos, mapping= aes(x=medv)) +
  geom_histogram(aes(y= ..density..), color= "black", fill="gray") + 
  geom_density(fill="black", alpha=0.2)+      
  #stat_function(fun= dnorm, args= list(mean= mean(datos$medv), sd= sd(datos$medv)))+
  theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#Histograma para la independiente (rm)

x11()
ggplot(data=datos, mapping= aes(x=rm)) +
  geom_histogram(aes(y= ..density..), color= "black", fill="gray") + 
  geom_density(fill="black", alpha=0.2)+      
  #stat_function(fun= dnorm, args= list(mean= mean(datos$medv), sd= sd(datos$medv)))+
  theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#Diagrama de cajas de la variable dependiente (medv)

x11()
ggplot(data=datos, mapping= aes(x=medv)) +
  geom_boxplot()+
  theme_bw()

#Diagrama de cajas de la variable independiente

x11()
ggplot(data=datos, mapping= aes(x=rm)) +
  geom_boxplot()+
  theme_bw()

#Conclusión de las gráficas histograma y de los diagramas de caja: como podemos ver en los gráficos, tanto la variable medv como rm parecen tener un comportamiento no normal.

#Gráfico de cuantiles para ambas variables

library(car)
## Loading required package: carData
qqPlot(datos$medv, pch=20) 

## [1] 162 163
qqPlot(datos$rm, pch=20) 

## [1] 366 365

#Conclusión de las gráficas qqplot, se evidencia que para ambas variables (medv y rm) los puntos negros están muy alejados de lo azul. Esto nos indica que las variables no se distribuyen de manera normal

#Ahora, se realizará la prueba formal para ver la normalidad de ambas variables #Ho:se distribuye normalmente #H1: no se distribuye normalmente

library(tseries)
## Warning: package 'tseries' was built under R version 4.1.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
jarque.bera.test(datos$rm)
## 
##  Jarque Bera Test
## 
## data:  datos$rm
## X-squared = 86.677, df = 2, p-value < 2.2e-16
jarque.bera.test(datos$medv)
## 
##  Jarque Bera Test
## 
## data:  datos$medv
## X-squared = 148.41, df = 2, p-value < 2.2e-16

#Conclusión: debido a que el p-valor de la prueba para ambas variables dio menor a 0.05, se rechaza la hipótesis nula, por lo que, las variables no se distribuyen de manera normal

#Limpieza de datos

#Filtrando medv = 50

datos <- subset(datos, subset= medv<50) # con esto filtramos, dejando solo los valores que son menores a 50, es decir, segmentamos la base
nrow(datos)
## [1] 490

#Este el gráfico del primer punto del taller, pues indica la relación entre medv vs rm

par(mfrow=c(1,1))
ggplot(datos, aes(x= rm, y=medv)) +
  geom_point()+
  theme_bw()

#Conclusión, esta gráfica parece indicarnos que ambas variables tienen una relación positiva, sin embargo, más adelante se hará la prueba formal para tener certeza de ello

Punto 2

#Entonces, como vimos, al parecer existe una relación directa (positiva) entre la variable número medio de habitaciones por vivienda y precio mediano de la vivienda

#Esta es la prueba formal para validar la correlación entre medv y rm #H0: no existe correlación (rho=0) #H1: La correlación es positiva (rho>0)

#Antes de aplicar la prueba es importnate tener claro que, ambas variables no tienen normalidad, por lo que aplicaremos la prueba Spearman

cor.test(x= datos$rm, y= datos$medv, alternative = "less", method = "spearman")
## Warning in cor.test.default(x = datos$rm, y = datos$medv, alternative =
## "less", : Cannot compute exact p-value with ties
## 
##  Spearman's rank correlation rho
## 
## data:  datos$rm and datos$medv
## S = 7391356, p-value = 1
## alternative hypothesis: true rho is less than 0
## sample estimates:
##       rho 
## 0.6230455

#conclusión: debido a que el p-valor es mayor que alfa (0.05), aceptamos la hipótesis nula, por lo que, no hay correlación significativa entre medv y rm.

Punto 3

Modelo Lineal Simple

Ajuste modelo medv = bo + b1*rm + error

mod1 <- lm(datos$medv ~ datos$rm)
summary(mod1)
## 
## Call:
## lm(formula = datos$medv ~ datos$rm)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -20.6928  -2.2840   0.4704   3.1676  28.0608 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -30.0051     2.4886  -12.06   <2e-16 ***
## datos$rm      8.2686     0.3963   20.86   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.724 on 488 degrees of freedom
## Multiple R-squared:  0.4715, Adjusted R-squared:  0.4704 
## F-statistic: 435.3 on 1 and 488 DF,  p-value: < 2.2e-16
redis <- residuals(mod1)
summary(redis)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -20.6928  -2.2840   0.4704   0.0000   3.1676  28.0608

#Conclusiones: en primer lugar, ante ausencia de variables explicativas, el promedio del precio de las viviendas es de $30.0051, manteniendo todo lo demás constante, con una significancia estadística del 99% y un nivel de significancia 0.05% #por otro lado, manteniendo todo lo demás constante, con una significancia estadística del 99% y un nivel de signifancia del 0.05%, ante el aumento en una unidad del número medio de habitaciones por vivienda, genera un aumento en el precio de las viviendas en $8.26 #además, vemos que la variable independiente del modelo explica el 48% de las variaciones del precio de las viviendas #Por último, para la significancia global, que dado que trabajamos con una variable pues sería algo “individual” planteamos: 𝐻𝑂: 𝛽1 = 0 #vs 𝐻𝑎: “algún”𝛽 ≠ 0 ; vemos que el p-valor es menor al alfa, #entonces, se rechaza la hipótesis nula, por lo que podemos concluir que, el modelo en conjunto es estadísticamente significativo

Mirar el juste del modelo sobre los puntos:

ggplot(datos, aes(x= rm, y= medv)) + 
  geom_point() + 
  theme_bw()+
  geom_line(aes( x = rm, 
                 y = predict(mod1, datos)), 
            color = "red")

#Conclusión: la línea roja es el modelo que usamos, como podemos ver #el modelo está subestimando y sobreestimando los valores del precio de la vivienda para viviendas con un alto número de habitaciones por vivienda y con un bajo número de habitaciones por vivienda #Quizá, para mejorar estos resultados, se deba introducir otras variables que expliquen el promedio del precio de las viviendas, tales como: la antigÜedad, el tamaño, entorno y ubicación, atributos físicos, etc. #Así pues, se necesita un modelo multivariado.