Housing = read.csv("Housing.csv")

Correlación de Pearson

cor_pearson <- cor(Housing$price, Housing$area, method = "pearson")


cor_pearson
## [1] 0.5359973
plot(Housing$area, Housing$price,
main = "Relación entre Área y Precio",
xlab = "Área (pies cuadrados)",
ylab = "Precio (USD)",
pch = 19, col = "blue")


abline(lm(price ~ area, data = Housing), col = "red", lwd = 2)

Interpretación.

La gráfica evidencia una relación positiva entre el área de la vivienda y su precio: a medida que aumenta el tamaño del área, el precio tiende a incrementarse. No obstante, la relación no es perfecta, pues existen otros factores que también influyen en el valor de las viviendas. La dispersión observada alrededor de la línea de tendencia confirma que la relación, aunque positiva y clara, no es completamente fuerte.

Matriz de Correlación

numeric_vars <- Housing[, sapply(Housing, is.numeric)]


matriz_cor <- cor(numeric_vars, method = "pearson")


matriz_cor
##               price       area  bedrooms bathrooms    stories    parking
## price     1.0000000 0.53599735 0.3664940 0.5175453 0.42071237 0.38439365
## area      0.5359973 1.00000000 0.1518585 0.1938195 0.08399605 0.35298048
## bedrooms  0.3664940 0.15185849 1.0000000 0.3739302 0.40856424 0.13926990
## bathrooms 0.5175453 0.19381953 0.3739302 1.0000000 0.32616471 0.17749582
## stories   0.4207124 0.08399605 0.4085642 0.3261647 1.00000000 0.04554709
## parking   0.3843936 0.35298048 0.1392699 0.1774958 0.04554709 1.00000000
library(corrplot)
## corrplot 0.95 loaded
corrplot(matriz_cor,
         method = "color",
         addCoef.col = "black",       
         tl.col = "black",            
         tl.srt = 45,                
         title = "Matriz de correlación de variables cuantitativas",
         mar = c(0,0,1,0))

Interpretación.

La matriz de correlación obtenida permite identificar el grado de relación lineal existente entre las variables cuantitativas del conjunto de datos. Los valores de correlación de Pearson oscilan entre -1 y 1, donde los valores cercanos a 1 indican una relación positiva fuerte (ambas variables aumentan o disminuyen juntas), los valores cercanos a -1 señalan una relación negativa fuerte (una variable aumenta mientras la otra disminuye), y los valores cercanos a 0 reflejan una relación débil o inexistente.

En el gráfico, los colores intensos en tonos azules representan correlaciones positivas elevadas, mientras que los tonos rojizos indican correlaciones negativas. Los colores más claros o neutros muestran correlaciones débiles o nulas.

Diagramas de Caja

library(ggplot2)

g1 = ggplot(Housing, aes(y = price, x = mainroad, fill = mainroad)) +
  geom_boxplot() +
  labs(
    title = "Precio de la Vivienda vs Carretera Principal",
    x = "Carretera Principal (Sí/No)",
    y = "Precio de la Vivienda (USD)"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

print(g1)

Interpretación.

En el gráfico se observa que las viviendas ubicadas sobre una carretera principal tienden a presentar precios más altos en comparación con aquellas que no lo están, lo que sugiere que la ubicación y la accesibilidad son factores determinantes en el valor de la vivienda.

g2 <- ggplot(Housing, aes(x = basement, y = area, fill = basement)) +
  geom_boxplot() +
  labs(
    title = "Área de la Vivienda vs Presencia de Sótano",
    x = "Sótano (Sí/No)",
    y = "Área de la Vivienda (pies²)"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

print(g2)

Interpretación.

En el gráfico se aprecia que las viviendas que cuentan con sótano poseen, en promedio, un área mayor. Esto indica que la presencia de un sótano suele estar asociada a construcciones más amplias o de mayor capacidad. Se observan algunos valores atípicos hacia la parte superior, que representan viviendas con áreas considerablemente mayores al promedio.

g3 <- ggplot(Housing, aes(x = guestroom, y = bedrooms, fill = guestroom)) +
  geom_boxplot() +
  labs(
    title = "Cantidad de Cuartos vs Dormitorio de Invitado",
    x = "Dormitorio de Invitado (Sí/No)",
    y = "Número de Cuartos"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

print(g3)

Interpretación.

En el gráfico se evidencia que las viviendas que disponen de dormitorio de invitado tienden a tener un número total de cuartos más alto, lo que coincide con lo esperado: las casas más grandes cuentan con espacios adicionales.

g4 <- ggplot(Housing, aes(x = hotwaterheating, y = bathrooms, fill = hotwaterheating)) +
  geom_boxplot() +
  labs(
    title = "Número de Baños vs Calentador de Agua",
    x = "Calentador de Agua (Sí/No)",
    y = "Número de Baños"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

print(g4)

Interpretación.

En el gráfico se observa una leve tendencia a que las viviendas con calentador de agua cuenten con más baños, lo que puede estar asociado a un mayor nivel de confort o a un estándar más alto de servicios. Se presentan algunos valores atípicos, que representan casos de viviendas con un número excepcionalmente elevado de baños.

g5 <- ggplot(Housing, aes(x = airconditioning, y = stories, fill = airconditioning)) +
  geom_boxplot() +
  labs(
    title = "Cantidad de Pisos vs Aire Acondicionado",
    x = "Aire Acondicionado (Sí/No)",
    y = "Número de Pisos"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

print(g5)

Interpretación.

En el Gráfico se nota que las viviendas con aire acondicionado tienden a tener un número de pisos ligeramente mayor, lo cual puede reflejar una relación entre el tamaño o modernidad de la vivienda y la presencia de este equipamiento. En este gráfico también se evidencian valores atípicos, posiblemente asociados a edificaciones con más pisos de lo habitual.

Tabla Cruzada

tabla_cruzada= table(Housing$airconditioning,Housing$mainroad)
print(tabla_cruzada)
##      
##        no yes
##   no   62 311
##   yes  15 157
barplot(tabla_cruzada,
        beside = FALSE,
        col = c("skyblue", "lightgreen"),
        main = "Relación entre Aire Acondicionado y Carretera Principal",
        xlab = "Carretera Principal (mainroad)",
        ylab = "Frecuencia",
        legend = rownames(tabla_cruzada))

Interpretación

La tabla cruzada muestra la cantidad de viviendas con y sin aire acondicionado según su ubicación respecto a una carretera principal. El gráfico de barras apiladas permite visualizar esta relación con mayor claridad, evidenciando si las viviendas situadas sobre la carretera principal tienden a contar con aire acondicionado con más frecuencia que aquellas ubicadas fuera de ella, lo que sugiere una posible asociación entre la ubicación y la disponibilidad de aire acondicionado.

Tablero Dinámico del Conjunto de Datos

install.packages(c("flexdashboard", "ggplot2", "plotly", "dplyr"))
## Installing packages into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
library(flexdashboard)
library(ggplot2)
library(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
library(dplyr)
## 
## 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
# Distribución del Precio
g_precio <- ggplot(Housing, aes(x = price)) +
  geom_histogram(fill = "skyblue", color = "white", bins = 30) +
  labs(
    title = "Distribución del Precio de las Viviendas",
    x = "Precio (USD)",
    y = "Frecuencia"
  ) +
  theme_minimal()

# Relación entre Área y Precio
g_area <- ggplot(Housing, aes(x = area, y = price)) +
  geom_point(color = "steelblue", alpha = 0.6) +
  labs(
    title = "Relación entre Área y Precio",
    x = "Área (pies²)",
    y = "Precio (USD)"
  ) +
  theme_minimal()+
  theme(plot.title = element_text(hjust = 0.5))

# Gráficos interactivos
subplot(
  ggplotly(g_precio),
  ggplotly(g_area),
  nrows = 1,
  titleX = TRUE,
  titleY = TRUE
)