1. Introdução

Essa atividade foi proposta como avaliação final, par a discilina “Estatística aplicada à Engenharia” ministrada pelo professor Steven Dutt-Ross. A cidade de São Paulo, possui cerca de 12 milhões de habitantes, que se distribuem em prédios e casas ao longo de 1,5 mil quilômetros quadrados, que são divididos em bairros muito diferentes entre si, em termos de perfil, mobilidade e custos. Sabe-se que o custo de vida em São Paulo é um dos maiores do Brasil, comparado a outras capitais,perdendo apenas para algumas cidades do sul, como Florianópolis. Segundo o blog Lofts, São Paulo se apresenta como a maior cidade do Brasil, e a oitava mais populosa do mundo. Como acolhe em seu território uma grande diversidade de empresas, possui uma enorme variedade de atividades, como cinemas, teatros, shoppings, restaurantes, bares, museus, parques, e afin, isso confere a ela uma fama de cidade que nunca dorme.

E é neste contexto que nasce a proposta do presente estudo, elaborar pesquisas que ajudem no custo de vida em São Paulo, pelo menos no quesito moradia.

Para que o estudo se mostrassse amplo, usou-se como base de dados, imóveis disponíveis para venda assim como os disponíveis para locação, com o objetivo de atingir o maior número ppossível de interessados na pesquisa.

2. Objetivo

O objetivo do presente estudo é avaliar o custo com moradia, medindo a partir de ofertas imobiliárias disponiveis, tanto para aquisição como locação. Para amplicar as informações, a pesquisa envolveu caracteristicas dos referidos imóveis, criando uma base de análise com base nessas diferenças.

3. Metodologia

A metodologia do presente estudo possui as seguintes etapas: Inicialmente, foi necessário selecionar e carregar a base de dados para o ambiente do RStudio. A fonte selecionada foi a plataforma de dados sugerida pelo professor da disciplina, denominada Kaggle. Kaggle é uma das mais conhecidas plataformas para competições de Data Science. A plataforma foi fundada em 2010 por Anthony Goldbloom, e em 2017 foi adquirida pelo Google (Alphabet).

3.1 Carregando os Dados

A base de dados foi devidamente carregada, conforme tabela a seguir.

library(readr)
archive <- read_csv("C:/Users/Cliente/Downloads/archive.zip")
## 
## -- Column specification --------------------------------------------------------
## cols(
##   Price = col_double(),
##   Condo = col_double(),
##   Size = col_double(),
##   Rooms = col_double(),
##   Toilets = col_double(),
##   Suites = col_double(),
##   Parking = col_double(),
##   Elevator = col_double(),
##   Furnished = col_double(),
##   `Swimming Pool` = col_double(),
##   New = col_double(),
##   District = col_character(),
##   `Negotiation Type` = col_character(),
##   `Property Type` = col_character(),
##   Latitude = col_double(),
##   Longitude = col_double()
## )
View(archive)

3.2 Analisando os dados

3.2.1 Estrutura dos Dados

str(archive)
## spec_tbl_df [13,640 x 16] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Price           : num [1:13640] 930 1000 1000 1000 1300 1170 1000 900 1000 1000 ...
##  $ Condo           : num [1:13640] 220 148 100 200 410 0 180 150 0 0 ...
##  $ Size            : num [1:13640] 47 45 48 48 55 50 52 40 65 100 ...
##  $ Rooms           : num [1:13640] 2 2 2 2 2 2 1 2 2 2 ...
##  $ Toilets         : num [1:13640] 2 2 2 2 2 2 2 2 2 2 ...
##  $ Suites          : num [1:13640] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Parking         : num [1:13640] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Elevator        : num [1:13640] 0 0 0 0 1 0 1 0 0 0 ...
##  $ Furnished       : num [1:13640] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Swimming Pool   : num [1:13640] 0 0 0 0 0 0 0 0 0 0 ...
##  $ New             : num [1:13640] 0 0 0 0 0 0 0 0 0 0 ...
##  $ District        : chr [1:13640] "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" ...
##  $ Negotiation Type: chr [1:13640] "rent" "rent" "rent" "rent" ...
##  $ Property Type   : chr [1:13640] "apartment" "apartment" "apartment" "apartment" ...
##  $ Latitude        : num [1:13640] -23.5 -23.6 -23.5 -23.5 -23.5 ...
##  $ Longitude       : num [1:13640] -46.5 -46.5 -46.5 -46.5 -46.5 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Price = col_double(),
##   ..   Condo = col_double(),
##   ..   Size = col_double(),
##   ..   Rooms = col_double(),
##   ..   Toilets = col_double(),
##   ..   Suites = col_double(),
##   ..   Parking = col_double(),
##   ..   Elevator = col_double(),
##   ..   Furnished = col_double(),
##   ..   `Swimming Pool` = col_double(),
##   ..   New = col_double(),
##   ..   District = col_character(),
##   ..   `Negotiation Type` = col_character(),
##   ..   `Property Type` = col_character(),
##   ..   Latitude = col_double(),
##   ..   Longitude = col_double()
##   .. )

Considerando que o trabalho se apresenta com a finalidade de auxilio a moradores e possíveis moradores de uma cidade brasileira, São Paulo, julgou-se útiltraduzir os nomes das variáveis para o idioma nacional, o portugues.

nomes <- c("Preço","Condominio","Tamanho","Quarto", "Banheiro", "Suítes","Estacionamento","Elevador","Finalizada","Piscina",
           "Novo","Bairro","TipoNegociacao","TipoPropriedade", "Latitude","Longitude")
names(archive)<-nomes

Observando a Base de Dados, após a tradução.

str(archive)
## spec_tbl_df [13,640 x 16] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ Preço          : num [1:13640] 930 1000 1000 1000 1300 1170 1000 900 1000 1000 ...
##  $ Condominio     : num [1:13640] 220 148 100 200 410 0 180 150 0 0 ...
##  $ Tamanho        : num [1:13640] 47 45 48 48 55 50 52 40 65 100 ...
##  $ Quarto         : num [1:13640] 2 2 2 2 2 2 1 2 2 2 ...
##  $ Banheiro       : num [1:13640] 2 2 2 2 2 2 2 2 2 2 ...
##  $ Suítes         : num [1:13640] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Estacionamento : num [1:13640] 1 1 1 1 1 1 1 1 1 1 ...
##  $ Elevador       : num [1:13640] 0 0 0 0 1 0 1 0 0 0 ...
##  $ Finalizada     : num [1:13640] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Piscina        : num [1:13640] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Novo           : num [1:13640] 0 0 0 0 0 0 0 0 0 0 ...
##  $ Bairro         : chr [1:13640] "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" ...
##  $ TipoNegociacao : chr [1:13640] "rent" "rent" "rent" "rent" ...
##  $ TipoPropriedade: chr [1:13640] "apartment" "apartment" "apartment" "apartment" ...
##  $ Latitude       : num [1:13640] -23.5 -23.6 -23.5 -23.5 -23.5 ...
##  $ Longitude      : num [1:13640] -46.5 -46.5 -46.5 -46.5 -46.5 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   Price = col_double(),
##   ..   Condo = col_double(),
##   ..   Size = col_double(),
##   ..   Rooms = col_double(),
##   ..   Toilets = col_double(),
##   ..   Suites = col_double(),
##   ..   Parking = col_double(),
##   ..   Elevator = col_double(),
##   ..   Furnished = col_double(),
##   ..   `Swimming Pool` = col_double(),
##   ..   New = col_double(),
##   ..   District = col_character(),
##   ..   `Negotiation Type` = col_character(),
##   ..   `Property Type` = col_character(),
##   ..   Latitude = col_double(),
##   ..   Longitude = col_double()
##   .. )
View(archive)

A base de dados consiste em uma amostra, de cerca de 13.640 apartamentos, localiados na cidade de São Paulo,disponíveis para venda e também para aluguel. Esses dados foram coletados, anonimamente, por uma pequena imobiliária localizada na cidade de Canoas, no Rio Grande do Sul, por motivação imobiliária, e que serve de norteador aos usuários do setor imobiliário, nesta cidade.

Foi considerado neste estudo, o quantitativo de 16 variáveis, sendo representadas por 16 caracteríscas dos imóveis, como por exemplo, o numero de quartos, número de banheiros, valor da despesa com condominio, se possui vaga de garagem, entre outras. Os dados coletados possuem diversas fontes, especialmente sites de classificados imobiliários, anunciados em abril de 2019.

As 16 variáveis são:

  1. Price: Preço anunciado
  2. Condo: Despesa de condomínio
  3. Size: tamanho no imóvel em metros quadrados
  4. Rooms: Número de Quartos
  5. Toilets: Número de Banheiros
  6. Suites: Número de quartos com banheiro privativo
  7. Parking: Número de vagas de estacionamento
  8. Elevator: 1 se tiver elevador no prédio, 0 se não tiver
  9. Furnished: 1 se a propriedade dor divertida, 0 caso contrário
  10. Swimming Pool: 1 se a propriedade tiver piscina, 0 caso contrário
  11. New: 1 se a propriedade for recente, 0 caso contrário
  12. District: Bairro de localização do imóvel
  13. Negotiation Type: Venda ou aluguel
  14. Property Type: Tipo de propriedade
  15. LatitudeGeographic: Localização Latitude
  16. LongitudeGeographic: Localização Longitude

3.2.2 Tranformando algumas variáveis, para melhor entendimento da Base

As variáveis “elevador”, “piscina” e “novo” estão representadas de forma binaria, com 1 e 0, mas ditaticamente seriam mais úteis ao trabalho, se demonstradas de forma descritiva, ou seja, com as expressões: “tem ou não tem elevador”, se é “novo ou antigo o imóvel”, e se “tem ou não tem piscina”.

dados = data.frame(archive)
dados$Elevador = ifelse(dados$Elevador==1, "Tem", "Não tem")
dados$Novo = ifelse(dados$Novo==1, "Novo", "Antigo")
dados$Piscina = ifelse(dados$Piscina==1, "Tem", "Não tem")
str(dados)
## 'data.frame':    13640 obs. of  16 variables:
##  $ Preço          : num  930 1000 1000 1000 1300 1170 1000 900 1000 1000 ...
##  $ Condominio     : num  220 148 100 200 410 0 180 150 0 0 ...
##  $ Tamanho        : num  47 45 48 48 55 50 52 40 65 100 ...
##  $ Quarto         : num  2 2 2 2 2 2 1 2 2 2 ...
##  $ Banheiro       : num  2 2 2 2 2 2 2 2 2 2 ...
##  $ Suítes         : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ Estacionamento : num  1 1 1 1 1 1 1 1 1 1 ...
##  $ Elevador       : chr  "Não tem" "Não tem" "Não tem" "Não tem" ...
##  $ Finalizada     : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ Piscina        : chr  "Não tem" "Não tem" "Não tem" "Não tem" ...
##  $ Novo           : chr  "Antigo" "Antigo" "Antigo" "Antigo" ...
##  $ Bairro         : chr  "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" "Artur Alvim/São Paulo" ...
##  $ TipoNegociacao : chr  "rent" "rent" "rent" "rent" ...
##  $ TipoPropriedade: chr  "apartment" "apartment" "apartment" "apartment" ...
##  $ Latitude       : num  -23.5 -23.6 -23.5 -23.5 -23.5 ...
##  $ Longitude      : num  -46.5 -46.5 -46.5 -46.5 -46.5 ...

3.2.3 Proporção dos valores encontrados na Base de Dados

Avaliando as proporções, evidencia-se que 52% dos imóveis são para aluguel enquanto 47% são imóveis para a venda. Também avaliamos que o preço mínimo do aluguel é de 480,00, como uma média de 2.000,00, e maior valor de 50.000,00, enquanto o preço médio de venda é 608.624,00, variando entre 42.000,00 e R$ 10.000.000,00 (Sendo esse identificado como um outilier).

Com isso podemos dizer que o desvio padrão dos preços de venda são superiores ao de aluguel.

Tabela_Prop <- prop.table(table(dados$TipoNegociacao))
Tabela_Prop
## 
##     rent     sale 
## 0.529912 0.470088
tapply(dados$Preço, dados$TipoNegociacao, summary)
## $rent
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     480    1350    2000    3078    3300   50000 
## 
## $sale
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##    42000   250000   380000   608624   679000 10000000

3.3 Método de Análises

As análises da base de dados se deram na seguinte ordem:

Primeiro foi construido dois gráficos tipo Boxplot, para o estudo de variáveis quantitativas, voltandas para o custo da moradia: valor do condominio, e tamanho dos imoveis.

Em seguida foi feita uma avaliação da correlação entre a variavel preço, com as outras variáveis quantitativas, com o objetivo de avaliar como a variável preço, se comporta em relação ao numero de quartos do imóvel, banheiro, suites, e entre outras.

Em seguida, foi construida a matriz de correlação, para medir o grau de correlação entre todas as variáveis quantitativas.

E por último, mas não menos importante foi feito o teste de hipóteses, com o mesmo objetivo, avaliar a correlação entre as variáveis, justamente para se ter um diagnóstico dos fatores que contribuiem ou não para o valor gasto pela moradia naquela cidade. Como a análise feita foi em variáveis quantitativas, primeiro realizou-se a verificação da normalidade, atraves de representações gráficas.

4. Resultado das Análises, para discussão

4.1 Criação de Gráficos - Boxplot

boxplot(dados$Tamanho, 
        main = 'Boxplot 1: Tamanho Total', 
        col = 'purple')

Analisando o gráfico acima, nota-se que existe a presença de outliers para a variável tamanho dos imóveis, com destaque para dois itens acima do valor máximo em m2. E por isso verifica-se que a variância (ou dispersão) é bem grande.

boxplot(dados$Preço,dados$Condominio,
        main = 'Boxplot 2: Variáveis Diretamente Relacionadas ao Custo de Moradia', 
        col = c('blue','green'), 
        names = c('Valor(Venda ou Aluguel)', 'Valor do Condominio'))

Analisando o gráfico acima, nota-se que existe a presença de outliers nos valores dos imóveis, o que significa que no quesito aluguel/venda, existem valores muito distantes da mediada, diferente da ditribuição dos dados na variável valor do condominio.

4.2 Matriz de Correlação

A matriz de correlação demonstra de forma gráfica, e em valores numericos, coeficiente de correlação entre variáveis.

4.2.1 Correlação dos Dados

A Correlação é o estudo que tem por finalidade medir a direção (positivas ou negativas) e a intensidade (força) da relação linear entre duas variáveis quantitativas, ou seja, identificar o relacionamento entre elas, com o objetivo de observar se elas se mostram independentes ou variam juntas.

Para definir a intensidade e a direção dessa assossiação, calcula-se o coeficiente de correlação de Pearson (r), seguindo os parâmetros de análise abaixo descritos:

Positiva - se uma aumentar, a outra também aumenta

0,0 < r < 0,2 - baixo ou nenhuma associação

0,2 < r < 0,7 - grau fraco/moderado de associação

r > 0,7 - grau forte de associação

Negativa - se uma aumentar, a outra diminui

-0,2 < r < 0,0 - baixo ou nenhuma associação

-0,7 < r < -0,2 - grau fraco/moderado de associação

r < -0,7 - grau forte de associação

Neste estudo, medimos a correlação entre o preço cobrado pelos imóveis (seja na venda ou no aluguel), combinado com algumas variáveis, como: quantidade de quatos, quantidade de banheiros, suites privativas, tamanho total dos imóveis e quantas vagas de garagem possui. Encontramos uma correlação baixa, dessas variáveis, em relação ao preço.

cor(dados$Preço, dados$Quarto)
## [1] 0.2722671
cor(dados$Preço, dados$Banheiro)
## [1] 0.3418874
cor(dados$Preço, dados$Suítes)
## [1] 0.3132667
cor(dados$Preço, dados$Tamanho)
## [1] 0.3784496
cor(dados$Preço, dados$Estacionamento)
## [1] 0.3379593

4.2.2 Matriz de Correlação

library(corrplot)
## Warning: package 'corrplot' was built under R version 4.1.2
## corrplot 0.92 loaded
MC <-cor(dados[,c("Preço","Quarto","Banheiro","Suítes","Estacionamento")])
corrplot.mixed(MC)

A partir da matriz de correlação é possível verificar que as variáveis banheiro e suite possuem bom grau de associação, o que de certa forma é obvio tendo em vista que parte de uma variável, é composta pela outra, porém essa informação não contribui diretamente com o objetivo do estudo, que é o de medir custo de moradia.

Nessa representação gráfica, fica evidente a pouca relação do preço com essas variáveis. Em resumo, o que está influensiando significativamente entre essas variáveis é a questão do imovel possuir vaga de garagem, e suites, pois essas variáveis também são as que mais se relacionam com o preço, em detrimento das demais.

4.3 Teste de Hipóteses

Para atender o objetivo principal do presente estudo, desenvolvemos o teste de hipóteses, coletando da base de dados, somente variáveis do tipo quantitativas, de modo que será necessário a verificação da normalidade dos dados, para identificar o teste mais adequado, ou seja, se há normalidade total, o teste usado seria o de Pearson, já se identificado a normalidade como parcial, usaremos o teste de Spearman.

4.3.1 Teste da Normalidade

Para medir se os dados possuem distribuição normal, usaremos as representações gráficas ggplot e histograma.

4.3.2 Gráfico GGplot

qqnorm(dados$Preço, col = 'red', pch = 16)
qqline(dados$Preço)

4.3.3 Histograma

hist(dados$Preço, main = 'Histograma Dos Preços do Imóveis', 
     xlab = 'Valores')

O gráfico GGPlot apresenta dados muito dispersos, totalemente fora da reta, evidenciando a anormalidade dos valores dos imóvei, como já demonstrado anteriormente com outras métricas. O mesmo vale para o histograma, que apresenta um formato muito distante de um sino, o que seria um indício da falta de normalidade dos dados, logo o teste adequado é o teste de Spearman.

5. Conclusões

A partir dos resultados obtidos, é possível concluir que o custo de vida na cidade de São Paulo é alto, não seguindo uma normalidade, e por isso com algumas exceções exageradas inclusive, devido suas proporcionalidades em relação a média, mediana e identificação dos outliers.

Os gráficos do tipo Boxplot e a matriz de correlação entre as variáveis, serviram de métricas para embasar o comportamento das variáveis entre si, corroborando com o todo para se chegar a conclusão acima descrita.

De acordo com a métricas de correlação, os imóveis mais caros, são aqueles que possuem estacionamento, o que é de se esperar visto se tratar de uma grande cidade, onde deixar o veículo na rua não é uma opção, e o tamanho dos imóveis, considerando as variáveis quantidade de suites e banheiros.