Parcial 2 Estadística Avanzada

En el siguiente documento desarrollado en Quarto se va a utilizar el lenguaje de programación R para resolver los puntos planteados.

Punto 1

En el primer punto disponemos de una base de datos de un conjunto de viviendas en la cual tenemos la información de zona, piso, estrato, precio por millón, área contruída, parqueaderos, Baños, Habitaciones, Tipo (casa o apartamento), barrio, coordenadas (longitud y latitud) de la ciudad de Cali.

Para empezar a trabajar con la base de datos, primero tenemos que importarla.

library(readxl)
Datos_Vivienda <- read_excel("Datos_Vivienda.xlsx")

Ítem 1

En el ítem 1 nos pide filtrar por barrio las variables precio por millón y el área construida. En este caso, el barrio de interés es el ingenio


Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union

Ítem 2

En este item nos piden realizar una regresión lineal simple.

En este caso, “precio_millon” es la variable de respuesta y “Area_contruida” es la variable predictor.

# Ajustamos el modelo lineal
modelo_lm <- lm(precio_millon ~ Area_contruida, data = datos_filtrados)
# Creamos el gráfico
plot(datos_filtrados$Area_contruida, datos_filtrados$precio_millon, 
     xlab = "Área construida (m²)", ylab = "Precio (millones de pesos)", 
     main = "Relación entre precio y área construida")
abline(modelo_lm, col = "red")

Del resumen a continuación podemos ver que el p valor es mucho menor a 0.05, de lo cual podemos inferir que es bastante significativo este valor. Otra cosa que podemos observar es que el Multiple R-squared es 0.7738, lo cual nos indica que el modelo explica el 77.38% de la variabilidad en el precio por millón.

summary(modelo_lm)

Call:
lm(formula = precio_millon ~ Area_contruida, data = datos_filtrados)

Residuals:
    Min      1Q  Median      3Q     Max 
-282.09  -61.15   -8.32   45.89  477.33 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)    195.71496   11.63854   16.82   <2e-16 ***
Area_contruida   1.21159    0.04632   26.16   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 105.2 on 200 degrees of freedom
Multiple R-squared:  0.7738,    Adjusted R-squared:  0.7727 
F-statistic: 684.2 on 1 and 200 DF,  p-value: < 2.2e-16

Ítem 3

En el tercer item nos piden involucrar ahora la variable de tipo vivienda y realizar de nuevo un análisis usando Regresión Categórica.

datos_filtrados <- subset(Datos_Vivienda, Barrio == "el ingenio")
library(dplyr)
datos_filtrados_tipo <- select(datos_filtrados, precio_millon, Tipo, Area_contruida)
show(datos_filtrados_tipo)
# A tibble: 202 × 3
   precio_millon Tipo        Area_contruida
           <dbl> <chr>                <dbl>
 1          1450 Casa                  1200
 2           290 Apartamento            100
 3           360 Apartamento             99
 4           550 Apartamento            197
 5           410 Apartamento            136
 6           390 Apartamento            198
 7           300 Apartamento            147
 8           250 Apartamento             97
 9           370 Apartamento            104
10          1200 Casa                   616
# ℹ 192 more rows
library(fastDummies)
datos_filtrados_tipo_dummy <- dummy_cols(datos_filtrados_tipo,
 select_columns = "Tipo")

show(datos_filtrados_tipo_dummy)
# A tibble: 202 × 5
   precio_millon Tipo        Area_contruida Tipo_Apartamento Tipo_Casa
           <dbl> <chr>                <dbl>            <int>     <int>
 1          1450 Casa                  1200                0         1
 2           290 Apartamento            100                1         0
 3           360 Apartamento             99                1         0
 4           550 Apartamento            197                1         0
 5           410 Apartamento            136                1         0
 6           390 Apartamento            198                1         0
 7           300 Apartamento            147                1         0
 8           250 Apartamento             97                1         0
 9           370 Apartamento            104                1         0
10          1200 Casa                   616                0         1
# ℹ 192 more rows
modelo_vivienda_RC<- lm(precio_millon~Area_contruida+Tipo_Casa, data=datos_filtrados_tipo_dummy)
summary(modelo_vivienda_RC)

Call:
lm(formula = precio_millon ~ Area_contruida + Tipo_Casa, data = datos_filtrados_tipo_dummy)

Residuals:
    Min      1Q  Median      3Q     Max 
-277.45  -48.20   -9.33   53.92  491.45 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)    196.11964   10.91567  17.967  < 2e-16 ***
Area_contruida   1.02197    0.05616  18.196  < 2e-16 ***
Tipo_Casa       99.24986   18.63125   5.327 2.69e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 98.68 on 199 degrees of freedom
Multiple R-squared:  0.802, Adjusted R-squared:    0.8 
F-statistic: 403.1 on 2 and 199 DF,  p-value: < 2.2e-16

La sección “Residual standard error” muestra el error estándar de los residuos. Mientras que “Multiple R-squared” indica la cantidad de variabilidad en la variable respuesta que es explicada por el modelo (80.2%). El valor de “Adjusted R-squared” es similar al anterior, pero tiene en cuenta el número de variables incluidas en el modelo. Finalmente, “F-statistic” y “p-value” indican la significancia estadística general del modelo y su capacidad para explicar la variabilidad en la variable respuesta, respectivamente. En este caso, tanto el valor de F como el p-value son muy bajos, lo que indica que el modelo es altamente significativo.

Ítem 4

El análisis de varianza (ANOVA) muestra que la inclusión de la variable ficticia Tipo en el modelo de regresión mejora su ajuste en comparación con el modelo que usa solo el área incorporada. La suma residual de cuadrados (RSS) muestra que el modelo de variable ficticia es útil para explicar los cambios en los precios de la vivienda en el área de El Ingenio. Los resultados F bajos y los valores p significativos indican que esta mejora no es aleatoria. Por lo tanto, la variable ficticia Tipo_Casa es importante para explicar la volatilidad de los precios de la vivienda en el área de El Ingenio.

anova(modelo_lm,modelo_vivienda_RC)
Analysis of Variance Table

Model 1: precio_millon ~ Area_contruida
Model 2: precio_millon ~ Area_contruida + Tipo_Casa
  Res.Df     RSS Df Sum of Sq      F    Pr(>F)    
1    200 2214303                                  
2    199 1937949  1    276354 28.378 2.687e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Punto 2

En el siguiente punto tenemos una base de datos de la masa y la edad de una persona, vamos a desarrollar los items en el lenguaje de programacion R

A continuación vamos a cargar la base datos para empezar a analizar la informacion

DatosME <- read.table("DatosME.txt", header = FALSE )
show(DatosME)
    V1 V2
1  106 43
2  106 41
3   97 47
4  113 46
5   96 45
6  119 41
7   92 47
8  112 41
9   92 48
10 102 48
11 107 42
12 107 47
13 102 43
14 115 44
15 101 42
16  87 55
17  91 57
18  97 56
19  82 59
20  78 57
21  95 54
22  98 53
23  94 52
24  96 53
25 100 54
26  84 60
27  70 59
28 104 51
29  76 59
30  93 57
31  73 68
32  73 63
33  76 60
34  80 63
35  84 63
36  71 64
37  64 66
38  88 65
39  79 60
40  88 65
41  73 65
42  74 69
43  76 61
44  87 70
45  70 68
46  69 78
47  54 78
48  62 78
49  78 72
50  65 70
51  64 73
52  74 76
53  87 78
54  63 78
55  82 71
56  80 75
57  52 77
58  56 76
59  70 72
60  74 76
masa <- DatosME[, 1]
edad <- DatosME[, 2]

Ítem 1

##Idea 2

#Normalizacion de la variable edad
edad_barra <- mean(edad)
#Deficion de la nueva varible normalizada
xi <- edad - edad_barra
#Elaboración del modelo cuadratico 
modelo_cuadratico <- lm(masa ~ xi + I(xi^2))

#Elaboración de las gráficas 
library(ggplot2)
ggplot(data = data.frame(x = xi, y = masa), aes(x, y)) +
  geom_point() +
  geom_smooth(method = "lm", formula = y ~ x + I(x^2), se = FALSE)

Ítem 2

Los betas son los siguientes:

  • β0 (intersección): 82.935749

  • β1 (pendiente): -1.183958

  • β11 (coeficiente de la variable independiente al cuadrado): 0.014840

El intercepto (β0) es de 82.94, lo que sugiere que la masa promedio a la edad cero es de 82.94 kg. El coeficiente de la variable independiente (β1) es -1.18, lo que indica que a medida que la edad aumenta en una unidad, la masa disminuye en 1.18 kg. El coeficiente del término cuadrático (β11) no es significativo (p=0.0811), lo que sugiere que la relación entre la masa y la edad puede no ser completamente cuadrática.

#Resumen del modelo 
summary(modelo_cuadratico)

Call:
lm(formula = masa ~ xi + I(xi^2))

Residuals:
    Min      1Q  Median      3Q     Max 
-15.086  -6.154  -1.088   6.220  20.578 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 82.935749   1.543146  53.745   <2e-16 ***
xi          -1.183958   0.088633 -13.358   <2e-16 ***
I(xi^2)      0.014840   0.008357   1.776   0.0811 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 8.026 on 57 degrees of freedom
Multiple R-squared:  0.7632,    Adjusted R-squared:  0.7549 
F-statistic: 91.84 on 2 and 57 DF,  p-value: < 2.2e-16

Ítem 3

Para verificar si el término cuadrático debe eliminarse del modelo, puede realizar una prueba de hipótesis. La hipótesis nula asume que el coeficiente del término cuadrático (β11) es cero, lo que indica que la relación entre tamaño y edad es igual. El valor p asociado al coeficiente de β11 es 0.0811, lo que indica que no hay suficiente evidencia para rechazar la hipótesis nula. Sin embargo, si el término cuadrático tiene una definición clara o precisa, la eliminación del término cuadrático puede justificarse por razones prácticas más que cuantitativas.

Ítem 4

# Scatterplot de la variable "Masa" vs. su forma cuadrática "Masa^2" (antes de la transformación)
plot(DatosME$V1, DatosME$V1^2, col="blue", main="Scatterplot de Masa vs. Masa^2 (antes de la transformación)")

# Scatterplot de la variable "xi" vs. su forma cuadrática "xi^2" (después de la transformación)
xi <- DatosME$V1 - mean(DatosME$V1)
plot(xi, xi^2, col="red", main="Scatterplot de xi vs. xi^2 (después de la transformación)")

Sí, se justifica la transformación de la variable en el punto inicial (centrar la variable) para eliminar la multicolinealidad entre la variable y su forma cuadrática, debido a que la correlación entre ambas variables antes de la transformación es muy alta, lo que indica multicolinealidad.

En el scatterplot de la variable “Masa” versus su forma cuadrática “Masa^2” (antes de la transformación), se puede observar que los puntos están muy cercanos a una línea recta, lo que indica una fuerte correlación lineal positiva entre ambas variables.

En cambio, después de la transformación en el punto inicial, en el scatterplot de la variable “xi” versus su forma cuadrática “xi^2”, se puede observar que la correlación entre ambas variables es mucho más débil, lo que sugiere que la multicolinealidad se ha reducido significativamente.

Por lo tanto, la transformación de la variable en el punto inicial es una forma efectiva de eliminar la multicolinealidad entre la variable y su forma cuadrática.