1 Archivo CSV

url <- 'https://raw.githubusercontent.com/moderndive/moderndive/master/data-raw/kc_house_data.csv'
Precios_de_casas <-read.csv(url)
head(Precios_de_casas)
##           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

2 Resumen de la data

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(Precios_de_casas)
## 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, …

3 ¿Cuál es la media del precio de las viviendas (price)?

mean(Precios_de_casas$price)
## [1] 540088.1

4 ¿Qué medida se utiliza para describir el valor central cuando hay valores atípicos extremos?

# la mediana es la medida utilizada para describir los valores atipicos ya que esta solo es el valor central cuando los datos estan ordenados

5 Calcula la desviación estándar de la variable sqft_living (área habitable). ¿Qué indica este valor en este contexto?

mean(Precios_de_casas$sqft_living)
## [1] 2079.9
sd(Precios_de_casas$sqft_living)
## [1] 918.4409

Un valor de 918.4409 indica que, en promedio, el area habitable se desvía 918.4409 unidades de la media. lo que es un valor alto por lo cual se considera que la variación de los datos es alta con respecto a la media

6 ¿Cuál de las siguientes variables tiene mayor dispersión: price, sqft_lot, bedrooms? Justifica tu respuesta con base en medidas de dispersión.

se calcula el promedio, desviacion estandar y el coeficiente de variación al resultado Para comparar la variabilidad entre variables que tienen unidades distintas o medias muy diferentes.

#promedio y desviacion estandar 
mean_price<-mean(Precios_de_casas$price)
sd_price<-sd(Precios_de_casas$price)

mean_lot<-mean(Precios_de_casas$sqft_lot)
sd_lot<-sd(Precios_de_casas$sqft_lot)
   
mean_bedrooms<-mean(Precios_de_casas$bedrooms)
sd_bedrooms<-sd(Precios_de_casas$bedrooms)

# coeficiente de variación
cv_price <- (sd_price/ mean_price) * 100
cv_lot <- (sd_lot / mean_lot) * 100
cv_bedrooms <- (sd_bedrooms / mean_bedrooms) * 100
# Mostrar resultados
cv_price
## [1] 67.97542
cv_lot
## [1] 274.1815
cv_bedrooms
## [1] 27.59138

Se puede concluir que la variable sqft_lot tiene la mayor dispersión, ya que su coeficiente de variación es mucho más alto que el de las otras variables con un 274% aproximadamente. Esto indica que el tamaño de los lotes varía mas entre casas, mientras que los precios y número de habitaciones tienen menor variabilidad.

7 ¿Qué variable presenta mayor número de NA: sqft_basement(area sotano) o yr_renovated?

#Muestra los valores perdidos

Precios_de_casas$sqft_basement[is.na(Precios_de_casas$sqft_basement)]
## integer(0)
Precios_de_casas$yr_renovated[is.na(Precios_de_casas$yr_renovated)]
## integer(0)
#cuenta los valores perdidos
#sum(is.na(Precios_de_casas$sqft_basement))
#(is.na(Precios_de_casas$yr_renovated))

# dado que en el dataframe los valores perdidos se representan como 0 el codigo debe escribir
sum(Precios_de_casas$sqft_basement==0)
## [1] 13126
sum(Precios_de_casas$yr_renovated==0)
## [1] 20699

Es decir que la variable que tiene mayor cantidad de ceros (valores perdidos )es yr_renovated con alrededor de 20,699 datos.

8 ¿Qué tipo de gráfico usarías para representar la distribución de price? Realizar el grafico?

Para esta distribucion se usaria un histograma debido a que son valores continuos y la cantidad de datos son muchos.

hist(Precios_de_casas$price,
     main = "Distribución de Precio",
     xlab = "Precio de casas",
     col = "orange",
     border = "black")

la distribución de los precios de las casas es asimétrica a la derecha, en su mayoría de las viviendas estan en rangos de precios bajos y son pocas las viviendas con precios altos altos. los cuales serian los valores atipicos.

9 Dibuja un histograma para la variable sqft_living. Describe brevemente la forma de la distribución.

hist(Precios_de_casas$sqft_living,
     main = "Distribución del area",
     xlab = "Area hab.",
     col = "green",
     border = "black")

El área habitable es asimétrica a la derecha, esto quiere decir que las casas tienen áreas habitables pequeños o medianos y que son pocas las viviendas con tamaños excepcionalmente grandes. Esto sugiere la presencia de valores atípicos que podrían afectar la media

10 Construye un boxplot de la variable price según la variable waterfront(frente al rio). ¿Qué muestra este gráfico respecto al precio de casas con vista al agua vs sin vista?

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
ggplot(Precios_de_casas, aes(x = factor(waterfront), y = price)) +
  geom_boxplot(fill = c("pink","lightblue")) +
  labs(x = "Frente al mar (0 = Sin vista, 1 =  Con vista)", 
       y = "Precio de la casa",
       title = "Precio vs vista al agua") +
  theme_minimal()

En el box plot podemos observar que en promedio las casas de un valor medio tienen una vista al mar, sin embargo hay casas que superan el valor medio(casas de lujo) y tambien cuentan con vista al mar,podemos observar que la mediana de los precios de las casa con vista al mar es significativamente mas alta a comparacion de las casas sin vista lo que idica que las propiedades que poseen vista al mar tienen un precio mas significativo. por otro lado aunque la cantidad de propiedades que no cuenta con vista al mar es mayor dentro de esta categoria tambien se encuentran casas de lujo.

11 calcular la media, mediana y desviación estándar del precio (price). Describir el significado

meanprice<-mean(Precios_de_casas$price)
median(Precios_de_casas$price)
## [1] 450000
sdp<-sd(Precios_de_casas$price)
#coeficiente de variacion 
cv<-(sdp/meanprice)*100
print(cv)
## [1] 67.97542

En promedio, el valor de las casas es alrededor de 540,088 pesos.Ademas la mitad de las casas tiene un precio por debajo de 450,000 pesos mientras que,la otra mitad tienen un precio mayor o igual a este valor. lo que indic que los precios estan distribuidos de forma simetrica probablemente debido a la presencia de casa de lujo

La desviacion estandar es de 367,127 aproximadaente lo que significa que haya una alta variabilidad de precios esto significa que los precios de las casas son bastante dispersos con respecto a la media.