table { display: block; overflow-x: auto; white-space: nowrap; }
Mercado imobiliário é um tópico de suma importância para a economia, seja ela local ou global. Compreender o estado atual do mercado imobiliário de uma certa região é um tópico de suma relevância para analisar a saúde daquela economia, quais os leques de possíveis investimentos e como está atrelado ao bem estar social da população.
Um dos principais desafios nesse contexto é a identificação precoce de sinais de desaceleração ou do possível estouro de uma “bolha imobiliária”, bem como a análise dos fatores que influenciam os preços dos imóveis e as decisões de compra. Trata-se de uma temática de grande relevância, pois impacta diretamente investidores, compradores e formuladores de políticas públicas, além de influenciar o desenvolvimento urbano e o planejamento econômico.
Diante desse cenário, analisar e extrair insights sobre o comportamento do mercado imobiliário torna-se uma tarefa de alto valor estratégico. O dataset Melbourne Housing Market fornece uma base rica de informações sobre as transações imobiliárias na cidade de Melbourne, permitindo a investigação de questões como: “Quando exatamente o mercado começou a desacelerar?”, “Quais regiões apresentam maior valorização ou queda de preços?”, “Há correlação entre o preço e a distância do imóvel ao centro da cidade?”, entre outras. Essas análises podem orientar decisões mais informadas em um setor que envolve alto risco e grandes investimentos.
Para maior contextualização, algumas matérias da BBC explicitam a situação do mercado imobiliário australiano, justificando a execução de um estudo mais detalhado sobre o assunto. Matérias disponíveis em: Preço médio de casa australiana ultrapassa A$ 1 e Crise da habitação em evidência
|
Fonte: Matéria BBC - Preço médio de casa australiana ultrapassa A$ 1 milhão em meio à crise imobiliária |
Fonte: Matéria BBC - As eleições iminentes na Austrália colocam a crise da habitação em evidência |
| Nome do Pacote | Propósito |
|---|---|
| library(tidyverse) | Engloba os pacotes dplyr, tidyr, stringr, ggplot2 etc. |
| library(dplyr) | Facilitação da manipulação de dados (filter, mutate etc.) |
| library(stringr) | Para manipular strings para o formato desejado |
| library(plotly ) | Plotagem de gráficos com melhor estilização e interativos |
| library(rmdformats) | Formatação baseada em Material Design para R Markdown |
| library(scales) | Para ajustar a escala de visualização dos gráficos |
| library(DT) | Para exibição dos dados em formato de tabela |
| library(vroom) | Facilitar a leitura do arquivo csv no documento Rmd |
Para este projeto foi utilizado o dataset Melbourne Housing Market, que pode ser consultado no repositório oficial do dataset no Kaggle.
O dataset possui 21 colunas e 34857 linhas que explicitam uma visão geral do mercado imobiliário de Melbourne, através de transações que ocorreram ao decorrer dos anos de 2016 ao inicio de 2018. Essas informaçoes foram coletadas com o propósito de identificar tendências dentro do mercado imobiliário, como por exemplo aquecimento ou esfriamento do mercado ao longo do tempo.
O dataset original conta com 21 colunas
| Nome do Pacote | Propósito |
|---|---|
| Suburb | Distirto residencial da cidade (Bairro) |
| Address | Endereço |
| Rooms | Número de quartos |
| Type | br - bedroom; h - house; u - unit; t - townhouse; devsite - development site; o res - other residential. |
| Price | Preço em Dólar Australiano |
| Method | Método de venda |
| SellerG | Corretor |
| Date | Data da venda |
| Distance | Distância do imóvel/terreno ao centro em Km |
| Postcode | Código postal |
| Bedroom2 | Número total de cômodos |
| Bathroom | Número de banheiros |
| Car | Vagas de carro/garagem |
| Landsize | Tamanho do terreno, caso não haja construção |
| Building Area | Tamanho da construção (casa, apartamento etc.) |
| YearBuilt | Ano da construção |
| CouncilArea | Conselho de governo da área |
| Lattitude | Latitude |
| Longtitude | Longitude |
| Reginname | Região Geral (Oeste, Noroeste, Norte, Nordeste etc) |
| Propertycount | Número de imóveis existentes no bairro. |
Para alcançar o objetivo desejado foram feitas uma série de manipulações no dataset;
Inicialmente foram removidos os NA’s, o que ocasionou na redução de linhas do conjunto para 8887. Essa remoção foi feita para facilitar a manipulação das colunas durante a análise. Além disso, a coluna Address foi renomeada para OriginalAddress com o intuito de manter a estrutura original do endereço e a coluna SellerG passou por formatação através de regex, para remover caracteres especiais.
house_market <- house_market_load %>%
#remoção de NA's para melhor análise
drop_na() %>%
#renomeação da coluna de endereço
rename(OriginalAddress = Address) %>%
#Remoção de caracteres especiais do nome dos corretores
mutate(SellerG = gsub("[^[:alnum:] ]", "", SellerG))
Então, a coluna BRAddress foi criada para que o endereço ficasse mais compreensível em português, tendo em vista que não possuimos familiaridade com endereços australianos. Após isso, foram criados fatores
# Agrupamento salvando valores em objetos temporários linha por linha dentro do case_when()
rowwise() %>%
# Modificação do endereço para melhor compreensão
mutate(
BRAddress = case_when(
str_detect(OriginalAddress, "^\\d+/\\d+") ~ {
parts <- str_match(OriginalAddress, "^(\\d+)/(\\d+)\\s(.+)")
paste0(parts[4], " N° ", parts[3], " Unidade ", parts[2])
},
str_detect(OriginalAddress, "^\\d+[a-zA-Z]\\s") ~ {
parts <- str_match(OriginalAddress, "^(\\d+)([a-zA-Z])\\s(.+)")
numero <- parts[2]
letra <- toupper(parts[3])
rua <- parts[4]
paste0(rua, " N° ", numero, letra)
},
str_detect(OriginalAddress, "^\\d+\\s") ~ {
parts <- str_match(OriginalAddress, "^(\\d+)\\s(.+)")
paste0(parts[3], " N° ", parts[2])
},
# Cláusula para manter o valor original caso não caia nas condições
TRUE ~ OriginalAddress
)
)Para que fosse possível extrair informações relevantes do dataset, as colunas Type, Regionname e Method foram transformada em fatores, e as colunas Distance e Price foram transformadas em numericos, para serem utilizadas posteriormente em análises.
#Criação de fator com base no tipo de construção, região da cidade e método de
Type = factor(
Type,
levels = c("h", "u", "t", "br", "dev site", "o res"),
labels = c("Casa", "Apartamento", "Townhouse", "Quarto", "Terreno", "Outro")
)
Regionname = as.factor(Regionname)
Method = as.factor(Method)
Distance = as.numeric(Distance)
Price = as.numeric(Price)
As colunas OriginalAddress, Lattitude, Longtitude, Postcode foram removidas, pois não possuem utilidade para a análise. É importante ressaltar que existem outras colunas que evidenciam a localização.
Por fim, foi criada a coluna Preco_m2 que calcula o preço por metro quadrado com base no Landsize (em caso de ser um terreno sem construção) ou BuildingArea quando é uma construção (casa, apto etc.). Além disso, a data foi formatada para Ano/Mês, para ser utilizada posteriormente em análises.
#Preço por metro quadrado, formatado. Checa se há building area ou landsize
house_market <- house_market %>%
mutate(
Preco_m2 = case_when(
!is.na(BuildingArea) & BuildingArea > 0 ~ round(Price / BuildingArea, 2),
!is.na(Landsize) & Landsize > 0 ~ round(Price / Landsize, 2),
)
)
#Transformação da data para poder visualizar preço por Ano/Mes
house_market <- house_market %>%
mutate(
AnoMes = format(as.Date(Date, format = "%d/%m/%Y"), "%Y-%m")
) %>%
select(-Date) # remocao da coluna original Date
)O dataset abaixo é o produto das manipulações, contendo 8887 linhas e 19 colunas.
Para compreender melhor o comportamento do mercado imobiliário ao longo do tempo, foi realizada uma agregação dos dados por mês e ano, com base na data de transação dos imóveis. A partir dessa consolidação, foi calculada a média mensal dos preços de venda (avg_price), bem como o número total de vendas realizadas em cada mês (n_sales).
Essa abordagem permite observar a evolução dos preços ao longo dos meses, identificando tendências de valorização ou desvalorização dos imóveis, além de evidenciar os períodos de maior ou menor atividade no mercado. A criação das variáveis Mes e Ano, extraídas da coluna AnoMes, viabiliza uma visualização mais intuitiva e organizada por período.
Os resultados obtidos fornecem uma base sólida para análises temporais, facilitando a identificação de padrões sazonais, oscilações de preços e impactos de eventos econômicos no mercado imobiliário de Melbourne.
#Valor do imóvel dividido pela quantidade de vendas, agrupado por mês
media_mensal <- house_market %>%
group_by(AnoMes) %>%
summarise(
avg_price = mean(Price, na.rm = TRUE),
n_sales = n()
) %>%
mutate(
Mes = format(ym(AnoMes), "%B"),
Ano = year(ym(AnoMes))
)Para melhor compreensão, o gráfico abaixo exibe a tendência de n° de vendas e Preço Médio dos imóveis ao longo dos 3 anos observados.
#Gráfico de tendência de n_vendas e preços ao longo do tempo
plot_ly() %>%
#preço médio formatado
add_lines(
data = media_mensal,
x = ~ym(AnoMes),
y = ~avg_price,
name = "Preço Médio (AUD)",
line = list(color = "blue", width = 2),
yaxis = "y1",
text = ~paste0(
"Data: ", AnoMes, "<br>",
"Preço Médio: $", formatC(avg_price, format = "f", big.mark = ",", digits = 2)
),
hoverinfo = "text"
) %>%
#número de vendas formatado
add_lines(
data = media_mensal,
x = ~ym(AnoMes),
y = ~n_sales * 2000,
name = "Número de Vendas",
line = list(color = "red", width = 2, dash = "dash"),
yaxis = "y1",
text = ~paste0(
"Data: ", AnoMes, "<br>",
"Nº de Vendas: ", n_sales
),
hoverinfo = "text"
) %>%
layout(
title = list(text = "Tendência do Mercado Imobiliário de Melbourne"),
xaxis = list(title = "Ano-Mês"),
yaxis = list(
title = "Preço médio (AUD)",
tickformat = ",",
side = "left"
),
yaxis2 = list(
title = "Número de Vendas",
side = "right",
overlaying = "y",
tickvals = seq(0, max(media_mensal$n_sales) * 2000, by = 200000),
ticktext = seq(0, max(media_mensal$n_sales), by = 100),
showgrid = FALSE
),
legend = list(orientation = "h", x = 0.1, y = -0.3)
)Com o objetivo de investigar como os preços dos imóveis evoluíram ao longo do tempo em diferentes áreas da cidade de Melbourne, foi realizada uma análise da valorização percentual dos preços médios dos imóveis ao longo do tempo, agrupando os dados por região.
Inicialmente, os dados foram agregados por Regionname (região) e AnoMes (ano e mês), possibilitando o cálculo do preço médio mensal dos imóveis em cada localidade. Em seguida, para cada região, foi calculado o preço médio no primeiro e no último mês disponível no conjunto de dados, permitindo determinar a variação percentual dos preços ao longo do período analisado.
Essa variação foi obtida com a fórmula:
# Agrupar por região e mês
valorizacao_regional <- house_market %>%
group_by(Regionname, AnoMes) %>%
summarise(preco_medio = mean(Price, na.rm = TRUE), .groups = "drop") %>%
mutate(data = ym(AnoMes)) %>%
arrange(Regionname, data)# Variação dos preços
valorizacao_final <- valorizacao_regional %>%
group_by(Regionname) %>%
summarise(
preco_inicio = first(preco_medio),
preco_fim = last(preco_medio),
variacao_pct = round((preco_fim - preco_inicio) / preco_inicio * 100, 2)
) %>%
arrange(desc(variacao_pct)) O resultado pode ser visualizado no gráfico de barras abaixo, onde é possível identificar quais regiões apresentaram maior valorização ao longo do tempo e quais tiveram desempenho mais modesto ou até mesmo retração. Regiões com variação positiva indicam crescimento no valor dos imóveis, sugerindo maior atratividade ou demanda crescente. Já regiões com variação negativa podem apontar para desvalorização do mercado local, o que pode refletir fatores como oferta excessiva, infraestrutura insuficiente ou mudanças no perfil da demanda.
Essa análise é essencial para investidores e planejadores urbanos, pois evidencia áreas com maior potencial de retorno financeiro e regiões que demandam atenção estratégica no desenvolvimento urbano.
#Valorização dos imóveis agrupados por região, ao longo do tempo
plot_ly(valorizacao_final,
x = ~variacao_pct,
y = ~reorder(Regionname, variacao_pct),
type = 'bar',
orientation = 'h',
marker = list(color = ifelse(valorizacao_final$variacao_pct >= 0, '#1b9e77', 'red'))
) %>%
layout(
title = "Variação Percentual dos Preços Médios por Região",
xaxis = list(title = "Variação (%)"),
yaxis = list(title = "Região"),
margin = list(l = 100)
)Uma das hipóteses comuns no mercado imobiliário é que imóveis mais próximos ao centro urbano tendem a ser mais valorizados, devido ao fácil acesso a serviços, infraestrutura e empregos. Para testar essa premissa no contexto da cidade de Melbourne, foi avaliada a relação entre a variável Distance (distância do imóvel ao centro da cidade) e Price (preço do imóvel).
A correlação foi calculada utilizando a função de correlação de Pearson, que mede a força e a direção da relação linear entre duas variáveis contínuas. Para evitar distorções por valores ausentes, foram consideradas apenas observações completas (use = “complete.obs”).
#Correlacionar distancia do centro ao preço.
correlacao_distancia_centro <- cor(house_market$Distance, house_market$Price, use = "complete.obs")O resultado dessa análise oferece uma base para validar ou refutar a ideia de que a localização central influencia diretamente o preço de mercado dos imóveis em Melbourne.
A correlação entre a distância ao centro e o preço do imóvel é de -0.23. Significando que possui fraca relação inversa entre as variáveis, ou seja, existe uma tendência fraca de que imóveis mais distantes do centro tenham preços baixos assim como existe uma tendência fraca de que imóveis mais próximos do centro tenham preços mais altos.
#grafico de dispersão
plot_ly(width = 1000, height = 600) %>%
add_markers(
data = house_market,
x = ~Distance,
y = ~Price,
name = "Imóveis",
marker = list(opacity = 0.6)
) %>%
add_lines(
x = ~house_market$Distance,
y = ~fitted(lm(Price ~ Distance, data = house_market)),
name = "Tendência Linear",
line = list(color = "blue", width = 2)
) %>%
layout(
title = "Dispersão: Distância ao Centro vs. Preço",
xaxis = list(title = "Distância ao Centro (km)"),
yaxis = list(title = "Preço (AUD)", tickformat = ",.0f")
)Outra análise que é possível extrair é a comparação entre preços por tipo de imóvel. Essa análise permite compreender quais tipos de imóveis são mais valorizados. É importante notar que dessa análise também é possível extrair por exemplo: qual tipo de imóvel é mais valorizado por região? Esse tipo de pergunta pode ajudar a compreender como estão dispostos os imóveis dentro do território geográfico da cidade.
#Preço por tipo de imóvel
preco_por_tipo <- house_market %>%
group_by(Type) %>%
summarise(
media_preco = mean(Price, na.rm = TRUE),
mediana_preco = median(Price, na.rm = TRUE),
n = n()
) %>%
arrange(desc(media_preco))#Plotagem do gráfico de barras que demonstra essa relação
plot_ly(preco_por_tipo,
x = ~reorder(Type, media_preco),
y = ~media_preco,
type = 'bar',
marker = list(color = '#2c7fb8'),
text = ~paste0("Média: $", formatC(media_preco, format = "f", big.mark = ",", digits = 0)),
hoverinfo = "text"
) %>%
layout(
title = "Preço Médio por Tipo de Imóvel",
xaxis = list(title = "Tipo de Imóvel"),
yaxis = list(title = "Preço Médio (AUD)", tickformat = ",.0f"),
margin = list(b = 80)
)Esta análise buscou compreender a dinâmica do mercado imobiliário de Melbourne entre 2016 e 2018, investigando padrões de valorização regional, relação entre localização e preços, e comportamento diferencial por tipo de propriedade. O estudo focou em identificar tendências temporais, disparidades regionais e fatores correlacionados com a valorização imobiliária.
A declaração de problema central desta análise foi compreender o funcionamento dos preços no mercado imobiliário de Melbourne, com foco na identificação de fatores-chave que impulsionam a valorização ou desvalorização e o desempenho regional. Para abordar essa questão, foram empregados os seguintes dados e metodologia:
Tendência de valorização: O mercado imobiliário de Melbourne, de forma geral, exibiu uma tendência de valorização no período de 2016 a 2018, com o preço médio crescendo, apesar de algumas flutuações. O volume de vendas também acompanhou essa tendência, com picos e vales que podem indicar sazonalidade ou reações a eventos de mercado.
Disparidades regionais: A análise de valorização/desvalorização regional demonstrou uma heterogeneidade notável. Enquanto a região Southern Metropolitan liderou a valorização (90.81%), a Eastern Victoria teve desempenho negativo (-17.67%), explicitando essa heterogeneidade.
Correlação inesperada: A correlação calculada entre a distância do imóvel ao centro e o preço foi de -0.23, mais fraca do que o imaginado. Indicando uma relação inversa fraca: imóveis mais próximos do centro tendem a ter preços mais altos, e vice-versa. No entanto, a fraqueza da correlação sugere que, embora a localização seja um fator, ela não é o único ou o mais forte determinante do preço, e outros fatores desempenham um papel significativo.
Hierarquia de Preços por Tipo de Imóvel: É possível observar uma clara hierarquia de preços, onde casas apresentam o preço médio mais elevado (AUD 1.230.542), seguidas por Townhouses (AUD 905.321) e Apartamentos (AUD 588.723). Isso sugere uma maior demanda ou valor percebido para imóveis maiores e mais independentes.
Para Investidores: As regiões com alta valorização (e.g., Southern Metropolitan, Eastern Metropolitan) representam oportunidades de investimento com maior potencial de retorno. A preferência por casas também pode guiar decisões de portfólio. Regiões em desvalorização, como Eastern Victoria, podem ser consideradas para investimentos de longo prazo com potencial de recuperação, mas com maior risco.
Para Compradores de Imóveis: Compradores com orçamentos mais limitados podem encontrar opções mais acessíveis em apartamentos ou em regiões com menor valorização. Aqueles que priorizam a proximidade ao centro devem estar preparados para preços mais elevados, mas devem considerar que a distância não é o único fator de preço. A análise regional pode ajudar a identificar áreas que se encaixam em seus objetivos de valorização e orçamento.
Para Vendedores de Imóveis: Vendedores em regiões de alta valorização podem ter uma vantagem no mercado, podendo obter preços mais favoráveis. Em regiões de desvalorização, pode ser necessário ajustar as expectativas de preço e considerar estratégias de venda diferenciadas.
Para Desenvolvedores Imobiliários: A forte demanda por casas sugere que o desenvolvimento de novos projetos nesses segmentos pode ser lucrativo. A identificação de regiões com valorização consistente pode orientar a escolha de locais para novos empreendimentos, maximizando o retorno sobre o investimento.
Esta análise, embora informativa, possui algumas limitações que podem ser abordadas em estudos futuros para aprimorar a compreensão do mercado imobiliário:
Período de Dados Limitado: A análise abrangeu dados de 2016 a 2018. O mercado imobiliário é dinâmico e pode ter sofrido mudanças significativas desde então devido a fatores econômicos, sociais e políticos.
Fatores Explicativos Adicionais: A análise focou em tipo de imóvel, distância ao centro e região. No entanto, o preço de um imóvel é influenciado por uma vasta gama de variáveis, como número de quartos, banheiros, tamanho do terreno, idade do imóvel, quantidade de vagas de garagem etc.
Sensível a outliers: O uso do preço médio pode ser sensível a valores extremos (outliers).
Causalidade vs correlação: A análise identificou correlações e tendências, mas não estabeleceu relações de causalidade.