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
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"
# 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"
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"
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.
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)
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.
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."