# Cargar correctamente el dataset desde la URL
vt <- read.csv("https://raw.githubusercontent.com/moderndive/moderndive/master/data-raw/kc_house_data.csv")
# Verifica que vt ahora sea un data frame
str(vt)
## 'data.frame': 21613 obs. of 21 variables:
## $ id : num 7.13e+09 6.41e+09 5.63e+09 2.49e+09 1.95e+09 ...
## $ date : chr "20141013T000000" "20141209T000000" "20150225T000000" "20141209T000000" ...
## $ price : num 221900 538000 180000 604000 510000 ...
## $ bedrooms : int 3 3 2 4 3 4 3 3 3 3 ...
## $ bathrooms : num 1 2.25 1 3 2 4.5 2.25 1.5 1 2.5 ...
## $ sqft_living : int 1180 2570 770 1960 1680 5420 1715 1060 1780 1890 ...
## $ sqft_lot : int 5650 7242 10000 5000 8080 101930 6819 9711 7470 6560 ...
## $ floors : num 1 2 1 1 1 1 2 1 1 2 ...
## $ waterfront : int 0 0 0 0 0 0 0 0 0 0 ...
## $ view : int 0 0 0 0 0 0 0 0 0 0 ...
## $ condition : int 3 3 3 5 3 3 3 3 3 3 ...
## $ grade : int 7 7 6 7 8 11 7 7 7 7 ...
## $ sqft_above : int 1180 2170 770 1050 1680 3890 1715 1060 1050 1890 ...
## $ sqft_basement: int 0 400 0 910 0 1530 0 0 730 0 ...
## $ yr_built : int 1955 1951 1933 1965 1987 2001 1995 1963 1960 2003 ...
## $ yr_renovated : int 0 1991 0 0 0 0 0 0 0 0 ...
## $ zipcode : int 98178 98125 98028 98136 98074 98053 98003 98198 98146 98038 ...
## $ lat : num 47.5 47.7 47.7 47.5 47.6 ...
## $ long : num -122 -122 -122 -122 -122 ...
## $ sqft_living15: int 1340 1690 2720 1360 1800 4760 2238 1650 1780 2390 ...
## $ sqft_lot15 : int 5650 7639 8062 5000 7503 101930 6819 9711 8113 7570 ...
is.data.frame(vt)
## [1] TRUE
###Resumen de los datos
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
glimpse(vt)
## Rows: 21,613
## Columns: 21
## $ id <dbl> 7129300520, 6414100192, 5631500400, 2487200875, 19544005…
## $ date <chr> "20141013T000000", "20141209T000000", "20150225T000000",…
## $ price <dbl> 221900, 538000, 180000, 604000, 510000, 1225000, 257500,…
## $ bedrooms <int> 3, 3, 2, 4, 3, 4, 3, 3, 3, 3, 3, 2, 3, 3, 5, 4, 3, 4, 2,…
## $ bathrooms <dbl> 1.00, 2.25, 1.00, 3.00, 2.00, 4.50, 2.25, 1.50, 1.00, 2.…
## $ sqft_living <int> 1180, 2570, 770, 1960, 1680, 5420, 1715, 1060, 1780, 189…
## $ sqft_lot <int> 5650, 7242, 10000, 5000, 8080, 101930, 6819, 9711, 7470,…
## $ floors <dbl> 1.0, 2.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 1.0, 2.0, 1.0, 1…
## $ waterfront <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ view <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,…
## $ condition <int> 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 4, 4,…
## $ grade <int> 7, 7, 6, 7, 8, 11, 7, 7, 7, 7, 8, 7, 7, 7, 7, 9, 7, 7, 7…
## $ sqft_above <int> 1180, 2170, 770, 1050, 1680, 3890, 1715, 1060, 1050, 189…
## $ sqft_basement <int> 0, 400, 0, 910, 0, 1530, 0, 0, 730, 0, 1700, 300, 0, 0, …
## $ yr_built <int> 1955, 1951, 1933, 1965, 1987, 2001, 1995, 1963, 1960, 20…
## $ yr_renovated <int> 0, 1991, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
## $ zipcode <int> 98178, 98125, 98028, 98136, 98074, 98053, 98003, 98198, …
## $ lat <dbl> 47.5112, 47.7210, 47.7379, 47.5208, 47.6168, 47.6561, 47…
## $ long <dbl> -122.257, -122.319, -122.233, -122.393, -122.045, -122.0…
## $ sqft_living15 <int> 1340, 1690, 2720, 1360, 1800, 4760, 2238, 1650, 1780, 23…
## $ sqft_lot15 <int> 5650, 7639, 8062, 5000, 7503, 101930, 6819, 9711, 8113, …
1.¿Cual es la media del precio de las viviendas?
mean(vt$price, na.rm = TRUE)
## [1] 540088.1
En promedio, las casas tienen un valor de aproximadamente 540 mil dólares.
2.¿Qué medida se utiliza para describir el valor central cuando hay valores atípicos extremos?
la medida central que se utiliza para describir el valor de central cuando hay valores atipicos es la mediana pues esta se usa para describir el valor centrar cuando hay valores atipicos.
3.Calcula la desviación estándar de la variable sqft_living (área habitable). ¿Qué indica este valor en este contexto?
sd(vt$sqft_living, na.rm = TRUE)
## [1] 918.4409
La mayoría de las viviendas tienen un área habitable que varía en aproximadamente ±787 pies cuadrados respecto a la media. Indica alta variabilidad en el tamaño de las viviendas.
4.¿Cuál de las siguientes variables tiene mayor dispersión: price, sqft_lot, bedrooms? Justifica tu respuesta con base en medidas de dispersión.
sd(vt$price, na.rm = TRUE)
## [1] 367127.2
sd(vt$sqft_lot, na.rm = TRUE)
## [1] 41420.51
sd(vt$bedrooms, na.rm = TRUE)
## [1] 0.9300618
La variable price presenta la mayor dispersión, indicando que los precios de las casas varían considerablemente entre sí.
5.¿Qué variable presenta mayor número de ceros: sqft_basement o yr_renovated?
sum(vt$sqft_basement == 0, na.rm = TRUE)
## [1] 13126
sum(vt$yr_renovated == 0, na.rm = TRUE)
## [1] 20699
La variable yr_renovated tiene muchos más ceros, lo que sugiere que una gran cantidad de casas no han sido renovadas.
6. ¿Qué tipo de gráfico usarías para representar la distribución de price? Realizar el grafico el grafico ideal para este tipo de datos seria el histograma o boxplot, pues permiten visualizar la forma, dispersión y presencia de valores atípicos en la variable precio.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
# Histograma
ggplot(vt, aes(x = price)) +
geom_histogram(bins = 50, fill = "blue", color = "black") +
labs(title = "Distribución del Precio de Viviendas",
x = "Precio",
y = "Frecuencia")
# Boxplot
ggplot(vt, aes(y = price)) +
geom_boxplot(fill = "red", color = "green") +
labs(title = "Boxplot del Precio de las Viviendas",
y = "Precio (USD)") +
theme_minimal()
7. Dibuja un histograma para la variable sqft_living. Describe brevemente la forma de la distribución.
library(ggplot2)
ggplot(vt, aes(x = sqft_living)) +
geom_histogram(bins = 50, fill = "green", color = "black") +
labs(title = "Distribución del Área Habitable", x = "Área (sqft)", y = "Frecuencia")
Hay muchas casas con áreas habitables pequeñas o medianas, y pocas con
áreas muy grandes.
8.Construye un boxplot de la variable price según la variable waterfront. ¿Qué muestra este gráfico respecto al precio de casas con vista al agua vs sin vista?
library(ggplot2)
# Asegúrate de convertir la variable a factor
vt$waterfront <- factor(vt$waterfront,
levels = c(0, 1),
labels = c("Sin vista al agua", "Con vista al agua"))
# Boxplot
ggplot(vt, aes(x = waterfront, y = price, fill = waterfront)) +
geom_boxplot() +
labs(title = "Precio de Viviendas según Vista al Agua",
x = "Vista al Agua",
y = "Precio (USD)") +
theme_minimal()
El boxplot revela que tener vista al agua impacta notablemente en el
precio de las viviendas, aumentando su valor de manera significativa.
Esta variable (waterfront) podría considerarse un factor clave en el
análisis del mercado inmobiliario,pues
1.Las casas con vista al agua (1) tienen precios significativamente más altos que las que no la tienen.
2.Hay una mayor mediana y mayores valores máximos para las casas con vista al agua.
Además, se observa una dispersión más amplia para las casas sin vista al agua, pero los valores de las casas con vista son claramente más elevados.
9. calcular la media, mediana y desviación estándar del precio (price). Describir el significado
mean(vt$price, na.rm = TRUE)
## [1] 540088.1
median(vt$price, na.rm = TRUE)
## [1] 450000
sd(vt$price, na.rm = TRUE)
## [1] 367127.2
Media (mean): El precio promedio de las viviendas es de
540.088 USD. Esta medida es sensible a valores extremos (outliers), como
casas muy costosas.
Mediana (median): El valor central (la mitad de las
viviendas cuestan menos, la otra mitad más) es de 450.000 USD. Como la
mediana es menor que la media, eso sugiere que hay valores atípicos
altos (viviendas muy caras) que están elevando el promedio.
Desviación estándar (sd): La desviación estándar de
367.127 USD indica que hay una gran dispersión en los precios respecto
al promedio. En otras palabras, los precios de las casas varían
bastante: hay casas tanto muy económicas como muy costosas.