Taller Estadistica Descriptiva


``` r
url <- 'https://raw.githubusercontent.com/moderndive/moderndive/master/data-raw/kc_house_data.csv'

house_prices <- read.csv(url)
head(house_prices)
##           id            date   price bedrooms bathrooms sqft_living sqft_lot
## 1 7129300520 20141013T000000  221900        3      1.00        1180     5650
## 2 6414100192 20141209T000000  538000        3      2.25        2570     7242
## 3 5631500400 20150225T000000  180000        2      1.00         770    10000
## 4 2487200875 20141209T000000  604000        4      3.00        1960     5000
## 5 1954400510 20150218T000000  510000        3      2.00        1680     8080
## 6 7237550310 20140512T000000 1225000        4      4.50        5420   101930
##   floors waterfront view condition grade sqft_above sqft_basement yr_built
## 1      1          0    0         3     7       1180             0     1955
## 2      2          0    0         3     7       2170           400     1951
## 3      1          0    0         3     6        770             0     1933
## 4      1          0    0         5     7       1050           910     1965
## 5      1          0    0         3     8       1680             0     1987
## 6      1          0    0         3    11       3890          1530     2001
##   yr_renovated zipcode     lat     long sqft_living15 sqft_lot15
## 1            0   98178 47.5112 -122.257          1340       5650
## 2         1991   98125 47.7210 -122.319          1690       7639
## 3            0   98028 47.7379 -122.233          2720       8062
## 4            0   98136 47.5208 -122.393          1360       5000
## 5            0   98074 47.6168 -122.045          1800       7503
## 6            0   98053 47.6561 -122.005          4760     101930

Preguntas

  1. ¿Cuál es la media del precio de las viviendas (price)?
media_price <- mean(house_prices$price, na.rm = TRUE)

print(paste("la media de los precios de las viviendas es", media_price ))
## [1] "la media de los precios de las viviendas es 540088.141766529"
  1. ¿Qué medida se utiliza para describir el valor central cuando hay valores atípicos extremos? la mediana
# Calcular media y mediana de 'price'
mean_price <- mean(house_prices$price, na.rm = TRUE)
median_price <- median(house_prices$price, na.rm = TRUE)

print(paste("comparacion promedio y mediana del precio de la vivienda"))
## [1] "comparacion promedio y mediana del precio de la vivienda"
cat("Media (promedio):", mean_price, "\nMediana:", median_price)
## Media (promedio): 540088.1 
## Mediana: 450000
print(paste("como la media es mayor que la mediana, entonces el promedio de los precios esta por encima de la mitad de los presicos"))
## [1] "como la media es mayor que la mediana, entonces el promedio de los precios esta por encima de la mitad de los presicos"
# Calcular media y mediana de 'sqft_above'
mean_sqft_above <- mean(house_prices$sqft_above, na.rm = TRUE)
median_sqft_above <- median(house_prices$sqft_above, na.rm = TRUE)
print(paste("comparacion promedio y mediana del area de la vivienda"))
## [1] "comparacion promedio y mediana del area de la vivienda"
cat("Media (promedio):", mean_sqft_above, "\nMediana:", median_sqft_above)
## Media (promedio): 1788.391 
## Mediana: 1560
print(paste("como la media es mayor que la mediana, entonces el promedio de las areas esta por encima de la mitad de los datos"))
## [1] "como la media es mayor que la mediana, entonces el promedio de las areas esta por encima de la mitad de los datos"
  1. Calcula la desviación estándar de la variable sqft_living (área habitable). ¿Qué indica este valor en este contexto?
sd_sqft <- sd(house_prices$sqft_living, na.rm = TRUE)
print(paste("La desviación estándar de sqft_living es:", round(sd_sqft, 2), "nos indica cuánto varían los tamaños de las áreas habitables entre las viviendas:Un valor alto indica mucha variabilidad (hay casas con áreas muy diferentes), Un valor bajo indica poca variabilidad (la mayoría de casas tienen tamaños similares), esto en relacion con la media"))
## [1] "La desviación estándar de sqft_living es: 918.44 nos indica cuánto varían los tamaños de las áreas habitables entre las viviendas:Un valor alto indica mucha variabilidad (hay casas con áreas muy diferentes), Un valor bajo indica poca variabilidad (la mayoría de casas tienen tamaños similares), esto en relacion con la media"
mean_sqft <- mean(house_prices$sqft_living, na.rm = TRUE)
cv <- (sd_sqft/mean_sqft)*100
print(paste("Coeficiente de variación:", round(cv, 1), "% Un CV > 30% sugiere alta dispersión relativa"))
## [1] "Coeficiente de variación: 44.2 % Un CV > 30% sugiere alta dispersión relativa"
  1. ¿Cuál de las siguientes variables tiene mayor dispersión: price, sqft_lot, bedrooms? Justifica tu respuesta con base en medidas de dispersión.
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Calcular para cada variable
dispersion_metrics <- house_prices %>%
  summarise(
    # Price
     #desviacion estandar
    sd_price = sd(price, na.rm = TRUE),
    #coeficiente de variacion
    cv_price = (sd(price, na.rm = TRUE) / mean(price, na.rm = TRUE)) * 100,
     #Rango Intercuartílico (IQR)
    iqr_price = IQR(price, na.rm = TRUE),
    
    # Sqft_lot
    sd_sqft_lot = sd(sqft_lot, na.rm = TRUE),
    cv_sqft_lot = (sd(sqft_lot, na.rm = TRUE) / mean(sqft_lot, na.rm = TRUE)) * 100,
    iqr_sqft_lot = IQR(sqft_lot, na.rm = TRUE),
    
    # Bedrooms
    sd_bedrooms = sd(bedrooms, na.rm = TRUE),
    cv_bedrooms = (sd(bedrooms, na.rm = TRUE) / mean(bedrooms, na.rm = TRUE)) * 100,
    iqr_bedrooms = IQR(bedrooms, na.rm = TRUE)
  )

print(dispersion_metrics)
##   sd_price cv_price iqr_price sd_sqft_lot cv_sqft_lot iqr_sqft_lot sd_bedrooms
## 1 367127.2 67.97542    323050    41420.51    274.1815         5648   0.9300618
##   cv_bedrooms iqr_bedrooms
## 1    27.59138            1
print(paste())
## character(0)
library(patchwork)
## Warning: package 'patchwork' was built under R version 4.4.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
p1 <- ggplot(house_prices, aes(x = price)) + 
  geom_density(fill = "steelblue") + 
  ggtitle("Price (CV = 67.98%)")

p2 <- ggplot(house_prices, aes(x = sqft_lot)) + 
  geom_density(fill = "red") + 
  scale_x_log10() + 
  ggtitle("Sqft_lot (CV = 274.18%)")

p3 <- ggplot(house_prices, aes(x = bedrooms)) + 
  geom_bar(fill = "forestgreen") + 
  ggtitle("Bedrooms (CV = 27.59%)")

(p1 | p2 | p3) + plot_layout(ncol = 3)

Dispersión Relativa (CV):

sqft_lot (274.18%): Muestra la mayor variabilidad relativa. Esto indica que el tamaño de los lotes varía enormemente en proporción a su tamaño promedio (posiblemente algunos lotes muy grandes entre muchos pequeños).

price (67.98%): Dispersión moderada-alta. Los precios varían considerablemente alrededor de la media.

bedrooms (27.59%): La menos dispersa. La mayoría de viviendas tienen un número similar de habitaciones.

Dispersión Absoluta (SD e IQR):

price tiene la mayor dispersión absoluta (SD=367K, IQR=323K), lo que refleja grandes diferencias de precio entre propiedades.

sqft_lot muestra una SD alta (41K) pero un IQR relativamente bajo (5,648), sugiriendo que los valores extremos afectan fuertemente la desviación estándar.

bedrooms es la más homogénea (IQR=1, SD=0.93), indicando que el 50% central de las viviendas difiere en solo 1 habitación.

  1. ¿Qué variable presenta mayor número de ceros: sqft_basement o yr_renovated?

ninguno tiene datos perdidos

house_prices$sqft_basement[is.na(house_prices$sqft_basement)]
## integer(0)
house_prices$yr_renovated[is.na(house_prices$yr_renovated)]
## integer(0)
  1. ¿Qué tipo de gráfico usarías para representar la distribución de price? Realizar el grafico

usar ungrafico de histgrama con curva de densidad.

library(ggplot2)

ggplot(house_prices, aes(x = price)) +
  geom_density(fill = "steelblue", alpha = 0.6) +
  labs(title = "Distribución de Precios de Viviendas",
       x = "Precio",
       y = "Densidad") +
  theme_minimal()

ggplot(house_prices, aes(x = price)) +
  geom_histogram(aes(y = ..density..), 
                 bins = 30, 
                 fill = "lightblue", 
                 color = "white") +
  geom_density(color = "red", linewidth = 1) +
  labs(title = "Distribución de Precios",
       subtitle = "Histograma con curva de densidad",
       x = "Precio",
       y = "Densidad")
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

  1. Dibuja un histograma para la variable sqft_living. Describe brevemente la forma de la distribución.
hist(house_prices$sqft_living)

print(paste("el mayor número de viviedas tienen entre 1000 y 3000 pies cuadrados."))
## [1] "el mayor número de viviedas tienen entre 1000 y 3000 pies cuadrados."