library(readxl)
datos_vivienda <- read_excel("datos_vivienda.xlsx")
View(datos_vivienda)
x<-datos_vivienda$Area_contruida
y<-datos_vivienda$precio_millon
hist(x, col = "light blue", main = "Histograma de área construida", xlab = "Área")
boxplot(x)
summary(x)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 80.0 86.0 97.0 115.7 130.0 195.0
El histograma anterior nos muestra la variabilidad de frecuencias que existe entre construcciones, siendo las áreas entre \(80-100m^2\) las más construidas. También se evidencia que el promedio de construcción es de \(115m^2\) y el 50% de los datos están en \(97m^2\) lo cual, esta diferencia nos indica una distribución no es simétrica o normal, .
hist(y, col = "light blue", main = "Histograma de precio", xlab = "Precio")
boxplot(y)
summary(y)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 240.0 251.2 305.0 332.1 395.0 480.0
En este caso de precios, no se observa una variación de frecuencia tan diferente como se observó en el gráfico de área por lo que se puede decir que muchas de las áreas construidas tienen un mismo precio. Por otro lado, se muestra un promedio de 335 millones de pesos para la construcción de alguna área, lo cual tampoco concuerda con el 50% de los datos (305 millones).
require(ggplot2)
## Loading required package: ggplot2
require(plotly)
## Loading required package: plotly
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
data("datos_vivienda")
## Warning in data("datos_vivienda"): data set 'datos_vivienda' not found
g1=ggplot(data=datos_vivienda,aes(x=Area_contruida,y=precio_millon))+geom_point()+theme_bw()
g1
g2=ggplot(data=datos_vivienda,aes(x=Area_contruida,y=precio_millon))+geom_point()+theme_bw()+geom_smooth( se= F)
g2
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
cor(x,y)
## [1] 0.9190295
El gráfico de dispersión es la mejor manera de analizar dos variables, de modo que el coeficiente de corelación ( \(p=0.91\)) nos dice que estas dos variables están sumamente relacionadas por tratarse de una regresión directa (Si x aumenta, y tambien aumenta),pero al trasar la línea, podemos observar que tiende a ser más logarítmica que lineal.
mod= lm(y~x)
summary(mod)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -51.673 -25.612 -6.085 24.875 67.650
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 86.234 22.479 3.836 0.000796 ***
## x 2.124 0.186 11.422 3.45e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared: 0.8446, Adjusted R-squared: 0.8381
## F-statistic: 130.5 on 1 and 24 DF, p-value: 3.45e-11
Fórmula del modelo: \(Precio= 86.234+2.124(área)+e\). \(\beta_0\) no se puede interpretar por no hacerce visible en el eje x en la gráfica de dispersión y el \(\beta_1\) nos indica que cada vez que aumenta una unidad en el área, el precio aumenta 2.124
B1= 2.124
SXX=sum((x-mean(x))^2)
SIGMA=sum((y-mod$fitted.values)^2)/24
T=qt(p=0.975,df=24) #para 95% de confianza
EE=T*sqrt(SIGMA/SXX)
LI= B1-EE
LS=B1+EE
c(LI,LS)
## [1] 1.740199 2.507801
Como el 0 no está incluído en el intervalo, significa que x es significativo en el modelo (El área influye directamente en el precio)
\(H_0= \beta_1=0\) \(H_1= \beta_1≠0\)
qt(0.975,24)
## [1] 2.063899
Valor que cae fuera de la zona de aceptación de \(H_0\). Se asume como verdadera la \(H_1\) por lo que sí se comprueba de que x es significativa.
El coeficiente de determinación arrojó un valor de \(R^2= 0.8446\) lo cuál significa que el modelo explica el 84% de las variables, siendo así, un ajuste significativo.
predict(mod, list(x=110))
## 1
## 319.8706
El precio estimado para un apartamento de 110 metros es de 319 millones de pesos colombianos.
predict(mod, list(x= 110), interval = "confidence", level= 0.95)
## fit lwr upr
## 1 319.8706 306.3133 333.4279
200 millones de pesos no sería una buena oferta. Se consideraría buena oferta los valores entre 306- 303 millones de pesos colombianos.
ei=mod$residuals
ei
## 1 2 3 4 5 6 7
## -18.895336 48.137608 32.649962 -51.672533 -28.895336 25.617018 32.691142
## 8 9 10 11 12 13 14
## -22.135041 -26.771366 2.691142 -31.019307 47.245540 21.104664 -26.771366
## 15 16 17 18 19 20 21
## -18.135041 -18.895336 -18.895336 32.649962 14.154080 -1.151513 67.649962
## 22 23 24 25 26
## -11.019307 22.649962 14.732752 -50.408120 -37.308858
round(mean(ei),3)
## [1] 0
Supuesto que se cumple por defecto
par(mfrow=c(2,2))
plot(mod)
No se valida el supuesto, se presentan patrones comunes de la varianza no constante.
Sí se tiene una distribución normal, la alineación de los puntos en la gráfica o confirman.
Como se trata de una regresión más bien logarítmica, que lineal, se debe debe de transformar la variable X sacandole el logaritmo a cada valor.
trans_area<- log(datos_vivienda$Area_contruida)
ggplot(datos_vivienda,aes(x=trans_area,y=precio_millon))+geom_point()+geom_smooth( se= F)+ theme_bw()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
mod2= lm(y~trans_area)
summary(mod2)
##
## Call:
## lm(formula = y ~ trans_area)
##
## Residuals:
## Min 1Q Median 3Q Max
## -45.837 -20.153 -1.878 20.145 55.145
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -948.53 89.09 -10.65 1.42e-10 ***
## trans_area 271.88 18.88 14.40 2.63e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 27 on 24 degrees of freedom
## Multiple R-squared: 0.8963, Adjusted R-squared: 0.8919
## F-statistic: 207.4 on 1 and 24 DF, p-value: 2.63e-13
par(mfrow=c(2,2))
plot(mod2)
\(Precio= -948.53+271.88(área)+e\) es la nueva fórmula del modelo. El \(R^2\) de este modelo arroja un valor de 0.90, siendo así aún más alto el valor en el que el modelo explica los datos.
ei2=mod2$residuals
ei2
## 1 2 3 4 5 6 7
## -12.518084 36.476159 20.144640 -45.837429 -22.518084 21.968916 32.209058
## 8 9 10 11 12 13 14
## -24.425115 -19.338166 2.209058 -25.661239 35.510169 27.481916 -19.338166
## 15 16 17 18 19 20 21
## -20.425115 -12.518084 -12.518084 20.144640 1.905225 12.144449 55.144640
## 22 23 24 25 26
## -5.661239 10.144640 18.159406 -35.093167 -37.790942
round(mean(ei2),3)
## [1] 0
Se cumple el primer supuesto por defecto
La gráfica de varianza constante no muestra un patrón específico, se puede obserbar una distribución aleatoria de los puntos sobre el plano.
Se mejora la disposición de los puntos indicandonos, nuevamente, la confirmación de distribución normal.