Para iniciar establecemos nuestro directorio de trabajo en el proyecto de R previamente creado
wd="D:/Electiva R"
setwd(wd)
library(MASS)
library(ggplot2)
library(car)
## Loading required package: carData
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 ...
# Punto 1. Relación entre medv vs lstat: porcentaje de habitantes de estrato bajo ----
ggplot(datos, aes(x= rm, y=medv)) +
geom_point()+
theme_bw()
# Limpieza de datos ----
#filtrando medv = 50
datos <- subset(datos, subset= medv<50)
nrow(datos)
## [1] 490
iniciamos realizando los histogramas de ambas variables, la variable respuesta y la covariable rm, para observar si los datos cumplen la condición de normalidad. con un alfa = 0.05.
#Histograma
x11()
ggplot(data=datos, mapping= aes(x=medv)) +
geom_histogram(aes(y= ..density..), color= "black", fill="gray") +
geom_density(fill="black", alpha=0.05)+
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`.
x11()
ggplot(data=datos, mapping= aes(x=rm)) +
geom_histogram(aes(y= ..density..), color= "black", fill="gray") +
geom_density(fill="black", alpha=0.05)+
stat_function(fun= dnorm, args= list(mean= mean(datos$rm), sd= sd(datos$rm)))+
theme_bw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#Grafico de cuantiles
qqPlot(datos$medv, pch=20)
## [1] 254 198
Podemos concluir que en los histogramas se ve una tendencia a la normalidad, sin embargo, estas no cumple la condicion de simetria, sino que ambas son asimetricas positivas. ademas, el grafico de cuantilas nos comfirma la asimetria de los datos, mostrandonos los datos atipicos.
Por ende, al ser ambas asimetricas usaremos la correlacion de spearman:
#Test de correlación entre medv y lstat
#H1: correlación < 0 (negativa)
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
Si es valido construir un modelo lineal simple, ya que la diferencia entre las muestras residuales tiende a siguir una ecuacion lineal.