Caricamento dataset e caricamento librerie
dati <- read.csv("realestate_texas.csv",sep=",",encoding = "utf-8")
str(dati)
## 'data.frame': 240 obs. of 8 variables:
## $ city : chr "Beaumont" "Beaumont" "Beaumont" "Beaumont" ...
## $ year : int 2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 ...
## $ month : int 1 2 3 4 5 6 7 8 9 10 ...
## $ sales : int 83 108 182 200 202 189 164 174 124 150 ...
## $ volume : num 14.2 17.7 28.7 26.8 28.8 ...
## $ median_price : num 163800 138200 122400 123200 123100 ...
## $ listings : int 1533 1586 1689 1708 1771 1803 1857 1830 1829 1779 ...
## $ months_inventory: num 9.5 10 10.6 10.6 10.9 11.1 11.7 11.6 11.7 11.5 ...
library(moments)
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Il file di partenza presenta 8 diverse variabili:
“City”: Variabile qualitativa nominale, identifica categorie di zone geografiche senza alcun ordine implicito.
“Year” e “Month”: Variabili quantitative discrete, ma considerabili anche variabili temporali di tipo scala intervallo o temporale.
“Sales” e “listings” :Variabili quantitative discrete, rappresentano rispettivamente il numero di vendite e il numero di inserzioni attive.
“Volume”, “Median_price” e “Months_inventory”: variabili quantitative continue, misurano rispettivamente il valore complessivo delle operazioni, il prezzo mediano e il tempo medio di permanenza delle proprietà sul mercato.
La dimensione temporale è rappresentata dalle variabili year e month, fondamentali per l’analisi delle dinamiche di mercato.
year consente di studiare l’andamento pluriennale di vendite e prezzi, fornendo informazioni sui trend a lungo termine.
month consente invece un’analisi più dettagliata a livello mensile, utile per identificare stagionalità e fluttuazioni periodiche.
La variabile months_inventory è particolarmente rilevante se analizzata nel tempo e insieme a listings, in quanto riflette l’equilibrio tra domanda e offerta.
Le analisi svolte includono:
city: analisi di segmentazione territoriale e confronto tra aree geografiche.
year e month: analisi di trend pluriennali e stagionalità mensile, con possibile uso di modelli di serie temporali.
sales e listings: analisi della dinamica di mercato in termini di domanda e offerta, confronto tra periodi.
median_price: analisi dei prezzi medi immobiliari, variazioni spaziali e temporali.
months_inventory: valutazione della liquidità del mercato, tempi medi di vendita e equilibrio domanda-offerta.
Possibili visualizzazioni delle variabili:
L’utilizzo di grafici a linee per rappresentare l’andamento temporale di variabili come months_inventory e listings, consentendo il confronto diretto tramite doppie serie.
L’applicazione del line chart anche ad altre variabili temporali #come year, median_price e sales per evidenziare trend o cambiamenti.
L’eventuale calcolo di misure di correlazione per quantificare Le relazioni tra variabili.
attach(dati)
#Per le variabili quantitative discrete sales e listings ha senso calcolare gli indici di posizione, la variabilità e le misure sulla forma.
mean_sales<-mean(sales)
median_sales<-median(sales)
var_sales<-var(sales)
sd_sales<-sd(sales)
skewness_sales<-skewness(sales)
curtosi_sales<-kurtosis(sales)-3
#essendo la media maggiore della mediana si può ipotizzare una distribuzione asimmentrica positiva della variabiale sales. Essendo la deviazione è abbastanza elevata rispetto alla media, si può segnalare una variabilità significativa delle vendite
#Una skewness positiva conferma una distribuzione asimmetrca positiva, mentre un coefficiente di curtosi negativo suggerisce una distribuzione Platicurtica
mean_listings<-mean(listings)
median_listings<-median(listings)
var_listings<-var(listings)
sd_listings<-sd(listings)
skewness_listings<-skewness(listings)
curtosi_listings<-kurtosis(listings)-3
#essendo la media maggiore della mediana si può ipotizzare una distribuzione asimmentrica positiva della variabiale listings, la deviazione è abbastanza elevata rispetto alla media, si può segnalare una variabilità significativa del numero totale di annunci attivi ogni mese.
#Uuna skewness positiva conferma una distribuzione asimmetrca positiva.
#Un coefficiente di curtosi negativo suggerisce una distribuzione Platicurtica
#Per le variabili year e month non ha senso calcolare indici di forma e variabilità
table(month)
## month
## 1 2 3 4 5 6 7 8 9 10 11 12
## 20 20 20 20 20 20 20 20 20 20 20 20
table(year)
## year
## 2010 2011 2012 2013 2014
## 48 48 48 48 48
#ossevando i valori ottenuti per ogni mese e anno è stato considerato lo stesso numero di osservazioni
#Analisi variabili quantitative continue
#1. volume:
mean_volume<-mean(volume)
median_volume<-median(volume)
var_volume<-var(volume)
sd_volume<-sd(volume)
skewness_volume<-skewness(volume)
curtosi_volume<-kurtosis(volume)-3
#essendo skewness positiva la distribuzione è asimmetrica positiva mentre la curtosi positiva suggerisce una distribuzione leptocurtica.
#2. months_inventory
mean_months_inventory<-mean(months_inventory)
median_months_inventory<-median(months_inventory)
var_months_inventory<-var(months_inventory)
sd_months_inventory<-sd(months_inventory)
skewness_months_inventory<-skewness(months_inventory)
curtosi_months_inventory<-kurtosis(months_inventory)-3
#Essendo skewness positiva la distribuzione è asimmetrica positiva.
#Una curtosi negativa suggerisce una distribuzione platicurtica
#3. median_price:
mean_median_price<-mean(median_price)
median_median_price<-median(median_price)
var_median_price<-var(median_price)
sd_median_price<-sd(median_price)
skewness_median_price<-skewness(median_price)
curtosi_median_price<-kurtosis(median_price)-3
#essendo skewness negativa la distribuzione è asimmetrica negativa #mentre la curtosi negativa suggerisce una distribuzione platicurtica
table(city) #nel databese sono state prese lo tsesso numeor di osservazioni #per ogni città
## city
## Beaumont Bryan-College Station Tyler
## 60 60 60
## Wichita Falls
## 60
#calcolo coefficiente di variazione
cv_listings<-sd_listings/mean_listings
cv_median_price<-sd_median_price/mean_median_price
cv_months_inventory<-sd_months_inventory/mean_months_inventory
cv_sales<-sd_sales/mean_sales
cv_volume<-sd_volume/mean_volume
#La variabile volume presenta la più alta variabilità relativa, come evidenziato dal coefficiente di variazione elevato. Questo indica che i valori di volume sono molto dispersi rispetto alla loro media, suggerendo una grande variabilità nella dimensione finanziaria delle operazioni immobiliari nel dataset.
#La stessa variabile volume mostra anche la distribuzione più asimmetrica, con la skewness positiva più alta in valore assoluto.Ciò indica che i dati sono inclinati verso valori elevati (coda a destra), il che potrebbe riflettere la presenza di alcune transazioni immobiliari particolarmente rilevanti che influenzano la distribuzione complessiva.
#In sintesi, volume ha sia alta variabilità che una forte asimmetria positiva, elementi che indicano una distribuzione non simmetrica e molto dispersa. Questi risultati suggeriscono la necessità di ulteriori analisi, come la considerazione di trasformazioni o l’analisi di eventuali outlier, per meglio comprendere la natura della variabilità.
#suddivisione in intervalli della variabile median_price
max_median_price<-max(median_price)
min_median_price<-min(median_price)
breaks <- seq(min(median_price), max(median_price), length.out=6) # 5 classi
median_price_class <- cut(median_price, breaks=breaks, include.lowest=TRUE, right=FALSE)
N <- nrow(dati) # numero osservazioni
ni <- table(median_price_class) # frequenza assoluta
fi <- ni / N # frequenza relativa
Ni <- cumsum(ni) # frequenza assoluta cumulata
Fi <- Ni / N # frequenza relativa cumulata
distr_freq<-as.data.frame(cbind(ni,fi,Ni,Fi))
ggplot(data = distr_freq) +
geom_col(aes(x=rownames(distr_freq), y=fi),
col="red",
fill="darkblue") +
labs(x="Classi di median_price",
y="Frequenze relative",
title="Distribuzione di frequenze di median_price") +
theme_bw() +
theme(axis.text.x = element_text(angle=45, hjust=1)) +
scale_y_continuous(breaks = seq(0,1,0.1))
#Questo andamento delineato dalle frequenze relative rivela una distribuzione di median_price piuttosto sbilanciata: la maggior parte delle case si concentra nelle prime due classi mentre le altre classi hanno frequenze inferiori,con una risalita moderata nell’ultima classe.
#indice di Gini per la variabile median_price
G_medina_price<-(1-sum((fi)^2))/((5-1)/5)
#l'indice di Gini conferma una distribuzione non uniforme.I prezzi mediani si concentrano prevalentemente nei primi due intervalli.
#Questa suddivisione suggerisce che il mercato offre prevalentemente immobili a prezzi contenuti,forse associati a una domanda maggiore per quelle fasce.
#un aumento della frequenza per la quinta classe, rispetto alla terza e alla quarta può dimostrare una nicchia di mercato caratterizzata da clienti con capacità di spesa elevata.
cont_Beaumont <- sum(city == "Beaumont")
cont_july <- sum(month == 7)
cont_december_2012 <- sum(month==12 & year==2012)
probability_beaumont <- cont_Beaumont / N
probability_july <- cont_july/N
probability_december_2012 <- cont_december_2012/N
probability_beaumont
## [1] 0.25
probability_december_2012
## [1] 0.01666667
probability_july
## [1] 0.08333333
dati_nuovo <- dati %>% mutate( prezzo_medio = (volume * 10^6) / sales, efficacia_annunci = sales / listings )
attach(dati_nuovo)
## The following objects are masked from dati:
##
## city, listings, median_price, month, months_inventory, sales,
## volume, year
mean_prezzo_medio <- mean(prezzo_medio)
mean_efficacia_anunci <- mean(efficacia_annunci)
mean_prezzo_medio
## [1] 154320.4
mean_median_price
## [1] 132665.4
mean_efficacia_anunci
## [1] 0.1187449
#Alla base dei risultati ottenuti, confrontando il valore medio della mediana dei prezzi e il valore medio appena calcolato, poso suggerire che ci sono prezzi di immobili che fanno scostare il valore della media dei prezzi, dimontrando che la mediana è più robusta in presenza di valori alti.
#Mentre un valore dello 0.11 della media della variabile efficacia_annunci, mostra che circa il 10% degli annunci viene tradotto in vendite
# step 1: raggruppa dati per city, year, month
summary_stats <- dati_nuovo %>% group_by(city, year, month) %>% summarise(
media_prezzo = mean(prezzo_medio, na.rm = TRUE),# calcola media prezzo medio ponderato per gruppo
sd_prezzo = sd(prezzo_medio, na.rm = TRUE),# calcola deviazione standard del prezzo
media_efficacia = mean(efficacia_annunci, na.rm = TRUE),# media efficacia annunci per gruppo
sd_efficacia = sd(efficacia_annunci, na.rm = TRUE)# deviazione standard efficacia annunci
) %>% ungroup()
## `summarise()` has grouped output by 'city', 'year'. You can override using the
## `.groups` argument.
ggplot(data=summary_stats) +
geom_line(aes(x = month,
y = media_prezzo,
color = city,
group = city)) +
facet_wrap(~ year) +
labs(title = "Andamento del prezzo medio per città e mese",
x = "Mese",
y = "Prezzo medio") +
theme_minimal() +
scale_x_continuous(breaks = seq(0,12,1))
#Obiettivo del grafico: L’obiettivo del grafico è mostrare l’andamento della media del prezzo degli immobili per città e mese nell’arco degli anni considerati.
#Variabili utilizzate: Sono state considerate come variabili la media del prezzo, la suddivisione per città, anno e mese. Al fine di #cercare di osservare dei trand o dei pattern ricorrenti
#Trend generale della media prezzo: #La media del prezzo degli immobili mostra un andamento altalenante nel corso degli anni, #con fasi di crescita e fasi di diminuzione che si alternano. Alcuni anni evidenziano aumenti più marcati, #mentre in altri la variazione risulta più contenuta.
#Differenze tra le città: #In tutti gli anni, i valori medi degli immobili a Bryan-College Station risultano i più elevati, #seguiti in ordine decrescente da Tyler, Beaumont e infine Wichita Falls, che presenta i valori medi più bassi. #Per la prima città, si osserva un trend generalmente positivo ogni anno, sebbene caratterizzato #da fluttuazioni periodiche. In particolare, tra il 2011 e il 2014 si registra una diminuzione dei #prezzi all’inizio di ogni anno, seguita da un incremento nei mesi successivi. #Per la seconda città (Tyler), non emerge un trend chiaro nei primi quattro anni, in quanto #i prezzi mostrano continui sali e scendi senza una direzione definita. #La terza città (Beaumont) presenta un prezzo mediamente costante nel tempo, pur con oscillazioni periodiche; si segnala #però un picco significativo nel 2011, tra agosto e settembre, seguito da un calo. #Infine, per l’ultima città (Wichita Falls) il trend è prevalentemente stabile, con picchi ricorrenti che si #manifestano intorno a giugno o luglio di ogni anno.
#Distribuzione stagionale: #Nell’analisi mensile, per tutte le città e in ciascun anno, si osservano valori massimi e minimi #nella media del prezzo, sebbene questi picchi si verifichino in mesi differenti a seconda della città. #Questo evidenzia una certa stagionalità nel mercato immobiliare, che può variare territorialmente.
#Osservazioni particolari: #Nel solo anno 2014 si nota un trend positivo del valore medio degli immobili per tutte le città, #ad eccezione di Wichita Falls, dove i prezzi medi rimangono pressoché costanti. #È possibile osservare che la variabilità della media prezzo tende a differire tra anni e città; in #alcuni periodi si verificano oscillazioni più accentuate, mentre in altri i valori risultano più stabili. #Questi elementi possono indicare dinamiche di mercato o influenze esterne variabili nel tempo.
ggplot(data=summary_stats) +
geom_line(aes(x = month,
y = media_efficacia,
color = city,
group = city)) +
facet_wrap(~ year) +
labs(
title = "Andamento del'efficacia degli annunci per città e mese",
x = "Mese",
y = "media efficacia") +
theme_minimal() +
scale_x_continuous(breaks = seq(0,12,1))
#Obiettivo del grafico:
#L’obiettivo del grafico è mostrare l’andamento dell'efficacia media degli annunci calcolata come sales/listings, verificare quali politiche di publicità sono state più efficaci
#Variabili utilizzate:
#Come variabile principale è stata considerata la media del valore che sintetizza l’efficacia degli annunci immobiliari, suddivisa per città, anno e mese, al fine di individuare trend o pattern ricorrenti.
#Trend generale della media dell'eficacia:
#I grafici mostrano un andamento altalenante nel corso degli anni, con fasi di crescita e di diminuzione che si alternano.
#In alcuni anni si evidenziano aumenti più marcati, mentre in altri le variazioni risultano più contenute.
#Complessivamente, il valore medio dell’efficacia si mantiene abbastanza costante nel tempo, ad eccezione degli annunci per gli immobili di Bryan-College Station, dove si osserva un significativo incremento con un picco raggiunto nel 2014.
#Differenze tra le città:
#Si può osservare che per la città di Bryan-College Station l’efficacia degli annunci immobiliari cresce con un trend nettamente positivo. Partendo dal 2010, il valore dell’efficacia degli annunci era in linea con quello delle altre città. Con l’avanzare degli anni, si possono osservare valori sempre più elevati, con un picco nel mese di luglio del 2014.
#Un’altra informazione interessante è che, in tutti gli anni considerati, il grafico mostra un massimo ricorrente intorno al mese di luglio.
#Per la città di Tyler, il valore medio dell’efficacia è generalmente costante nel tempo e risulta più basso rispetto alle altre città. Tuttavia, si evidenzia un incremento nel 2014, quando l’efficacia raggiunge livelli simili a quelli delle altre città, fatta eccezione per Bryan-College Station.
#Per la città di Beaumont, il valore medio dell’efficacia degli annunci rimane costante e piuttosto basso nel corso degli anni, senza evidenziare particolari variazioni o picchi. Questo livello di stabilità contrasta con le dinamiche osservate in altre città, dove si registrano fluttuazioni più marcate.
#Infine, Wichita Falls mostra valori mediamente più elevati nei primi tre anni rispetto alle altre città. Successivamente, questi valori si mantengono costanti senza aumenti significativi, ad eccezione del 2014, quando si registra un leggero calo. Si osserva un picco interessante ad Aprile 2010 allo stesso livello del massimo raggiunto da Bryan-College Station nel 2010.
#Distribuzione stagionale:
#Analizzando la distribuzione stagionale dell’efficacia degli annunci immobiliari, si osservano comportamenti differenti tra le città.
#In particolare, Bryan-College Station presenta picchi ricorrenti intorno al mese di luglio in ogni anno considerato, evidenziando una stagionalità molto marcata.
#Wichita Falls mostra una certa variabilità con sali e scendi nell’efficacia nel corso dell’anno, soprattutto negli anni 2010, 2013 e 2014, sebbene meno pronunciati rispetto a Bryan-College Station,fatta eccezione per il 2010.
#Le altre città, invece, presentano una tendenza più stabile, senza evidenti picchi stagionali.
#Osservazioni particolari:
#Le analisi evidenziano differenze significative tra le città prese in esame.
#Bryan-College Station mostra un trend di crescita dell’efficacia degli annunci con un picco ricorrente #nel mese di luglio, segno di una forte stagionalità.
#Tyler e Beaumont presentano invece una maggiore stabilità dei valori nel tempo, anche se nel 2014 Tyler registra un aumento che porta i suoi valori vicino a quelli delle altre città.
#Wichita Falls si caratterizza per valori elevati nei primi anni, seguiti da una stabilità con un lieve calo nel 2014.
#Complessivamente, le differenze osservate riflettono dinamiche di mercato diverse con stagionalità e tendenze temporali differenti.
ggplot(data = dati, aes(x = city, y = median_price)) +
geom_boxplot(fill = "lightblue",
color = "darkblue") +
labs(title = "Distribuzione del prezzo mediano per città",
x = "Città",
y = "Prezzo Mediano") +
theme_minimal()
#Il boxplot confronta la distribuzione del prezzo mediano degli immobili nelle diverse città considerate.
#Bryan-College Station presenta la mediana più alta, seguita da Tyler, Beaumont e Wichita Falls.
#La dispersione dei prezzi è maggiore a Wichita Falls, evidenziata da una scatola più ampia e dalla presenza di alcuni outlier, mentre Bryan-College Station mostra una distribuzione più compatta e omogenea. #Queste differenze probabilmente riflettono diversi mercati immobiliari e differenti livelli socio-economici tra le città.
dati$month <- factor(dati$month,
levels = c(1:12),
labels = c("gen","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"))
ggplot(dati, aes(x = city, y = sales, fill = factor(month))) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Valore totale delle vendite per città e mese",
x = "Città",
y = "Valore Totale Vendite", fill = "Mese") +
theme_minimal()
#Il grafico a barre mostra il valore totale delle vendite immobiliari distribuito per città e mese.
#Tyler presenta globalmente vendite più elevate rispetto alle altre città.
#In tutte le città si osserva un picco nelle vendite durante i mesi estivi, in particolare a luglio.
#Bryan-College Station è la città con maggiore variabilità, mostrando un picco nei mesi estivi e una diminuzione nei mesi invernali.
#Le altre città mostrano una distribuzione di vendite più costante nel corso dell’anno, con differenze meno marcate tra stagioni.
#Questi dati evidenziano una stagionalità marcata nelle vendite immobiliari, con differenze territoriali che possono riflettere dinamiche di mercato locali.
ggplot(data = dati, aes(x = city, y = volume,fill = factor(year))) +
geom_boxplot() +
labs(
title = "Distribuzione del valore totale delle vendite per città e anno",
x = "Città",
y = "Valore Totale Vendite",
fill="Anno") +
theme_minimal()
#Il boxplot confronta la distribuzione del valore totale delle vendite, degli immobili nelle diverse città considerate.
#Tyler presenta la mediana più alta per tutti gli anni presi in considerazione, seguita da Bryan-College Station,
#Beaumont e Wichita Falls.
#La dispersione dei valori è maggiore a Bryan-College Station, evidenziata da una scatola più ampia e dalla presenza di alcuni outlier, mentre Wichita Falls mostra una distribuzione più compatta e omogenea.
#Analizzando le città di Beaumont, Bryan-College Station e Tyler, si nota che dal 2013 il valore totale delle vendite è aumentato progressivamente ogni anno.
#In particolare, Tyler ha mostrato una crescita costante dal 2011, raggiungendo il massimo valore mediano nel 2014.
#Al contrario, Wichita Falls ha avuto un comportamento diverso, con il valore mediano relativamente costante negli anni e i livelli più bassi rispetto alle altre città.
ggplot(dati, aes(x = month, y = sales, fill = city)) +
geom_bar(stat = "identity", position = "stack") +
labs(title = "Totale vendite per mese e città",
x = "Mese",
y = "Valore totale vendite",
fill = "Città") +
theme_minimal()
ggplot(dati, aes(x = month, y = sales, fill = city)) +
geom_bar(stat = "identity", position = "fill") +
labs(
title = "Composizione percentuale delle vendite per mese e città",
x = "Mese",
y = "Proporzione vendite",
fill = "Città") +
theme_minimal()
#Tyler presenta complessivamente vendite più elevate rispetto alle altre città.
#In tutte le località si osserva un picco nelle vendite durante i mesi estivi.
#Bryan-College Station mostra la maggiore variabilità, con un picco pronunciato nei mesi estivi e un calo nei mesi invernali.
#Le altre città invece presentano una distribuzione delle vendite più uniforme nel corso dell’anno, con differenze stagionali meno marcate. #Questi dati evidenziano una stagionalità ben definita nelle transazioni immobiliari, accompagnata da differenze territoriali che possono riflettere le dinamiche specifiche del mercato locale.
ggplot(dati, aes(x = month, y = sales, fill = city)) +
geom_bar(stat = "identity", position = "stack") +
facet_wrap(~ year) +
labs(title = "Totale vendite per mese e città, diviso per anno",
x = "Mese",
y = "Valore totale vendite",
fill = "Città") +
theme_minimal()
#confrontando le vendite totali in ogni citta di ogni anno si può osservare un trend complpessivo per ogni città crescente. L'andamento dell'altezza delle barre nell'anno è a campana, con picco nei mesi estivi, solo nel 2010 #il picco delle vendite è arrivato nei mesi di aprile e maggio.
ggplot(dati, aes(x = month, y = sales, color = city, group = city)) +
geom_line() +
facet_wrap(~ year) +
labs(title = "Totale vendite per mese, città e anno",
x = "Mese",
y = "Valore totale vendite",
color = "Città") +
theme_minimal()
Il mercato immobiliare presenta una distribuzione dei prezzi mediani non uniforme, con una concentrazione prevalente nelle fasce di prezzo più basse e una nicchia di mercato ad alta capacità di spesa.
La mediana si conferma una misura più robusta rispetto alla media per descrivere i prezzi, dato l’effetto degli outlier sui valori medi.
L’andamento medio del prezzo immobiliare e l’efficacia degli annunci variano significativamente nel tempo e tra le diverse città, mostrando trend specifici e stagionalità marcate.
Bryan-College Station si distingue con i prezzi più alti, una crescita positiva dell’efficacia degli annunci e una stagionalità evidente nei mesi estivi, in particolare luglio.
Tyler evidenzia vendite totali più elevate e una crescita costante del valore delle vendite nel tempo.
Le altre città mostrano trend più stabili o variabili localmente, con differenze territoriali legate a mercati e dinamiche socio-economiche distinte.
La stagionalità delle vendite immobiliari è consolidata, con picchi nei mesi estivi generalizzati, ma si manifestano anche variazioni specifiche per singole città e anni.
Sfruttare l’analisi della stagionalità per ottimizzare le campagne di marketing e le strategie di vendita, adattandole alle dinamiche temporali e territoriali.
Investire in strategie pubblicitarie mirate, in particolare nelle città con efficacia degli annunci in crescita come Bryan-College Station.
Tenere conto delle differenze di mercato tra città, personalizzando offerte e promozioni in base al contesto locale.