Objetivo: Manipulación de datos, software de programación y elaboración de documentos automatizados. Comunicación de resultados mediante análisis estadístico y gráfico.

Bibliotecas

library(quantmod)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: TTR
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(tidyverse)
## ── Attaching packages
## ───────────────────────────────────────
## tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.7     ✔ dplyr   1.0.9
## ✔ tidyr   1.2.0     ✔ stringr 1.4.0
## ✔ readr   2.1.2     ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::first()  masks xts::first()
## ✖ dplyr::lag()    masks stats::lag()
## ✖ dplyr::last()   masks xts::last()
library(moments)
library(naniar)
library(scales)
## 
## Attaching package: 'scales'
## 
## The following object is masked from 'package:purrr':
## 
##     discard
## 
## The following object is masked from 'package:readr':
## 
##     col_factor
library(ggthemes)
library(extrafont)
## Registering fonts with R
library(devtools)
## Loading required package: usethis
library(readxl)

Tema a utilizar dentro de los gráficos

Tema_Evidencia <- theme_bw()+
  theme(text = element_text(family = 'Times',
                            color = '#000000'),
        title = element_text(family = 'Times',
                             color = '#000000',
                             size = 14),
        axis.line = element_line(color = '#000000'),
        axis.ticks = element_line(color = '#000000'),
        axis.text = element_text(family = 'Times',
                                 color = '#000000'),
        panel.background = element_rect(fill = '#E4FFF4'),
        panel.border = element_rect(colour = '#000000'),
        plot.background = element_rect(fill = '#E4FFF4'),
        legend.background = element_rect(fill = '#E4FFF4'))

Colores a utilizar a lo largo del código

color1 <- '#7A917B'
color2 <- '#9C9683'
color3 <- '#C8AED1'
color4 <- '#EBA190'
color5 <- '#BAC2F5'
color6 <- '#C7FAA9'
color7 <- '#D6CB8B'
color8 <- '#D4CCB8'
color9 <- '#FAAAD3'

Indicaciones:

1. Carga la base de datos house_sales.xlsx a R

Con el siguiente código se carga la base de datos a R para poder trabajar sobre ella en la evidencia.

suppressWarnings(
HouseSales <- read_excel("house_sales.xlsx"))
view(HouseSales)

2. Realiza una selección de variables para llevar a cabo tu estudio

  1. Las obligatorias son: SalePrice y HouseStyle
  2. Las recomendaciones son: LotArea, OverallQual, OverallCond, YearBuilt, BedroomAbvGr, GarageArea y PoolArea.
  3. Usa el descriptor de variables para explicar cada una de ellas, así como los valores y unidades en que están reportadas.

Las variables a utilizar en el estudio son:

*SalePrice: Precio de venta (Dólares)

**SalePrice2: Precio de venta (Dólares)

→ Esta variable se incluyó dos veces ya que para el tratamiento de datos estadísticos se usaran todos los valores pero para el tratamiento de datos en las gráficas se usarán rangos

*HouseStyle: Estilo de vivienda (Según pisos completados)

*LotArea: Área del terreno en pies cuadrados (Pies cuadrados)

**LotArea2: Área del terreno en pies cuadrados (Pies cuadrados)

→ Esta variable igual se incluyó dos veces para que en el tratamiento de datos estadísticos se usaran todos los valores pero para el tratamiento de datos en las gráficas se usarán rangos

*OverallCond: Califica la condición general de la casa (Del 1 al 10)

**OverallCond2: Califica la condición general de la casa (Del 1 al 10)

→ Esta variable de igual manera se incluyó dos veces ya que en el tratamiento de valores estadísticos se necesita que sea en valor numérico pero para el tratamiento de datos gráficos se necesita que sea un valor de tipo chr

*YearBuilt: Año de construcción de la casa (Años)

Se depurará la base de datos para trabajar únicamente con las variables elegidas para el estudio.

HouseSales <- HouseSales %>% 
  select(SalePrice,SalePrice2,HouseStyle,LotArea,LotArea2,OverallCond,OverallCond2,YearBuilt)

Una vez depurada, se presenta la base de datos.

HouseSales %>% 
  glimpse()
## Rows: 2,919
## Columns: 8
## $ SalePrice    <dbl> 208500, 181500, 223500, 140000, 250000, 143000, 307000, 2…
## $ SalePrice2   <dbl> 208500, 181500, 223500, 140000, 250000, 143000, 307000, 2…
## $ HouseStyle   <chr> "2Story", "1Story", "2Story", "2Story", "2Story", "1.5Fin…
## $ LotArea      <dbl> 8450, 9600, 11250, 9550, 14260, 14115, 10084, 10382, 6120…
## $ LotArea2     <dbl> 8450, 9600, 11250, 9550, 14260, 14115, 10084, 10382, 6120…
## $ OverallCond  <dbl> 5, 8, 5, 5, 5, 5, 5, 6, 5, 6, 5, 5, 6, 5, 5, 8, 7, 5, 5, …
## $ OverallCond2 <dbl> 5, 8, 5, 5, 5, 5, 5, 6, 5, 6, 5, 5, 6, 5, 5, 8, 7, 5, 5, …
## $ YearBuilt    <dbl> 2003, 1976, 2001, 1915, 2000, 1993, 2004, 1973, 1931, 193…

3. Si lo consideras necesario, realiza una reclasificación de variables para facilitar el tratamiento estadístico; asimismo, limpia por valores faltantes o atípicos de la base.

Dentro de las variables seleccionadas, se reclasificará la de HouseStyle para facilitar el tratamiento de los datos presentados.

HouseSales <- HouseSales %>% 
  mutate(Style=case_when(HouseStyle=="1Story"~"1 Piso",
                          HouseStyle=="1.5Fin"~"1.5 Pisos: Segundo nivel terminado",
                          HouseStyle=="1.5Unf"~"1.5 Pisos: Segundo nivel no terminado",
                          HouseStyle=="2Story"~"2 pisos",
                          HouseStyle=="2.5Fin"~"2.5 Pisos: Segundo nivel terminado",
                          HouseStyle=="2.5Unf"~"2.5 Pisos: Segundo nivel no terminado",
                          HouseStyle=="SFoyer"~"Vestíbulo divido",
                          HouseStyle=="SLvl"~"Nivel dividido")) %>% 
  select(-HouseStyle)

De igual manera, para tener los valores adecuados a la hora de trabajar con los gráficos se realizó una reclasificación de la variable OverallCond.

HouseSales <- HouseSales %>% 
  mutate(Condition=case_when(OverallCond2==1~"1",
                                OverallCond2==2~"2",
                                OverallCond2==3~"3",
                                OverallCond2==4~"4",
                                OverallCond2==5~"5",
                                OverallCond2==6~"6",
                                OverallCond2==7~"7",
                                OverallCond2==8~"8",
                                OverallCond2==9~"9",
                                OverallCond2==10~"10"))%>% 
  select(-OverallCond2)

Para facilitar la comunicación de ciertos datos se reclasificó la variable de LotArea en rangos.

HouseSales<- HouseSales %>% 
  mutate(Area=case_when(between(LotArea2,1300,31300)~"1,300 a 31,300",
                             between(LotArea2,31301,61300)~"31,301 a 61,300",
                             between(LotArea2,61301,91300)~"61,300 a 91,300",
                             between(LotArea2,91301,121300)~"91,300 a 121,300",
                             between(LotArea2,121301,151300)~"121,300 a 151,300",
                             between(LotArea2,151301,181300)~"151,300 a 181,300",
                             between(LotArea2,181301,211300)~"181,300 a 211,300",
                             between(LotArea2,211301,215425)~"211,300 a 215,245")) %>% 
  select(-LotArea2)

Por último, ya que el objetivo de la investigación es analizar los factores que determinan el precio de la casa, se reclasificó la variable de SalePrice para poder tener los precios en rangos.

HouseSales<- HouseSales %>% 
  mutate(Price=case_when(between(SalePrice2,34900,134900)~"34,900 a 134,900",
                             between(SalePrice2,134901,234900)~"134,900 a 234,900",
                             between(SalePrice2,234901,334900)~"234,900 a 334,900",
                             between(SalePrice2,334901,434900)~"334,900 a 434,900",
                             between(SalePrice2,434901,534900)~"434,900 a 534,900",
                             between(SalePrice2,534901,634900)~"534,900 a 634,900",
                             between(SalePrice2,634901,734900)~"634,900 a 734,900",
                             between(SalePrice2,734901,755000)~"734,900 a 755,900")) %>% 
  select(-SalePrice2)

Ya con variables reclasificadas, la base de datos se ve de la siguiente manera:

HouseSales %>% 
  glimpse()
## Rows: 2,919
## Columns: 8
## $ SalePrice   <dbl> 208500, 181500, 223500, 140000, 250000, 143000, 307000, 20…
## $ LotArea     <dbl> 8450, 9600, 11250, 9550, 14260, 14115, 10084, 10382, 6120,…
## $ OverallCond <dbl> 5, 8, 5, 5, 5, 5, 5, 6, 5, 6, 5, 5, 6, 5, 5, 8, 7, 5, 5, 6…
## $ YearBuilt   <dbl> 2003, 1976, 2001, 1915, 2000, 1993, 2004, 1973, 1931, 1939…
## $ Style       <chr> "2 pisos", "1 Piso", "2 pisos", "2 pisos", "2 pisos", "1.5…
## $ Condition   <chr> "5", "8", "5", "5", "5", "5", "5", "6", "5", "6", "5", "5"…
## $ Area        <chr> "1,300 a 31,300", "1,300 a 31,300", "1,300 a 31,300", "1,3…
## $ Price       <chr> "134,900 a 234,900", "134,900 a 234,900", "134,900 a 234,9…
  view(HouseSales)
HouseSales %>% 
  glimpse()
## Rows: 2,919
## Columns: 8
## $ SalePrice   <dbl> 208500, 181500, 223500, 140000, 250000, 143000, 307000, 20…
## $ LotArea     <dbl> 8450, 9600, 11250, 9550, 14260, 14115, 10084, 10382, 6120,…
## $ OverallCond <dbl> 5, 8, 5, 5, 5, 5, 5, 6, 5, 6, 5, 5, 6, 5, 5, 8, 7, 5, 5, 6…
## $ YearBuilt   <dbl> 2003, 1976, 2001, 1915, 2000, 1993, 2004, 1973, 1931, 1939…
## $ Style       <chr> "2 pisos", "1 Piso", "2 pisos", "2 pisos", "2 pisos", "1.5…
## $ Condition   <chr> "5", "8", "5", "5", "5", "5", "5", "6", "5", "6", "5", "5"…
## $ Area        <chr> "1,300 a 31,300", "1,300 a 31,300", "1,300 a 31,300", "1,3…
## $ Price       <chr> "134,900 a 234,900", "134,900 a 234,900", "134,900 a 234,9…
  view(HouseSales)

A continuación se busca encontrar si hay valores faltantes dentro de alguna de las variables

HouseSales %>% 
  vis_miss()
## Warning: `gather_()` was deprecated in tidyr 1.2.0.
## Please use `gather()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.

4. Obtén estadísticas descriptivas de las variables, tanto de forma agrupada como de forma no agrupada y explica dichos resultados.

Cálculos estadística descriptiva no agrupada

Promedios

HouseSales %>% 
  summarise(Media_SalesPrice=mean(SalePrice),
            Media_LotArea=mean(LotArea),
            Media_OverallCond=mean(OverallCond))
## # A tibble: 1 × 3
##   Media_SalesPrice Media_LotArea Media_OverallCond
##              <dbl>         <dbl>             <dbl>
## 1          180053.        10168.              5.56

Modas

mode_chrSales <- function(Price){
return(names(which.max(table(Price))))}
mode_chrArea <- function(Area){
return(names(which.max(table(Area))))}
modeCondition <- function(OverallCond) {
return(as.numeric(names(which.max(table(OverallCond)))))}
modeYear <- function(YearBuilt) {
return(as.numeric(names(which.max(table(YearBuilt)))))}
mode_chr <- function(Style){
return(names(which.max(table(Style))))}
HouseSales %>% 
  summarise(Moda_Price=mode_chrSales(Price),
            Moda_Area=mode_chrSales(Area),
            Moda_OverallCond=modeCondition(OverallCond),
            Moda_YearBuilt=modeYear(YearBuilt),
            Moda_HouseStyle=mode_chr(Style))
## # A tibble: 1 × 5
##   Moda_Price        Moda_Area    Moda_OverallCond Moda_YearBuilt Moda_HouseStyle
##   <chr>             <chr>                   <dbl>          <dbl> <chr>          
## 1 134,900 a 234,900 1,300 a 31,…                5           2005 1 Piso

Máximos

HouseSales %>% 
  summarise(Max_SalesPrice=max(SalePrice),
            Max_LotArea=max(LotArea),
            Max_OverallCond=max(OverallCond),
            Max_YearBuilt=max(YearBuilt))
## # A tibble: 1 × 4
##   Max_SalesPrice Max_LotArea Max_OverallCond Max_YearBuilt
##            <dbl>       <dbl>           <dbl>         <dbl>
## 1         755000      215245               9          2010

Mínimos

HouseSales %>% 
  summarise(Min_SalesPrice=min(SalePrice),
            Min_LotArea=min(LotArea),
            Min_OverallCond=min(OverallCond),
            Min_YearBuilt=min(YearBuilt))
## # A tibble: 1 × 4
##   Min_SalesPrice Min_LotArea Min_OverallCond Min_YearBuilt
##            <dbl>       <dbl>           <dbl>         <dbl>
## 1          34900        1300               1          1872

Resultados estadística descriptiva no agrupada por variable

SalePrice

Promedio:180,053 dólares

Moda: De 134,900 a 234,900 dólares

Máximo: 755,000 dólares

Mínimo: 34,900 dólares

HouseSales %>%
  ggplot(aes(x=SalePrice,
             y=0))+
  geom_boxplot(fill=color1)+
  scale_x_continuous(labels = dollar_format())+
  labs(title = "Boxplot SalePrice",
       subtitle = "House Sales",
       x="Precio por Casa",
       y='')+
  Tema_Evidencia

En términos de precio podemos observar que de las 2,919 casas estudiadas hay un rango de precios muy amplio que va desde los $34,900 dólares y hasta los $$755,000. A pesar de esto se puede ver que el promedio es de $180,053 dólares y este se encuentra dentro del rango más común dentro del estudio. Por esta razón se puede decir que los valores más cercanos al precio más alto son valores más atípicos que aquellos que se encuentran entre el primer y tercer rango de precios determinados para el estudio. Esto se puede confirmar al ver el gráfico de boxplot que se realizó pues este nos muestra que la mayor concentración de datos, en este caso de precios de la casa, está aproximadamente entre los $150,000 y $200,000 dólares, con presencia de valores extremos más comunes entre los $250,000 y $400,000 dólares y con unos menos comunes que son aquellos que se acercan al máximo y mínimo de precios disponibles.

LotArea

Promedio: 10,168 pies cuadrados

Moda: De 1,300 a 31,300 pies cuadrados

Máximo: 214,245 pies cuadrados

Mínimo: 1,300 pies cuadrados

HouseSales %>%
  ggplot(aes(x=LotArea,
             y=0))+
  geom_boxplot(fill=color3)+
  scale_x_continuous(labels = number_format())+
  labs(title = "Boxplot LotArea",
       subtitle = "House Sales",
       x="Pies Cuadrados por Casa",
       y='')+
  Tema_Evidencia

Hablando de los pies cuadrados, o el área, que tienen las casas estudiadas se puede observar que aquí también hay variedad de espacios muy amplia pero que, de igual manera que en el precio, se puede ver que la mayoría se concentran en un mismo rango, siendo este el de 1,300 a 31,300 pies cuadrados. A pesar de esto, el gráfico de boxplot demuestra que los cuartiles están aproximadamente entre los 7,000 y los 10,000 pies cuadrados y una alta concentración de valores atípicos es de entre 12,500 y 37,500 pies cuadrados. En este caso sí se puede observar que encontrar una casa que esté en alguno de los extremos de área no es fácil pues son valores altamente atípicos.

OverallCond

Promedio: 5.56 puntos

Moda: 5 puntos

Máximo: 9 puntos

Mínimo: 1 punto

HouseSales %>%
  ggplot(aes(x=OverallCond,
             y=0))+
  geom_boxplot(fill=color4)+
  scale_x_continuous(labels = number_format())+
  labs(title = "Boxplot OverallCond",
       subtitle = "House Sales",
       x="Condición por Casa",
       y='')+
  Tema_Evidencia

Interpretar la condición general de la casa es algo relativamente fácil ya que a pesar de que la puntuación va desde 1 hasta 10, siendo la máxima calificación otorgada 9, tanto el promedio como la moda están muy concentrados en una calificación de 5. Esto se confirma con el boxplot que nos muestra que los cuartiles están entre el 5 y el 6.5 pero inclusive la mediana cae en una calificación de 5 y los valores extremos son muy pocos y están muy dispersos.

YearBuilt

Moda: 2005

Máximo: 2010

Mínimo: 1872

HouseSales %>%
  ggplot(aes(x=YearBuilt,
             y=0))+
  geom_boxplot(fill=color5)+
  scale_x_continuous(labels = number_format())+
  labs(title = "Boxplot YearBuilt",
       subtitle = "House Sales",
       x="Año de Construcción por Casa",
       y='')+
  Tema_Evidencia

Para los años de construcción solo se obtuvo la moda, el máximo y el mínimo ya que para este tipo de datos no se puede obtener un promedio. Se puede ver que el año en que se construyeron más casas de las estudiadas fue en 2005 y la concentración principal de años de construcción, demostrada por el boxplot, indica que la mayoría de las casas fueron construidas entre 1960 y 2010 aproximadamente. De igual manera se puede concluir que las casas construidas de 1880 para abajo son extremadamente raras.

HouseStyle

Moda: 1 piso

En términos de estilos de casa, se puede observar que de las 2,919 casas estudiadas lo más común es que estas sean de 1 piso.

Cálculo estadística descriptiva agrupada con explicación por agrupado

Para la finalidad de esta investigación, se presentan estadísticos agrupados de cada variable con los rangos de precios.

→Moda de estilo de casa según rango de precio

mode_chr <- function(Style){
  return(names(which.max(table(Style))))}
HouseSales %>% 
  group_by(Price) %>% 
  summarise(Moda_HouseStyle=mode_chr(Style))
## # A tibble: 7 × 2
##   Price             Moda_HouseStyle
##   <chr>             <chr>          
## 1 134,900 a 234,900 1 Piso         
## 2 234,900 a 334,900 1 Piso         
## 3 334,900 a 434,900 1 Piso         
## 4 34,900 a 134,900  1 Piso         
## 5 434,900 a 534,900 2 pisos        
## 6 534,900 a 634,900 2 pisos        
## 7 734,900 a 755,900 2 pisos

Este primer agrupado estadístico nos indica que en casas que vayan de los $34,900 hasta los $434,900 dólares lo más probable es que se encuentren un estilo de casa de un solo piso mientras que, de $434,000 dólares para arriba la probabilidad basada en la moda es que el estilo de casa sea de dos pisos.

→Promedio de pies cuadrados según el rango de precios

HouseSales %>% 
    group_by(Price)%>% 
    summarise(LotArea=mean(LotArea))
## # A tibble: 7 × 2
##   Price             LotArea
##   <chr>               <dbl>
## 1 134,900 a 234,900   9860.
## 2 234,900 a 334,900  15192.
## 3 334,900 a 434,900  17951.
## 4 34,900 a 134,900    7880.
## 5 434,900 a 534,900  15670.
## 6 534,900 a 634,900  24594.
## 7 734,900 a 755,900  18579

Este agrupado estadístico muestra el promedio de pies cuadrados que tienen las casas dentro de cada rango de precio, dando así una idea aproximada de cuánto cuesta el pie cuadrado de terreno.

→Promedio de puntos de condición de la casa según el rango de precios

HouseSales %>% 
    group_by(Price)%>% 
    summarise(Condition=mean(OverallCond))
## # A tibble: 7 × 2
##   Price             Condition
##   <chr>                 <dbl>
## 1 134,900 a 234,900      5.57
## 2 234,900 a 334,900      5.46
## 3 334,900 a 434,900      5.21
## 4 34,900 a 134,900       5.63
## 5 434,900 a 534,900      5.4 
## 6 534,900 a 634,900      5   
## 7 734,900 a 755,900      5.5

Con este agrupado podemos observar que se confirma el análisis anterior que menciona como en términos de calificación todo está concentrado en 5 puntos y aquí se demuestra que, sin importar el precio de la casa, la tendencia es que la calificación sea la misma.

→Moda de año según el rango de precios

mode_YearBuilt <- function(YearBuilt){
  return(names(which.max(table(YearBuilt))))}
HouseSales %>% 
  group_by(Price) %>% 
  summarise(Moda_YearBuilt=mode_chr(YearBuilt))
## # A tibble: 7 × 2
##   Price             Moda_YearBuilt
##   <chr>             <chr>         
## 1 134,900 a 234,900 2005          
## 2 234,900 a 334,900 2006          
## 3 334,900 a 434,900 2006          
## 4 34,900 a 134,900  1920          
## 5 434,900 a 534,900 2008          
## 6 534,900 a 634,900 2008          
## 7 734,900 a 755,900 1994

En este agrupado estadístico se observa cual es el año más común al que pertenecen las casas de cada rango de precios. Se puede ver cierto patrón en el que, entre más nuevas las casas, más caras y viceversa.

De igual manera se presentan estadísticas descriptivas agrupadas pero ahora por precio en función de cada variable.

→Promedio de precio según el estilo de casa

HouseSales %>% 
  group_by(Style) %>% 
  summarise(SalePrice=mean(SalePrice))
## # A tibble: 8 × 2
##   Style                                 SalePrice
##   <chr>                                     <dbl>
## 1 1 Piso                                  176238.
## 2 1.5 Pisos: Segundo nivel no terminado   125026.
## 3 1.5 Pisos: Segundo nivel terminado      161558.
## 4 2 pisos                                 197288.
## 5 2.5 Pisos: Segundo nivel no terminado   182720.
## 6 2.5 Pisos: Segundo nivel terminado      220000 
## 7 Nivel dividido                          173978.
## 8 Vestíbulo divido                        153907.

Ahora hablando del precio de las casas en función de las diferentes variables primero podemos observar este agrupado que es el que indica el precio promedio de cada estilo de casa, dando una idea de cuánto cuesta cada modelo de los estudiados.

→Promedio de precio según los pies cuadrados de la casa:

HouseSales %>% 
  group_by(Area) %>% 
  summarise(SalePrice=mean(SalePrice))
## # A tibble: 6 × 2
##   Area              SalePrice
##   <chr>                 <dbl>
## 1 1,300 a 31,300      179075.
## 2 151,300 a 181,300   252975 
## 3 211,300 a 215,245   375000 
## 4 31,301 a 61,300     264453.
## 5 61,300 a 91,300     220000 
## 6 91,300 a 121,300    302000

Este segundo agrupado nos habla del precio en función del área e indica el precio promedio a pagar por cada rango de pies cuadrados.

→Promedio de precio según la condición general de la casa

HouseSales %>% 
  group_by(Condition) %>% 
  summarise(SalePrice=mean(SalePrice))
## # A tibble: 9 × 2
##   Condition SalePrice
##   <chr>         <dbl>
## 1 1           183963.
## 2 2           162380.
## 3 3           141182.
## 4 4           148101.
## 5 5           191323.
## 6 6           166734.
## 7 7           167317.
## 8 8           166640.
## 9 9           198374.

En este agrupado se presenta el precio promedio a pagar dependiendo de la calificación general de la casa. Se puede observar que los precios promedio son muy similares y esto se debe a lo comentado anteriormente sobre la alta concentración de casas con una calificación de 5 y muy pocos valores atípicos fuera de este número.

→Promedio de precio según año de construcción

HouseSales %>% 
  group_by(YearBuilt) %>% 
  summarise(SalePrice=mean(SalePrice))
## # A tibble: 118 × 2
##    YearBuilt SalePrice
##        <dbl>     <dbl>
##  1      1872   122000 
##  2      1875    94000 
##  3      1879   184522.
##  4      1880   205658.
##  5      1882   168000 
##  6      1885   111250 
##  7      1890   171546.
##  8      1892   291250 
##  9      1893   325000 
## 10      1895   178772.
## # … with 108 more rows

Este último agrupado es un poco más grande ya que contiene los 118 años en los que se construyeron las casas estudiadas pero otorga información para el precio promedio a pagar según el año en el que la casa fue construida.

5. Grafica usando un tema diseñado por ti la información de la base de datos que permita la comunicación de tus resultados e inferencia con los lectores.

HouseSales %>% 
  ggplot(aes(x=Condition,
             fill=Condition))+
  geom_bar()+
  scale_fill_manual(values = c(color1,color2,color3,color4,color5,color6,color7,color8,color9))+
  scale_y_continuous(labels = number_format())+
  labs(title = "Houses' Condition",
       subtitle = "House Sales",
       x="Condition Scale",
       y="Number of Homes")+
  Tema_Evidencia

Esta gráfica de la calificación de las casas ilustra de muy buena manera lo ya comentado de como casi todos los hogares tienen una calificación de 5 puntos y hay algunos que incluso pueden llegar a los 6, dejando el resto de los datos con valores significativos para el objeto de estudio.

HouseSales %>% 
  ggplot(aes(x=Condition,
             y=SalePrice))+
  geom_point(col="#FAAAD3",
             size=2,
             alpha=1)+
  scale_y_continuous(labels = dollar_format())+
  labs(title = "Houses' Price According to Condition",
       subtitle = "House Sales",
       x="Condition Scale",
       y="Sales Price")+
  Tema_Evidencia

Por otro lado, esta gráfica que muestra la condición general de las casas contra el precio de las mismas es un indicador de que quizá esta no es una variable significativa para alterar el precio pues, en valores que no son 5 se puede ver como casi todos los puntos se agrupan en precios similares y, cuando la calificación sí es 5 entonces los precios van desde el mínimo hasta el máximo. Esto indica que la variación de precios se ve muy poco afectada por la calificación general de la casa.

HouseSales %>% 
  ggplot(aes(x=Area,
             fill=Area))+
  geom_bar()+
  scale_fill_manual(values = c(color7,color8,color4,color5,color6,color4))+
  scale_y_continuous(labels = number_format())+
  labs(title = "Houses' Lot Area",
       subtitle = "House Sales",
       x="Lot Area",
       y="Number of Homes")+
  Tema_Evidencia+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

En este gráfico queda claro lo mencionado en el punto de estadística descriptiva pues, a manera visual se puede observar que casi todas las casas estudiadas sí entran en el rango de 1,300 a 31,300 pies cuadrados y que hay pocas en el rango de 31,300 a 61,300; siendo estas las que llegan aproximadamente hasta los 37,000.

HouseSales %>% 
  filter(LotArea<=31300)%>% 
  ggplot(aes(x=LotArea,
             fill=LotArea))+
  geom_bar(col=color5,
             size=2,
             alpha=1)+
  scale_fill_manual(values = c(color5))+
  scale_y_continuous(labels = number_format())+
  labs(title = "Houses' Lot Area",
       subtitle = "House Sales",
       x="Lot Area",
       y="Number of Homes")+
  Tema_Evidencia

Teniendo en cuenta que la gráfica anterior no muy clara la distribución de pies cuadrados según las casas, se graficó únicamente el rango que va de 1,300 a 31,300. Aquí se puede ver que el mayor número de casas se presenta entre los 5,000 y 10,000 pies cuadrados pero el resto de las áreas sigue estando presente en una o más casas estudiadas por lo que esta sí se puede considerar una variable que influye en el precio.

HouseSales %>% 
  ggplot(aes(x=Area,
             y=SalePrice))+
  geom_point(col=color3,
             size=2,
             alpha=1)+
  scale_y_continuous(labels = dollar_format())+
  labs(title = "Houses' Price According to Lot Area",
       subtitle = "House Sales",
       x="Lot Area",
       y="Sales Price")+
  Tema_Evidencia

Esta gráfica haría parecer que esta variable no es significativa para el precio ya que todo está concentrado en un solo rango. Por esta razón se realizó la siguiente gráfica solo con el rango de 1,300 a 31,300 pies cuadrados.

HouseSales %>% 
  filter(LotArea<=31300)%>% 
  ggplot(aes(x=LotArea,
             y=SalePrice))+
  geom_point(col=color4,
             size=2,
             alpha=1)+
  scale_y_continuous(labels = dollar_format())+
  labs(title = "Houses' Price According to Lot Area",
       subtitle = "House Sales",
       x="Lot Area",
       y="Sales Price")+
  Tema_Evidencia

Aquí podemos observar una gran dispersión de precios y áreas de las casas estudiadas que, a pesar de que tiene una alta concentración entre $0 y $400,000 dólares y los 1,300 y 15,000 pies cuadrados, sigue habiendo muchos valores por fuera que indican que el área de la casa sí influye en el precio de la misma. De igual manera se concluye que este es un valor significativo porque este solo muestra 1 rango de áreas y en el estudio hay 7 más aparte de la graficada.

HouseSales %>% 
  ggplot(aes(x=Style,
             fill=Style))+
  geom_bar()+
  scale_fill_manual(values = c(color3,color2,color1,color5,color6,color4,color9,color8,color7))+
  scale_y_continuous(labels = number_format())+
  labs(title = "Houses' Styles",
       subtitle = "House Sales",
       x="Style",
       y="Number of Homes")+
  Tema_Evidencia+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

De los estilos de cada es complicado obtener un estadístico debido a la naturaleza cualitativa de los datos. Por esta razón esta gráfica ayuda a interpretar mejor el tipo de casas que hay en el estudio y podemos ver que sí predominan las de 1 piso, seguidas por las de 2. Esta moda es algo que igual se pudo observar en uno de los estadísticos agrupados en donde se observó que para precios más bajos se tiende a tener una casa de 1 piso y para precios más altos una casa de 2, siendo estos los estilos que predominan. A pesar de esto se puede observar que si hay otros estilos con alta presencia dentro del estudio y por ende esta variable sí tiene influencia en el precio.

HouseSales %>% 
  ggplot(aes(x=Style,
             y=SalePrice))+
  geom_point(col=color7,
             size=2,
             alpha=1)+
  scale_y_continuous(labels = dollar_format())+
  labs(title = "Houses' Price According to Style",
       subtitle = "House Sales",
       x="Style",
       y="Sales Price")+
  Tema_Evidencia+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

Aquí podemos observar que, efectivamente, el estilo de la casa sí tiene influencia en el precio ya que se puede ver que cada estilo de casa tiene cierto rango de precio determinado y este va cambiando de estilo en estilo. De igual manera se puede observar que los precios serán mayores si los pisos son completos y que entre mayor número de pisos mayor será el costo.

HouseSales %>% 
  ggplot(aes(x=YearBuilt))+
  geom_histogram(bins = 100,
                 fill=color8)+
  scale_y_continuous(labels = number_format())+
  scale_x_continuous(labels = number_format())+
  labs(title = "Histograma YearBuilt",
       subtitle = "House Sales",
       x="Year Built",
       y="Number of Homes")+
  Tema_Evidencia

Esta gráfica muestra un histograma de los años en que se construyeron las casas estudiadas. En este caso podemos ver que la distribución de años no sigue un patrón de normalidad pero, debido al estudio esto no es algo que sorprenda. Podemos observar que el número de casas empieza a incrementar a medida que las casas son más “nuevas”, siendo el periodo de entre el 2000 y el 2010 el año en que se construyeron la mayoría de las casas estudiadas.

HouseSales %>% 
  ggplot(aes(x=YearBuilt,
             y=SalePrice))+
  geom_point(col=color6,
             size=2,
             alpha=1)+
  scale_y_continuous(labels = dollar_format())+
  labs(title = "Houses' Price According to the Year it was Built",
       subtitle = "House Sales",
       x="Year Built",
       y="Sales Price")+
  Tema_Evidencia

Por último este gráfico en el que se puede observar el precio contra el año en que se construyó la casa podemos observar altos niveles de dispersión con tendencia hacia los años más recientes. En estos años sí podemos ver fluctuaciones en los precios por lo que se puede concluir que esta sí es una variable que influye en el precio pues hay puntos que igual empiezan a incrementar a medida que las casas son más nuevas.

6. Conclusiones: después del estudio responde ¿Qué hipótesis podrías plantear sobre los factores que determinan el precio de las casas?

Basándome tanto en la estadística descriptiva como en lo que se puede llegar a observar en las gráficas llego a la hipótesis de que de las variables utilizadas, aquellas que determinan el precio de las casas de manera significativa estadísticamente son el estilo de la casa, el área en pies cuadrados y el año en que se construyó. Por otro lado se concluye que el factor de la calificación de condición general de la casa no tiene influencia en el precio de la misma. Dentro de la hipótesis de las variables que sí determinan el precio se incluye que:

→ Entre los 1,300 y 31,00 pies cuadrados, entre mayor terreno, mayor será el precio

→ Entre mayor número de pisos terminados, mayor será el precio

→ En casas construidas a partir de 1940, entre más nuevas, mayor será el precio