Actividad 3

Trabajo de Modelo de regresión linear

Con base en los datos de ofertas de vivienda descargadas del portal Fincaraiz para apartamento de estrato 4 con área construida menor a 200 m2 (vivienda4.RDS) la inmobiliaria A&C requiere el apoyo de un cientifico de datos en la construcción de un modelo que lo oriente sobre los precios de inmuebles.

Con este propósito el equipo de asesores a diseñado los siguientes pasos para obtener un modelo y así poder a futuro determinar los precios de los inmuebles a negociar

  1. Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y área de la vivienda (metros cuadrados) - incluir gráficos e indicadores apropiados interpretados.

  1. Realice un análisis exploratorio bivariado de datos, enfocado en la relación entre la variable respuesta (precio) en función de la variable predictora (area construida) - incluir gráficos e indicadores apropiados interpretados.

  1. Estime el modelo de regresión lineal simple entre precio=f(area)+£. Interprete los coeficientes del modelo ß0, ß1 en caso de ser correcto.

  1. Construir un intervalo de confianza (95%) para el coeficiente ß1, interpretar y concluir si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipótesis t.

  1. Calcule e interprete el indicador de bondad R2.

  1. ¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartamento en la misma zona con 110 metros cuadrados en un precio de 200 millones sería una atractiva esta oferta? ¿Qué consideraciones adicionales se deben tener?.

  1. Realice la validación de los supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos. Utilice las pruebas de hipótesis para la validación de supuestos y compare los resultados con lo observado en los gráficos asociados.

  1. De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.

  1. De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.

  1. Estime varios modelos y compare los resultados obtenidos. En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?

  1. Con los resultados obtenidos construya un informe para los directivos de la inmobiliaria, indicando el modelo apropiado y sus principales características. A este informe se deben añadir los anexos como evidencia de la realización de los pasos anteriores.

El informe se debe entregar en formato pdf en la plataforma Bs . Adjunte los anexos que respalden el informe.

Solución del problema

Antes de comenzar con el problema crearemos un data set con la información solicitada esto debido a que no se requiere realizar el modelo sobre todoa la base si no solo para apartamentos de estrato 4 con área construida menor a 200 m2


La base que tenemos es la siguiente ,la cual procederemos a validar y de la cual filtraremos solo los datos que serán estudiados

## Loading required package: ggplot2
## Registered S3 method overwritten by 'GGally':
##   method from   
##   +.gg   ggplot2
## 
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.1     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ psych::%+%()    masks ggplot2::%+%()
## ✖ psych::alpha()  masks ggplot2::alpha()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ dplyr::select() masks MASS::select()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Loading required package: summarytools
## 
## 
## Attaching package: 'summarytools'
## 
## 
## The following object is masked from 'package:tibble':
## 
##     view

En esta sección empezaremos a dar solución a cada uno de los puntos especificados para la actividad

1. Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y área de la vivienda (metros cuadrados) - incluir gráficos e indicadores apropiados interpretados.


cómo podemos observar la base no tiene datos faltantes los cuales deben ser tratados por medio de imputación de valores, ahora miraremos los porcentajes faltantes de cada variable

Procederemos a ver la cantidad de vacíos que tiene la información

## # A tibble: 5 × 3
##   variable  n_miss pct_miss
##   <chr>      <int>    <dbl>
## 1 zona           0        0
## 2 estrato        0        0
## 3 preciom        0        0
## 4 areaconst      0        0
## 5 tipo           0        0

Precedemos a eliminar los datos duplicados de la data

## # A tibble: 932 × 5
##    zona       estrato preciom areaconst tipo       
##    <fct>      <fct>     <dbl>     <dbl> <fct>      
##  1 Zona Norte 4           220        52 Apartamento
##  2 Zona Norte 4           320       108 Apartamento
##  3 Zona Sur   4           290        96 Apartamento
##  4 Zona Norte 4           220        82 Apartamento
##  5 Zona Norte 4           220        75 Apartamento
##  6 Zona Norte 4           162        60 Apartamento
##  7 Zona Norte 4           225        84 Apartamento
##  8 Zona Norte 4           370       117 Apartamento
##  9 Zona Norte 4           155        60 Apartamento
## 10 Zona Norte 4           240        75 Apartamento
## # ℹ 922 more rows

ahora procederemos a eliminar los outliers de la informacion para lo cual utilizaremos el grafico de cajas y determinar los outliers, este proceso se realiza tantas veces sea necesario hasta que no haya Outliers

## [1] "estos son los outliers del primer Cliclo"
##  [1] 198 137 200 137 134 145 175 143 200 136 160 145 198 193 197 151 138 155 144
## [20] 140 135 143 160 184 183 160 175 150 159 200 163 160 147 173 150 137 154 152

## [1] "estos son los outliers del segundo Cliclo"
##  [1] 127 130 126 129 126 126 130 133 126 126

## [1] "estos son los outliers del tercer Cliclo"
##  [1] 124 125 124 123 125 125 125 123 125 123

## [1] "estos son los outliers del cuarto Cliclo"
## numeric(0)
## [1] "validamos si quedo la base con nulos"

Con la base ya limpia empezaremos por graficar las diferentes variables a tener en cuenta las cuales son precio y área construida

## # A tibble: 874 × 5
##    zona       estrato preciom areaconst tipo       
##    <fct>      <fct>     <dbl>     <dbl> <fct>      
##  1 Zona Norte 4           220        52 Apartamento
##  2 Zona Norte 4           320       108 Apartamento
##  3 Zona Sur   4           290        96 Apartamento
##  4 Zona Norte 4           220        82 Apartamento
##  5 Zona Norte 4           220        75 Apartamento
##  6 Zona Norte 4           162        60 Apartamento
##  7 Zona Norte 4           225        84 Apartamento
##  8 Zona Norte 4           370       117 Apartamento
##  9 Zona Norte 4           155        60 Apartamento
## 10 Zona Norte 4           240        75 Apartamento
## # ℹ 864 more rows

Ahora procederemos a colocar los indicadores apropiados para los datos de precios y área construida

## [1] "Indicadores para precio"
##      Media Mediana Moda Desviacion.Estandar Varianza Valor.Mínino Valor.Maximo
## 1 201.5572     190  240            60.22428 3626.964           78          510
##   custorisis asimetria
## 1   3.604405 0.8100439
## [1] "Indicadores para Area Construida"
##      Media Mediana Moda Desviacion.Estandar Varianza Valor.Mínino Valor.Maximo
## 1 74.29176      72   60             17.0111 289.3775           40          122
##   custorisis asimetria
## 1    2.92487 0.6941724

1.1. Interpretación de gráficos e indicadores de análisis univariado

Tanto el precio como el área construida tiene una asimetría positiva lo cual nos da a entender que la gente que realiza ventas de apartamentos en el estrato 4 hacia espacios pequeños y valores bajos
Los precios de venta de apartamentos oscilan entre 78 y 510 millones , pero en promedio la gente prefiere pagar 201 millones
El área construida oscila entre 40 metros cuadrados y 122 metros cuadrados, pero la gente en promedio prefiere apartamentos con 74 metros cuadrados



2. Realice un análisis exploratorio bivariado de datos, enfocado en la relación entre la variable respuesta (precio) en función de la variable predictora (area construida) - incluir gráficos e indicadores apropiados interpretados.



Procedemos a crear los graficos e indicadores para el análisis bivariado

## [1] "1. Diagrama de Dispersion Precio - area construida con LM"
## `geom_smooth()` using formula = 'y ~ x'

## [1] "2. Diagrama de Dispersion Presio - area construida"
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

procedemos a crear el coeficiente de correlación entre las dos variables

## [1] "el coeficiente de correlacion entre las variables es: "
## [1] 0.7041217
## [1] "Realizamos las pruebas de Hipotesis sobre P "
## 
##  Pearson's product-moment correlation
## 
## data:  BaseLimpia$areaconst and BaseLimpia$preciom
## t = 29.282, df = 872, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.6690480 0.7360662
## sample estimates:
##       cor 
## 0.7041217
## [1] "Realizamos la Matriz de coorelaciones "
##                      BaseLimpia.areaconst BaseLimpia.preciom
## BaseLimpia.areaconst                1.000              0.704
## BaseLimpia.preciom                  0.704              1.000

2.1. Interpretación de gráficos e indicadores de análisis Bivariado

Debido a lo que se muestra en el gráfico de dispersión se puede determinar que existe una relación positiva entre las variables de precio y área, esto quiere decir que entre mayor área construida mayor será el precio del inmueble
Además de lo anterior al tener el análisis de coeficiente de correlación en:

## [1] 0.7041217
podemos afirmar que la relacion es positiva debil esto debido a que el valor se encuentra en el rango de 0.3 a 0.8

3. Estime el modelo de regresión lineal simple entre precio=f(area)+£. Interprete los coeficientes del modelo ß0, ß1 en caso de ser correcto.


Antes de iniciar con el proceso de modelado, debemos asumir una hipótesis para ser validada , para este caso asumiremos que la hipótesis a probar es que a mayor cantidad de área construida mayo es el valor del inmueble osea una relacion positiva entre las variables tal y como lo vimos en el analisis bivariado


Procederemos a crear el modelo especificado

## 
## Call:
## lm(formula = preciom ~ areaconst, data = BaseLimpia)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -163.628  -25.927   -2.938   26.760  192.009 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 16.36290    6.48803   2.522   0.0118 *  
## areaconst    2.49280    0.08513  29.282   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.79 on 872 degrees of freedom
## Multiple R-squared:  0.4958, Adjusted R-squared:  0.4952 
## F-statistic: 857.4 on 1 and 872 DF,  p-value: < 2.2e-16


Procedemos a crear las transformación de variables para ver cual mejora en el R-square, empezamos con lineal - Logaritmo

## 
## Call:
## lm(formula = preciom ~ log(areaconst), data = BaseLimpia)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -160.22  -25.12   -1.20   25.05  209.98 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -620.706     27.743  -22.37   <2e-16 ***
## log(areaconst)  191.986      6.469   29.68   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.5 on 872 degrees of freedom
## Multiple R-squared:  0.5025, Adjusted R-squared:  0.5019 
## F-statistic: 880.8 on 1 and 872 DF,  p-value: < 2.2e-16

Procedemos a crear las transformación de variables para ver cual mejora en el R-square, empezamos con logaritmo - lineal

## 
## Call:
## lm(formula = log(preciom) ~ areaconst, data = BaseLimpia)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.92249 -0.13492  0.00253  0.14802  0.71428 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 4.3740084  0.0313622   139.5   <2e-16 ***
## areaconst   0.0119737  0.0004115    29.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2068 on 872 degrees of freedom
## Multiple R-squared:  0.4926, Adjusted R-squared:  0.492 
## F-statistic: 846.6 on 1 and 872 DF,  p-value: < 2.2e-16

Procedemos a crear las transformación de variables para ver cual mejora en el R-square, empezamos con logaritmo - Logaritmo

## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst), data = BaseLimpia)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.9107 -0.1243  0.0069  0.1444  0.7704 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.25689    0.13216   9.511   <2e-16 ***
## log(areaconst)  0.93549    0.03081  30.359   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2025 on 872 degrees of freedom
## Multiple R-squared:  0.5138, Adjusted R-squared:  0.5133 
## F-statistic: 921.6 on 1 and 872 DF,  p-value: < 2.2e-16

Procederemos a realizar una comparación entre los 4 modelos creados

## 
## Please cite as:
##  Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
## 
## ================================================================
##                                 Dependent variable:             
##                     --------------------------------------------
##                            preciom             log(preciom)     
##                        (1)         (2)        (3)        (4)    
## ----------------------------------------------------------------
## areaconst            2.493***               0.012***            
##                      (0.085)                (0.0004)            
##                                                                 
## log(areaconst)                 191.986***              0.935*** 
##                                  (6.469)               (0.031)  
##                                                                 
## Constant             16.363**  -620.706***  4.374***   1.257*** 
##                      (6.488)    (27.743)    (0.031)    (0.132)  
##                                                                 
## ----------------------------------------------------------------
## Observations           874         874        874        874    
## R2                    0.496       0.503      0.493      0.514   
## Adjusted R2           0.495       0.502      0.492      0.513   
## Residual Std. Error   42.789     42.502      0.207      0.202   
## F Statistic         857.429*** 880.822***  846.623*** 921.645***
## ================================================================
## Note:                                *p<0.1; **p<0.05; ***p<0.01

3.1. Interpretación de coeficientes del modelo generado lineal - lineal

El valor de R-cuadrado especifica que el primer modelo (lineal - lineal) explica la variable y con un 49 % a la variable respuesta , esto quiere decir que la variable área construida explica con este modelo al valor del inmueble con un 49%

## 
## Call:
## lm(formula = preciom ~ areaconst, data = BaseLimpia)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -163.628  -25.927   -2.938   26.760  192.009 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 16.36290    6.48803   2.522   0.0118 *  
## areaconst    2.49280    0.08513  29.282   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.79 on 872 degrees of freedom
## Multiple R-squared:  0.4958, Adjusted R-squared:  0.4952 
## F-statistic: 857.4 on 1 and 872 DF,  p-value: < 2.2e-16

Como podemos observar los valores P indican que los indicadores son significativos ya que en los dos casos es 0 o por debajo de 0.05

El valor obtenido para ß0 es de 16.36 y para ß1 es de 2.49 , teniendo en cuenta los resultados podemos determinar que por cada aumento de 1 unidad en el área el precio aumentara en 2 millones

4. Construir un intervalo de confianza (95%) para el coeficiente ß1, interpretar y concluir si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipótesis t..

El intervalo de confianza tiene los siguientes valores:

## [1] "estos son los datos del primer Modelos"
## 
## Call:
## lm(formula = preciom ~ areaconst, data = BaseLimpia)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -163.628  -25.927   -2.938   26.760  192.009 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 16.36290    6.48803   2.522   0.0118 *  
## areaconst    2.49280    0.08513  29.282   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.79 on 872 degrees of freedom
## Multiple R-squared:  0.4958, Adjusted R-squared:  0.4952 
## F-statistic: 857.4 on 1 and 872 DF,  p-value: < 2.2e-16
## [1] "estos son los intervalos de confianzo con 95%"
##              2.5 %   97.5 %
## areaconst 2.325712 2.659883

4.1. Interpretación de intervalos de confianza

Las pruebas de hipótesis sobre los coeficientes (Ho:ß0=0 y Ho:ß1=0) se rechazan dado que el valor-p en cada caso es cero
El intervalo de confianza para la pendiente ß1 se puede interpretar como: Por cada unidad adicional metro cuadrado , el precio del imbueble puede varias de 2.35 a 2.65 millones con una confianza del 95%


5. Calcule e interprete el indicador de bondad R2.

Este cálculo de R-cuadrado ya fue realizado con anterioridad y los resultados obtenidos fueron:

## 
## Call:
## lm(formula = preciom ~ areaconst, data = BaseLimpia)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -163.628  -25.927   -2.938   26.760  192.009 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 16.36290    6.48803   2.522   0.0118 *  
## areaconst    2.49280    0.08513  29.282   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.79 on 872 degrees of freedom
## Multiple R-squared:  0.4958, Adjusted R-squared:  0.4952 
## F-statistic: 857.4 on 1 and 872 DF,  p-value: < 2.2e-16

5.1. Interpretación de indicador de bondad R2

El valor de R-cuadrado especifica que el primer modelo (lineal - lineal) explica la variable area con un 49 % a la variable respuesta precio , esto quiere decir que la variable área construida explica con este modelo al valor del inmueble con un 49%


6. ¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartamento en la misma zona con 110 metros cuadrados en un precio de 200 millones sería una atractiva esta oferta? ¿Qué consideraciones adicionales se deben tener?.


Ahora procederemos a predecir cual seria el valor promedio de un apartamento de 110 metros cuadrados

## (Intercept)   areaconst 
##   16.362903    2.492797
##        fit      lwr      upr
## 1 290.5706 283.9625 297.1787

6.1. Interpretación de promedio estimado
Teniendo en cuenta que con un área construida de 110 metros cuadrados en un apartamento y un nivel de confianza de 95% , tendría un valor como mínimo de 283 millones y un máximo de 297 millones, una propuesta de 200 se encuentra muy por debajo del mínimo establecido para el modelo, por lo cual la propuesta seria muy buena, teniendo en cuenta que todos los apartamentos pertenecen al estrato 4.
Aunque se podrían ser una buena oferta si se tuvieran en cuenta variables como: tiempo del inmueble, mantenimiento, vecinos, situación del inmueble. Pero lastimosamente no poseemos estas variables esto debido a que no tiene el mismo precio un apartamento en estrato 4 recién construido, que un apartamento de 50 años de construido.


7. Realice la validación de los supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos. Utilice las pruebas de hipótesis para la validación de supuestos y compare los resultados con lo observado en los gráficos asociados.


Para la realización de los supuestos realizaremos las siguientes pruebas de Hipótesis


Normalidad : shapiro.test()
Homoscedasticidad : lmtest::bptest()
No autocorrelación : lmtest::dwtest()
outliers : visualización gráfica - boxplot(), plot()

paste("este es el proceso de Shapiro-Test")
## [1] "este es el proceso de Shapiro-Test"
Shapiro1=shapiro.test(Modelo$residuals)
Shapiro1
## 
##  Shapiro-Wilk normality test
## 
## data:  Modelo$residuals
## W = 0.98506, p-value = 8.815e-08
paste("este es el proceso de Test de Breusch-Pagan- Varianza constante")
## [1] "este es el proceso de Test de Breusch-Pagan- Varianza constante"
Breusch1=lmtest::bptest(Modelo)
Breusch1
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo
## BP = 90.497, df = 1, p-value < 2.2e-16
paste("este es el proceso de Test de Goldfeld-Quandt- Varianza constante")
## [1] "este es el proceso de Test de Goldfeld-Quandt- Varianza constante"
Goldfeld1=lmtest::gqtest(Modelo)
Goldfeld1
## 
##  Goldfeld-Quandt test
## 
## data:  Modelo
## GQ = 1.0395, df1 = 435, df2 = 435, p-value = 0.3433
## alternative hypothesis: variance increases from segment 1 to 2
paste("este es el proceso de Test de Durbin-Watson- No autocorrelación de errores")
## [1] "este es el proceso de Test de Durbin-Watson- No autocorrelación de errores"
Durbin1=lmtest::dwtest(Modelo)
Durbin1
## 
##  Durbin-Watson test
## 
## data:  Modelo
## DW = 1.3246, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

Ahora procederemos a crear los diferentes gráficos para validación de supuestos:

7.1. Interpretación de supuestos y graficos
“Hipotesis de Normalidad”
En el caso de la normalidad podemos observar que el valor del p-value esta por debajo de 0.05 lo que nos indica que no hay una distribución normal de la variable de errores

“Hipotesis de Homoscedasticidad Test de Breusch-Pagan- Varianza constante”
“Hipotesis de Homoscedasticidad Test de Breusch-Pagan- Varianza constante”


En el caso de la Homoscedasticidad podemos observar que el valor del p-value esta por debajo de 0.05 lo que nos indica que no hay una Homoscedasticidad para el caso del Test de Breusch-Pagan, es decir los errores no tienen varianza

“Hipotesis de Homoscedasticidad Test de Goldfeld-Quandt- Varianza constante”

En el caso de la Homoscedasticidad podemos observar que el valor del p-value esta por encima de 0.05 lo que nos indica que no hay una Homoscedasticidad para el caso del Test de Goldfeld-Quandt

“Hipotesis de Test de Durbin-Watson- No autocorrelación de errores”

En el caso de la Test de Durbin-Watson se realiza el calculo pero no se toma en cuenta debido a que el suspuesto se realiza mas con datos de tiempo, los cuales no poseemos en la data

Como podemos observar en el gráfico de residuales Gráfico de los residuales vs los valores ajustados no existe una distribución normal

Como podemos observar en el Gráfico de normalidad de los residuales existe una distribución no tan cercana al cero por lo cual se no ve con normalidad

Como podemos observar en el Gráfico de residuales vs variable independiente no existe una distribución normal

8. De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo

Primero calcularemos el valor de lambda por medio de lun grafico de bloxplot para determinar la transformación que mas le queda al modelo

## 
## Call:
## lm(formula = preciom ~ areaconst, data = BaseLimpia)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -163.628  -25.927   -2.938   26.760  192.009 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 16.36290    6.48803   2.522   0.0118 *  
## areaconst    2.49280    0.08513  29.282   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.79 on 872 degrees of freedom
## Multiple R-squared:  0.4958, Adjusted R-squared:  0.4952 
## F-statistic: 857.4 on 1 and 872 DF,  p-value: < 2.2e-16

## [1] -0.05050505

Debido a que el valor de Lambda esta por debajo de 0.5 podemos determinar que la mejor transformación es la de logaritmo

“Rangos de Lamba para Tranformacion”
“Rangos de Lamba para Tranformacion”

como pudimos ver todas las transformaciones del modelo fueron generadas en le punto 3 y acá solo colocaremos la comparación que se realizo de los 4 modelos para observar los resultados obtenidos


## 
## ================================================================
##                                 Dependent variable:             
##                     --------------------------------------------
##                            preciom             log(preciom)     
##                        (1)         (2)        (3)        (4)    
## ----------------------------------------------------------------
## areaconst            2.493***               0.012***            
##                      (0.085)                (0.0004)            
##                                                                 
## log(areaconst)                 191.986***              0.935*** 
##                                  (6.469)               (0.031)  
##                                                                 
## Constant             16.363**  -620.706***  4.374***   1.257*** 
##                      (6.488)    (27.743)    (0.031)    (0.132)  
##                                                                 
## ----------------------------------------------------------------
## Observations           874         874        874        874    
## R2                    0.496       0.503      0.493      0.514   
## Adjusted R2           0.495       0.502      0.492      0.513   
## Residual Std. Error   42.789     42.502      0.207      0.202   
## F Statistic         857.429*** 880.822***  846.623*** 921.645***
## ================================================================
## Note:                                *p<0.1; **p<0.05; ***p<0.01

como pudimos ver todas las transformaciones del modelo fueron generadas en le punto 3 y acá solo colocaremos la comparación que se realizo de los 4 modelos para observar los resultados obtenidos,Ahora procederemos a calcular los supuestos del 4 modelo (LOG-LOG) el cual es el que mejor se ajusta.


## [1] "este es el proceso de Shapiro-Test - Modelo Ajustado"
## 
##  Shapiro-Wilk normality test
## 
## data:  Modelo4$residuals
## W = 0.99213, p-value = 0.0001341
## [1] "este es el proceso de Test de Breusch-Pagan- Varianza constante - Modelo Ajustado"
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo4
## BP = 21.822, df = 1, p-value = 2.991e-06
## [1] "este es el proceso de Test de Goldfeld-Quandt- Varianza constante - Modelo Ajustado"
## 
##  Goldfeld-Quandt test
## 
## data:  Modelo4
## GQ = 1.091, df1 = 435, df2 = 435, p-value = 0.1821
## alternative hypothesis: variance increases from segment 1 to 2

8.1. Interpretación de ajustes y supuestos de modelo

La transformación adecuada es la de logaritmo esto debido a que el lamba esta entre -0.5 y 0.5

Luego e realizada la comparación entre todas las posibles transformaciones con logaritmo, determinamos que el mejor modelo es el de Logaritmo, Logaritmo. Por lo cual los supuestos se hacen sobre este nuevo modelo

En el siguiente punto realizaremos la comparación de los resultados de los supuestos del modelo original con el nuevo ajustado


9. De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.


Primero colocaremos la comparación de los dos modelos elegidos el original y el ajustado

## [1] "este es el Modelo Original"
## 
## Call:
## lm(formula = preciom ~ areaconst, data = BaseLimpia)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -163.628  -25.927   -2.938   26.760  192.009 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 16.36290    6.48803   2.522   0.0118 *  
## areaconst    2.49280    0.08513  29.282   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 42.79 on 872 degrees of freedom
## Multiple R-squared:  0.4958, Adjusted R-squared:  0.4952 
## F-statistic: 857.4 on 1 and 872 DF,  p-value: < 2.2e-16
## [1] "este es el Modelo Ajustado"
## 
## Call:
## lm(formula = log(preciom) ~ log(areaconst), data = BaseLimpia)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.9107 -0.1243  0.0069  0.1444  0.7704 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     1.25689    0.13216   9.511   <2e-16 ***
## log(areaconst)  0.93549    0.03081  30.359   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2025 on 872 degrees of freedom
## Multiple R-squared:  0.5138, Adjusted R-squared:  0.5133 
## F-statistic: 921.6 on 1 and 872 DF,  p-value: < 2.2e-16

Ahora procederemos a ver los supuestos de cada modelo para luego realizar su comparación


Supuestos del modelo original

## [1] "este es el proceso de Shapiro-Test"
## 
##  Shapiro-Wilk normality test
## 
## data:  Modelo$residuals
## W = 0.98506, p-value = 8.815e-08
## [1] "este es el proceso de Test de Breusch-Pagan- Varianza constante"
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo
## BP = 90.497, df = 1, p-value < 2.2e-16
## [1] "este es el proceso de Test de Goldfeld-Quandt- Varianza constante"
## 
##  Goldfeld-Quandt test
## 
## data:  Modelo
## GQ = 1.0395, df1 = 435, df2 = 435, p-value = 0.3433
## alternative hypothesis: variance increases from segment 1 to 2


Supuestos del modelo ajustado

## [1] "este es el proceso de Shapiro-Test, Modelo 4"
## 
##  Shapiro-Wilk normality test
## 
## data:  Modelo4$residuals
## W = 0.99213, p-value = 0.0001341
## [1] "este es el proceso de Test de Breusch-Pagan- Varianza constante, Modelo 4"
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo4
## BP = 21.822, df = 1, p-value = 2.991e-06
## [1] "este es el proceso de Test de Goldfeld-Quandt- Varianza constante, Modelo 4"
## 
##  Goldfeld-Quandt test
## 
## data:  Modelo4
## GQ = 1.091, df1 = 435, df2 = 435, p-value = 0.1821
## alternative hypothesis: variance increases from segment 1 to 2

9.1. Interpretación de ajustes y supuestos de modelo original y nuevo

Como podemos darnos cuenta tanto el modelo original como el modelo ajustado siguen manteniendo los mismos supuesto, aunque los valores de los supuestos del modelo ajustado son mejores que el del modelo original.

Pero el modelo ajustado tiene mejores indicadores que el original, siendo su R2 un poco mejor que el original y su desviación estándar también un poco mejor un poco mejor. Por lo cual el modelo ajustado se puede interpretar como el cambio porcentual que ocurre cuando se aumenta un 1% el área de la vivienda.

Además podemos visualizar una mejor distribución de normalización en el modelo ajustado


10. Estime varios modelos y compare los resultados obtenidos. En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?

Teniendo en cuenta los datos obtenidos en el punto 8 debemos realizar un lamba sobre la variable dependiente Y debería estar en escala logarítmica, pero para mejorar el r cuadrado debemos ampliar el espectro de variables para poder mejorarlo, lastimosamente para este curso no manejamos modelos con mas de una variable por lo cualsolo realizaremos la comparacion con los otros dos modelos logaritmicos que hemos trabajado

## 
## ================================================================
##                                 Dependent variable:             
##                     --------------------------------------------
##                            preciom             log(preciom)     
##                        (1)         (2)        (3)        (4)    
## ----------------------------------------------------------------
## areaconst            2.493***               0.012***            
##                      (0.085)                (0.0004)            
##                                                                 
## log(areaconst)                 191.986***              0.935*** 
##                                  (6.469)               (0.031)  
##                                                                 
## Constant             16.363**  -620.706***  4.374***   1.257*** 
##                      (6.488)    (27.743)    (0.031)    (0.132)  
##                                                                 
## ----------------------------------------------------------------
## Observations           874         874        874        874    
## R2                    0.496       0.503      0.493      0.514   
## Adjusted R2           0.495       0.502      0.492      0.513   
## Residual Std. Error   42.789     42.502      0.207      0.202   
## F Statistic         857.429*** 880.822***  846.623*** 921.645***
## ================================================================
## Note:                                *p<0.1; **p<0.05; ***p<0.01

Teniendo en cuenta los datos obtenidos en el punto 8 debemos realizar un lamba sobre la variable dependiente Y debería estar en escala logarítmica, pero para mejorar el r cuadrado debemos ampliar el espectro de variables para poder mejorarlo, lastimosamente para este curso no manejamos modelos con más de una variable por lo cual solo realizaremos la comparación con los otros dos modelos logarítmicos que hemos trabajado


Realizaremos los supuestos del modelo 2

## [1] "este es el proceso de Shapiro-Test Modelo 2"
## 
##  Shapiro-Wilk normality test
## 
## data:  Modelo2$residuals
## W = 0.98562, p-value = 1.463e-07
## [1] "este es el proceso de Test de Breusch-Pagan- Varianza constante Modelo 2- (y-logatirmo(x))"
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo2
## BP = 78.652, df = 1, p-value < 2.2e-16
## [1] "este es el proceso de Test de Goldfeld-Quandt- Varianza constante Modelo 2-(y-logatirmo(x))"
## 
##  Goldfeld-Quandt test
## 
## data:  Modelo2
## GQ = 1.0467, df1 = 435, df2 = 435, p-value = 0.3172
## alternative hypothesis: variance increases from segment 1 to 2

Realizaremos los supuestos del modelo 3

## [1] "este es el proceso de Shapiro-Test Modelo 3-(logaritmo(y)-x)"
## 
##  Shapiro-Wilk normality test
## 
## data:  Modelo3$residuals
## W = 0.99285, p-value = 0.0003279
## [1] "este es el proceso de Test de Breusch-Pagan- Varianza constante Modelo 3-(logaritmo(y)-x)"
## 
##  studentized Breusch-Pagan test
## 
## data:  Modelo3
## BP = 25.11, df = 1, p-value = 5.414e-07
## [1] "este es el proceso de Test de Goldfeld-Quandt- Varianza constante Modelo 3-(logaritmo(y)-x)"
## 
##  Goldfeld-Quandt test
## 
## data:  Modelo3
## GQ = 1.0926, df1 = 435, df2 = 435, p-value = 0.1781
## alternative hypothesis: variance increases from segment 1 to 2

10.1. Interpretación de ajustes y supuestos de modelo los otros modelos

Para todos los modelos logarítmicos no se cumplen los supuestos, todos tienen el mismo comportamiento para los diferentes análisis (shapiro, breuch o goldfeld)

En nuestro caso el mejor modelo es el 4 modelo (logaritmo-logaritmo), pero lastimosamente no es un muy buen modelo debido a que su r cuadrado es bastante bajo (51%) y ninguno de los supuestos se cumple por lo cual aunque es mejor que el modelo original, las mejoras no representan una diferencia significativa que permita seleccionar este modelo como el mejor modelo, se podría analizar otro tipo de transformaciones pero no las conocemos en este momento para su aplicación

11. Anexos

knitr::opts_chunk$set(echo = TRUE)
library(cubature)
library(GGally)
library(ggplot2)
library(MASS)
library(psych)
library(tidyverse)
library(naniar)
library(paqueteMETODOS)

data(vivienda4)
Muestra= subset(vivienda4, vivienda4$tipo =='Apartamento' & vivienda4$estrato==4 & vivienda4$areaconst<=200)
Muestrapersenta = Muestra[1:10, 1:4]
Faltantes = gg_miss_var(Muestra, show_pct=TRUE)
Faltantes 
## # A tibble: 5 × 3
##   variable  n_miss pct_miss
##   <chr>      <int>    <dbl>
## 1 zona           0        0
## 2 estrato        0        0
## 3 preciom        0        0
## 4 areaconst      0        0
## 5 tipo           0        0
library(dplyr)
BaseLimpia = distinct(Muestra)
BaseLimpia
g_caja<-boxplot(BaseLimpia$areaconst, main="Diagrama de Cajas del Primer Ciclo", col="skyblue", frame.plot=F)
paste("estos son los outliers del primer Cliclo")
g_caja$out
BaseLimpia<-BaseLimpia[!(BaseLimpia$areaconst %in% g_caja$out),]
g_caja<-boxplot(BaseLimpia$areaconst, main="Diagrama de Cajas del Segundo Ciclo", col="skyblue", frame.plot=F)
paste("estos son los outliers del segundo Cliclo")
g_caja$out
BaseLimpia<-BaseLimpia[!(BaseLimpia$areaconst %in% g_caja$out),]
g_caja<-boxplot(BaseLimpia$areaconst, main="Diagrama de Cajas del Tercer Ciclo", col="skyblue", frame.plot=F)
paste("estos son los outliers del tercer Cliclo")
g_caja$out
BaseLimpia<-BaseLimpia[!(BaseLimpia$areaconst %in% g_caja$out),]
g_caja<-boxplot(BaseLimpia$areaconst, main="Diagrama de Cajas del Cuarto Ciclo", col="skyblue", frame.plot=F)
paste("estos son los outliers del cuarto Cliclo")
g_caja$out
paste("validamos si quedo la base con nulos")
Faltantes = gg_miss_var(BaseLimpia, show_pct=TRUE)
Faltantes 
tabla1=table(BaseLimpia$tipo)
pct = round(tabla1/sum(tabla1)*100)
pie(tabla1, main="Diagrama de Pie de tipos de Inmueble")


hist(BaseLimpia$preciom, main='Histograma de precio',  ylab = "Frecuencia", xlab="Monto en millones", freq= FALSE)
curve(dnorm(x, mean(BaseLimpia$preciom, na.rm = T), sd(BaseLimpia$preciom, na.rm = T)), add = TRUE, col = "red")


hist(BaseLimpia$areaconst, main='Histograma de Area Construida',  ylab = "Frecuencia", xlab="Area Construida" , freq= FALSE)
curve(dnorm(x, mean(BaseLimpia$areaconst, na.rm = T), sd(BaseLimpia$areaconst, na.rm = T)), add = TRUE, col = "red")
BaseLimpia
library("moments")
paste0("Indicadores para precio")

#calculamos la moda del precio
frecuencia_precio = data.frame(table(BaseLimpia$preciom))
modaprecio = frecuencia_precio[which.max(frecuencia_precio$Freq),1]

data.frame( "Media"=mean(BaseLimpia$preciom),
            "Mediana"=median(BaseLimpia$preciom),
            "Moda"=modaprecio,
            "Desviacion Estandar"=sd(BaseLimpia$preciom),
            "Varianza"=var(BaseLimpia$preciom), 
            "Valor Mínino"=min(BaseLimpia$preciom), 
            "Valor Maximo"=max(BaseLimpia$preciom),
            "custorisis"=kurtosis(BaseLimpia$preciom),
            "asimetria"= skewness(BaseLimpia$preciom)
           )
library("moments")
paste0("Indicadores para Area Construida")

#calculamos la moda del precio
frecuencia_area = data.frame(table(BaseLimpia$areaconst))
modaarea = frecuencia_area[which.max(frecuencia_area$Freq),1]

data.frame( "Media"=mean(BaseLimpia$areaconst),
            "Mediana"=median(BaseLimpia$areaconst),
            "Moda"=modaarea,
            "Desviacion Estandar"=sd(BaseLimpia$areaconst),
            "Varianza"=var(BaseLimpia$areaconst), 
            "Valor Mínino"=min(BaseLimpia$areaconst), 
            "Valor Maximo"=max(BaseLimpia$areaconst),
            "custorisis"=kurtosis(BaseLimpia$areaconst),
            "asimetria"= skewness(BaseLimpia$areaconst)
           )
comportamiento=ggplot(data = BaseLimpia,aes(y=preciom,x=areaconst)) + geom_point() + geom_smooth(method = "lm")

plot(comportamiento, main="1. Diagrama de Dispersion Presio - area construida con LM", ylab="Precio", xlab="Area Construida")

comportamiento2=ggplot(data = BaseLimpia,aes(y=preciom,x=areaconst)) + geom_point() + geom_smooth()
plot(comportamiento2, main="2. Diagrama de Dispersion Presio - area construida", ylab="Precio", xlab="Area Construida")
library("stats")
library("GGally")

paste("el coeficiente de correlacion entre las variables es: ")
coeficiente=cor(BaseLimpia$areaconst, BaseLimpia$preciom, use="everything", method=c("pearson"))
coeficiente

paste("Realizamos las pruebas de Hipotesis sobre P ")
cor.test(BaseLimpia$areaconst,BaseLimpia$preciom, method = "pearson")

paste("Realizamos la Matriz de coorelaciones ")
dataset= data.frame(BaseLimpia$areaconst,BaseLimpia$preciom)
cor(dataset[,1:2]) %>%  round(.,3      )
ggpairs(dataset[,1:2], title="Precio - Area") 
coeficiente
Modelo=lm(preciom~areaconst, data = BaseLimpia, na.action = na.exclude)
sum1=summary(Modelo)
sum1

par(mfrow=c(2,2))
plot(Modelo)
Modelo2=lm(preciom~log(areaconst), data = BaseLimpia)
sum2=summary(Modelo2)
sum2

par(mfrow=c(2,2))
plot(Modelo2)
Modelo3=lm(log(preciom)~areaconst, data = BaseLimpia)
sum3=summary(Modelo3)
sum3

par(mfrow=c(2,2))
plot(Modelo3)
Modelo4=lm(log(preciom)~log(areaconst), data = BaseLimpia)
sum4=summary(Modelo4)
sum4

par(mfrow=c(2,2))
plot(Modelo4)
library(stargazer)
stargazer(Modelo, Modelo2, Modelo3, Modelo4, type="text", df=FALSE)
sum1
paste("estos son los datos del primer Modelos")
sum1
paste("estos son los intervalos de confianzo con 95%")
library('stats')
confint(Modelo, "BaseLimpia$areaconst",level=0.95)
sum1
dataframe=data.frame(areaconst=110)
Modelo$coefficients
predict(Modelo, dataframe, interval = "confidence",level = 0.95)
paste("este es el proceso de Shapiro-Test")
Shapiro1=shapiro.test(Modelo$residuals)
Shapiro1

paste("este es el proceso de Test de Breusch-Pagan- Varianza constante")
Breusch1=lmtest::bptest(Modelo)
Breusch1

paste("este es el proceso de Test de Goldfeld-Quandt- Varianza constante")
Goldfeld1=lmtest::gqtest(Modelo)
Goldfeld1

paste("este es el proceso de Test de Durbin-Watson- No autocorrelación de errores")
Durbin1=lmtest::dwtest(Modelo)
Durbin1
plot(Modelo$residuals, Modelo$preciom, main="Gráfico de los residuales vs los valores ajustados")

qqnorm(Modelo$residuals, main="Gráfico de normalidad de los residuales")

plot(Modelo$residuals, Modelo$areaconst, main="Gráfico de residuales vs variable independiente")
summary(Modelo)
par(mfrow = c(1,2))
boxcox(lm(preciom ~ areaconst, data=BaseLimpia), lambda = -3:3)
#Se repite el proceso pero esta vez entrechando el rango de valores de lambda 
bc<-boxcox(lm(preciom ~ areaconst, data=BaseLimpia), lambda = -1:1)
(lambda <- bc$x[which.max(bc$y)])
stargazer(Modelo, Modelo2, Modelo3, Modelo4, type="text", df=FALSE)
paste("este es el proceso de Shapiro-Test - Modelo Ajustado")
Shapiro4=shapiro.test(Modelo4$residuals)
Shapiro4

paste("este es el proceso de Test de Breusch-Pagan- Varianza constante - Modelo Ajustado")
Breusch4=lmtest::bptest(Modelo4)
Breusch4

paste("este es el proceso de Test de Goldfeld-Quandt- Varianza constante - Modelo Ajustado")
Goldfeld4=lmtest::gqtest(Modelo4)
Goldfeld4

paste("este es el proceso de Test de Durbin-Watson- No autocorrelación de errores - Modelo Ajustado")
Durbin4=lmtest::dwtest(Modelo4)
Durbin4

plot(Modelo4$residuals, Modelo4$preciom, main="Gráfico de los residuales vs los valores ajustados - Modelo Ajustado")

qqnorm(Modelo4$residuals, main="Gráfico de normalidad de los residuales - Modelo Ajustado")


plot(Modelo4$residuals, Modelo4$areaconst, main="Gráfico de residuales vs variable independiente - Modelo Ajustado")
paste("este es el Modelo Original")
sum1

paste("este es el Modelo Ajustado")
sum4
paste("este es el proceso de Shapiro-Test")
Shapiro1=shapiro.test(Modelo$residuals)
Shapiro1

paste("este es el proceso de Test de Breusch-Pagan- Varianza constante")
Breusch1=lmtest::bptest(Modelo)
Breusch1

paste("este es el proceso de Test de Goldfeld-Quandt- Varianza constante")
Goldfeld1=lmtest::gqtest(Modelo)
Goldfeld1

paste("este es el proceso de Test de Durbin-Watson- No autocorrelación de errores")
Durbin1=lmtest::dwtest(Modelo)
Durbin1

plot(Modelo$residuals, Modelo$preciom, main="Gráfico de los residuales vs los valores ajustados")

qqnorm(Modelo$residuals, main="Gráfico de normalidad de los residuales")

plot(Modelo$residuals, Modelo$areaconst, main="Gráfico de residuales vs variable independiente")
paste("este es el proceso de Shapiro-Test")
Shapiro4=shapiro.test(Modelo4$residuals)
Shapiro4

paste("este es el proceso de Test de Breusch-Pagan- Varianza constante")
Breusch4=lmtest::bptest(Modelo4)
Breusch4

paste("este es el proceso de Test de Goldfeld-Quandt- Varianza constante")
Goldfeld4=lmtest::gqtest(Modelo4)
Goldfeld4

paste("este es el proceso de Test de Durbin-Watson- No autocorrelación de errores")
Durbin4=lmtest::dwtest(Modelo4)
Durbin4

plot(Modelo4$residuals, Modelo4$preciom, main="Gráfico de los residuales vs los valores ajustados")

qqnorm(Modelo4$residuals, main="Gráfico de normalidad de los residuales")

plot(Modelo4$residuals, Modelo4$areaconst, main="Gráfico de residuales vs variable independiente")
library(stargazer)
stargazer(Modelo, Modelo2, Modelo3, Modelo4, type="text", df=FALSE)
paste("este es el proceso de Shapiro-Test Modelo 2")
Shapiro2=shapiro.test(Modelo2$residuals)
Shapiro2

paste("este es el proceso de Test de Breusch-Pagan- Varianza constante Modelo 2- (y-logatirmo(x))")
Breusch2=lmtest::bptest(Modelo2)
Breusch2

paste("este es el proceso de Test de Goldfeld-Quandt- Varianza constante Modelo 2-(y-logatirmo(x))")
Goldfeld2=lmtest::gqtest(Modelo2)
Goldfeld2

plot(Modelo2$residuals, Modelo2$preciom, main="Gráfico de los residuales vs los valores ajustados Modelo 2 -(y-logatirmo(x))")

qqnorm(Modelo2$residuals, main="Gráfico de normalidad de los residuales Modelo 2 - (y-logatirmo(x))")

plot(Modelo2$residuals, Modelo2$areaconst, main="Gráfico de residuales vs variable independiente Modelo 2 - (y-logatirmo(x))")
paste("este es el proceso de Shapiro-Test Modelo 3-(logaritmo(y)-x)")
Shapiro3=shapiro.test(Modelo3$residuals)
Shapiro3

paste("este es el proceso de Test de Breusch-Pagan- Varianza constante Modelo 3-(logaritmo(y)-x)")
Breusch3=lmtest::bptest(Modelo3)
Breusch3

paste("este es el proceso de Test de Goldfeld-Quandt- Varianza constante Modelo 3-(logaritmo(y)-x)")
Goldfeld3=lmtest::gqtest(Modelo3)
Goldfeld3

plot(Modelo3$residuals, Modelo3$preciom, main="Gráfico de los residuales vs los valores ajustados Modelo 3- (logaritmo(y)-x)")

qqnorm(Modelo3$residuals, main="Gráfico de normalidad de los residuales Modelo 3 - (logaritmo(y)-x)")

plot(Modelo3$residuals, Modelo3$areaconst, main="Gráfico de residuales vs variable independiente Modelo 3 - (logaritmo(y)-x)")