Analisi delle tendenze del mercato immobiliare in Texas utilizzando dati storici delle vendite, con insight statistici e visuali utili per decisioni strategiche.

library(readxl)
library(ggplot2)
library(pROC)
library(ROCR)
library(dplyr)
library(tidyverse)
library(knitr)
library(moments)

ANALISI DELLE VARIABILI

Il dataset contiene diversi tipi di varibaili:

Nella prima colonna, “city”, rappresenta una variabile nominale. E’ di tipo qualitativo e ci da indicazioni sulla geolocalizzazione della locazione.

I mesi e gli anni indicano variabili temporali ordinarie.

Sales and listings sono varaibili quantitative discrete.

Volume, median_price e months_inventory sono variabili quantitative continue.

Una prima analisi esplorativa include il calcolo della media, devazione standard, mediana, primo e terzo quartile e minimo e massimo.

Le variabili temporali permettono di valutare eventuali cambiamenti di prezzo nel tempo e la stagionalità del mercato.

Per le variabili discrete può essere utile una visualizzazione tramite istogrammie boxplot per verificare andamento dei dati e eventuali outliers.

Sempre per le stesse varibili potrebbe essere utile uno studio di correlazione che valuti ad esempio il rapporto tra il numero di vendite e il numero di inserzioni per capire l’efficacia del mercato.

Per le variabili continue potrebbe essere interessante l’uso di regressione, dopo un’analisi descrittiva che prevede il calcolo di media, mediana etc. per comprendere la centralità/dispersione dei dati.

A differenza di quest’ultime, per le variabili city, years, months ha senso calcolare le distribuzioni di frequenza.

INDICI DI POISZIONE, VARIABILITA’, FORMA

data <- read.csv("C:\\Users\\Trasciati\\Downloads\\realestate_texas.csv")

# variabili quantitative 
numeric_vars <- c("sales", "volume", "median_price", "listings", "months_inventory")

# indici per le variabili quantitative:
# Indici di posizione: Min, Q1, Mediana, Media, Q3, Max
# Indici di variabilità: Deviazione Standard, IQR
# Indici di forma: Skewness, Kurtosis
desc_stats <- data.frame(
  Variable = numeric_vars,
  Min = sapply(data[numeric_vars], function(x) round(min(x, na.rm = TRUE), 2)),
  Q1 = sapply(data[numeric_vars], function(x) round(quantile(x, 0.25, na.rm = TRUE), 2)),
  Median = sapply(data[numeric_vars], function(x) round(median(x, na.rm = TRUE), 2)),
  Mean = sapply(data[numeric_vars], function(x) round(mean(x, na.rm = TRUE), 2)),
  Q3 = sapply(data[numeric_vars], function(x) round(quantile(x, 0.75, na.rm = TRUE), 2)),
  Max = sapply(data[numeric_vars], function(x) round(max(x, na.rm = TRUE), 2)),
  SD = sapply(data[numeric_vars], function(x) round(sd(x, na.rm = TRUE), 2)),
  IQR = sapply(data[numeric_vars], function(x) round(IQR(x, na.rm = TRUE), 2)),
  Skewness = sapply(data[numeric_vars], function(x) round(skewness(x, na.rm = TRUE), 2)),
  Kurtosis = sapply(data[numeric_vars], function(x) round(kurtosis(x, na.rm = TRUE), 2))
)

kable(desc_stats, caption = "Statistiche per variabili quantitative")
Statistiche per variabili quantitative
Variable Min Q1 Median Mean Q3 Max SD IQR Skewness Kurtosis
sales sales 79.00 127.00 175.50 192.29 247.00 423.00 79.65 120.00 0.72 2.69
volume volume 8.17 17.66 27.06 31.01 40.89 83.55 16.65 23.23 0.88 3.18
median_price median_price 73800.00 117300.00 134500.00 132665.42 150050.00 180000.00 22662.15 32750.00 -0.36 2.38
listings listings 743.00 1026.50 1618.50 1738.02 2056.00 3296.00 752.71 1029.50 0.65 2.21
months_inventory months_inventory 3.40 7.80 8.95 9.19 10.95 14.90 2.30 3.15 0.04 2.83
# distribuzioni di frequenza per variabili categoriali e temporali

# Frequenza per city
city_freq <- data %>% 
  group_by(city) %>% 
  summarise(Count = n()) %>% 
  arrange(desc(Count))
kable(city_freq, col.names = c("Città", "Frequenza"), 
      caption = "Distribuzione di frequenza per 'city'")
Distribuzione di frequenza per ‘city’
Città Frequenza
Beaumont 60
Bryan-College Station 60
Tyler 60
Wichita Falls 60
# Frequenza per yeaR
year_freq <- data %>% 
  group_by(year) %>% 
  summarise(Count = n()) %>% 
  arrange(year)
kable(year_freq, col.names = c("Anno", "Frequenza"), 
      caption = "Distribuzione di frequenza per 'year'")
Distribuzione di frequenza per ‘year’
Anno Frequenza
2010 48
2011 48
2012 48
2013 48
2014 48
# Frequenza per month
month_freq <- data %>% 
  group_by(month) %>% 
  summarise(Count = n()) %>% 
  arrange(month)
kable(month_freq, col.names = c("Mese", "Frequenza"), 
      caption = "Distribuzione di frequenza per 'month'")
Distribuzione di frequenza per ‘month’
Mese Frequenza
1 20
2 20
3 20
4 20
5 20
6 20
7 20
8 20
9 20
10 20
11 20
12 20

IDENTIFICAZIONE DELLE VARIABILI CON MAGGIOR VARIABILITAì E ASIMMETRIA

La variabile con più alta variabilità, in termini di IQR (nel precedente blocco di codice) è median_price. Per avere un’altra misura di variabilità si può considerare il coefficiente di varianzione (blocco di codice successivo).

Per quanto riguarda l’asimmetria, come indicato sopra, la variabile volume presenta la skewness più alta (0.88), indicando una distribuzione asimmetrica positivamente. Ciò significa che la coda destra della distribuzione (i valori elevati) è più lunga, suggerendo la presenza di alcuni valori estremi superiori alla mediana.

Di seguito il calcolo dei CV per le variabili qualitative che permette di confrontare la dispersione relativa anche tra variabili con scale di misura diverse.

cv_sales <- round(sd(data$sales, na.rm = TRUE) / mean(data$sales, na.rm = TRUE), 2)
cv_volume <- round(sd(data$volume, na.rm = TRUE) / mean(data$volume, na.rm = TRUE), 2)
cv_median_price <- round(sd(data$median_price, na.rm = TRUE) / mean(data$median_price, na.rm = TRUE), 2)
cv_listings <- round(sd(data$listings, na.rm = TRUE) / mean(data$listings, na.rm = TRUE), 2)
cv_months_inventory <- round(sd(data$months_inventory, na.rm = TRUE) / mean(data$months_inventory, na.rm = TRUE), 2)

cv_values <- data.frame(
  Variable = c("Sales", "Volume", "Median Price", "Listings", "Months Inventory"),
  CV = c(cv_sales, cv_volume, cv_median_price, cv_listings, cv_months_inventory)
)

kable(cv_values, caption = "Coefficiente di Variazione")
Coefficiente di Variazione
Variable CV
Sales 0.41
Volume 0.54
Median Price 0.17
Listings 0.43
Months Inventory 0.25

Il volume ha la maggiore variabilità (CV = 0.54), mentre il prezzo mediano risulta il più stabile (CV = 0.17). Gli altri indicatori (sales, listings e months inventory) mostrano una dispersione moderata.

Divisione in classi e indice di Gini

La variabile median_price è stata suddivisa in 5 classi (da “Basso” a “Alto”).

L’indice di Gini calcolato per median_price da una misura dell’eterogeneità dei prezzi. Un valore vicino a 0 indica una distribuzione molto omogenea (i prezzi sono quasi uguali), mentre valori più elevati indicano una maggiore disuguaglianza nei prezzi.

Nel nostro caso, l’indice di Gini ottenuto equivale a 0.93, per cui esiste una grande eterogeneità e una marcata differenza tra le classi più basse e quelle più alte.

# classi per la variabile median_price
data <- data %>% mutate(
  price_class = cut(median_price, breaks = 5,
                    labels = c("Basso", "Medio-basso", "Medio", "Medio-alto", "Alto"))
)

# distribuzione di frequenze per le classi di prezzo
price_freq <- data %>% group_by(price_class) %>% summarise(Count = n()) %>% arrange(price_class)
kable(price_freq, col.names = c("Classe di Prezzo", "Frequenza"), caption = "Distribuzione di frequenze per median_price")
Distribuzione di frequenze per median_price
Classe di Prezzo Frequenza
Basso 18
Medio-basso 40
Medio 73
Medio-alto 84
Alto 25
# Grafico a barre della distribuzione di frequenze
ggplot(price_freq, aes(x = price_class, y = Count)) +
  geom_bar(stat = "identity", fill = "lightgreen") +
  ggtitle("Distribuzione delle classi di prezzo") +
  xlab("Classe di Prezzo") +
  ylab("Frequenza") +
  theme_minimal()

# Indice di Gini 
gini.index <- function(x) {
  ni <- table(x)          
  fi <- ni / length(x)     # frequenze relative
  fi2 <- fi^2             
  J <- length(ni)          # num  classi 
  
  gini <- 1 - sum(fi2)     # IG normalizzato
  gini.normalizzato <- round(gini / ((J - 1) / J),2)  # Normalizzazione
  
  return(gini.normalizzato)
}

gini_value <- gini.index(data$price_class)
print(gini_value)
## [1] 0.93
kable(data.frame("Indice Gini" = gini_value), caption = "Indice di Gini per le classi di prezzo")
Indice di Gini per le classi di prezzo
Indice.Gini
0.93

Calcolo della probabilità

la probabilità che, presa una riga a caso di questo dataset, questa riporti la città “Beaumont”

la probabilità che riporti il mese di Luglio

la probabilità che riporti il mese di dicembre 2012

n <- nrow(data)

# Probabilità che una riga riporti Beaumont
prob_beaumont <- round(sum(data$city == "Beaumont", na.rm = TRUE) / n, 2)

# Probabilità che una riga riporti luglio
prob_july <- round(sum(data$month == 7, na.rm = TRUE) / n, 2)

# Probabilità che una riga riporti Dicembre 2012 
prob_dec_2012 <- round(sum(data$month == 12 & data$year == 2012, na.rm = TRUE) / n, 2)

probabilities <- data.frame(
  Evento = c("Città Beaumont", "Mese di Luglio", "Dicembre 2012"),
  Probabilita = c(prob_beaumont, prob_july, prob_dec_2012)
)

kable(probabilities, caption = "Probabilità")
Probabilità
Evento Probabilita
Città Beaumont 0.25
Mese di Luglio 0.08
Dicembre 2012 0.02

Creazione delle nuove variabili: prezzo medio (= (volume in milioni) / sales) e efficacia (=sales / listings)

per efficacia intendo a percentuale di annunci che si traducono in una vendita. Un valore più alto indica una maggiore efficienza del processo di vendita. al contrario, se il valore è basso, potrebbe indicare che molti annunci diventano vendite.

Prezzo Medio

Nel nostro caso, le città mostrano differenze evidenti nei prezzi medi. Ad esempio, Bryan-College Station registra prezzi medi più elevati, in particolare dal 2013 in poi, mentre Wichita Falls presenta valori inferiori. La deviazione standard (sd_price) indica che, in generale, la variabilità dei prezzi è moderata, con alcune variazioni tra città e nel corso degli anni.

Efficacia Annunci

mostra come varia la percentuale di annunci che portano a una vendita. In Bryan-College Station, l’efficacia passa dal 10,25% al 23,67% nel corso degli anni, suggerendo un miglioramento sostanziale nel processo di vendita. Al contrario, in altre città come Tyler o Wichita Falls l’efficacia rimane generalmente più bassa o con aumenti meno marciati, indicando che una parte inferiore degli annunci si traduce in vendite.

data <- data %>% mutate(
  avg_price = round((volume * 1e6) / sales, 2),
  effectiveness = round(sales / listings, 2)
)

selected_data <- data %>% select(city, year, avg_price, effectiveness)

kable(selected_data, caption = "Prezzo Medio ed Efficacia degli Annunci per Città e Anno")
Prezzo Medio ed Efficacia degli Annunci per Città e Anno
city year avg_price effectiveness
Beaumont 2010 170626.51 0.05
Beaumont 2010 163796.30 0.07
Beaumont 2010 157697.80 0.11
Beaumont 2010 134095.00 0.12
Beaumont 2010 142737.62 0.11
Beaumont 2010 144015.87 0.10
Beaumont 2010 138451.22 0.09
Beaumont 2010 145040.23 0.10
Beaumont 2010 138975.81 0.07
Beaumont 2010 159360.00 0.08
Beaumont 2010 120713.33 0.09
Beaumont 2010 143479.73 0.09
Beaumont 2011 150000.00 0.06
Beaumont 2011 149879.63 0.06
Beaumont 2011 151938.36 0.08
Beaumont 2011 145102.41 0.09
Beaumont 2011 137650.35 0.08
Beaumont 2011 146101.69 0.10
Beaumont 2011 174723.93 0.09
Beaumont 2011 155756.25 0.09
Beaumont 2011 133133.86 0.07
Beaumont 2011 145574.19 0.09
Beaumont 2011 124911.29 0.07
Beaumont 2011 136291.39 0.09
Beaumont 2012 122690.91 0.07
Beaumont 2012 127496.30 0.08
Beaumont 2012 144908.57 0.10
Beaumont 2012 141795.45 0.10
Beaumont 2012 153091.37 0.11
Beaumont 2012 146132.95 0.10
Beaumont 2012 142752.75 0.10
Beaumont 2012 142871.56 0.13
Beaumont 2012 132153.85 0.11
Beaumont 2012 141709.84 0.12
Beaumont 2012 141395.06 0.10
Beaumont 2012 160712.50 0.10
Beaumont 2013 144836.48 0.10
Beaumont 2013 145300.00 0.09
Beaumont 2013 150300.00 0.11
Beaumont 2013 148651.52 0.12
Beaumont 2013 151544.72 0.15
Beaumont 2013 156357.76 0.14
Beaumont 2013 149601.94 0.12
Beaumont 2013 153948.72 0.16
Beaumont 2013 161309.86 0.13
Beaumont 2013 136627.66 0.11
Beaumont 2013 148988.70 0.11
Beaumont 2013 153481.13 0.14
Beaumont 2014 122141.89 0.09
Beaumont 2014 146043.01 0.11
Beaumont 2014 144747.25 0.12
Beaumont 2014 145100.96 0.13
Beaumont 2014 149345.53 0.15
Beaumont 2014 150350.39 0.15
Beaumont 2014 164438.68 0.13
Beaumont 2014 157217.56 0.16
Beaumont 2014 157745.54 0.15
Beaumont 2014 157396.15 0.17
Beaumont 2014 138472.22 0.12
Beaumont 2014 156712.87 0.13
Bryan-College Station 2010 170235.96 0.07
Bryan-College Station 2010 183981.31 0.07
Bryan-College Station 2010 165437.50 0.11
Bryan-College Station 2010 166055.79 0.12
Bryan-College Station 2010 161453.90 0.17
Bryan-College Station 2010 165919.58 0.18
Bryan-College Station 2010 162820.11 0.11
Bryan-College Station 2010 173760.20 0.12
Bryan-College Station 2010 188385.25 0.08
Bryan-College Station 2010 175680.00 0.07
Bryan-College Station 2010 201000.00 0.07
Bryan-College Station 2010 180492.31 0.09
Bryan-College Station 2011 162148.94 0.06
Bryan-College Station 2011 159653.47 0.06
Bryan-College Station 2011 165993.83 0.09
Bryan-College Station 2011 170344.09 0.10
Bryan-College Station 2011 169352.94 0.13
Bryan-College Station 2011 168225.35 0.16
Bryan-College Station 2011 175987.70 0.15
Bryan-College Station 2011 161566.33 0.12
Bryan-College Station 2011 182564.89 0.09
Bryan-College Station 2011 188894.74 0.08
Bryan-College Station 2011 195387.10 0.09
Bryan-College Station 2011 184148.15 0.10
Bryan-College Station 2012 179434.78 0.08
Bryan-College Station 2012 159588.71 0.08
Bryan-College Station 2012 178818.79 0.08
Bryan-College Station 2012 183082.90 0.11
Bryan-College Station 2012 175904.76 0.16
Bryan-College Station 2012 171836.18 0.17
Bryan-College Station 2012 181260.27 0.17
Bryan-College Station 2012 187324.32 0.19
Bryan-College Station 2012 190832.21 0.10
Bryan-College Station 2012 191797.55 0.11
Bryan-College Station 2012 181647.80 0.11
Bryan-College Station 2012 170798.51 0.09
Bryan-College Station 2013 191212.77 0.09
Bryan-College Station 2013 151816.00 0.08
Bryan-College Station 2013 181064.17 0.11
Bryan-College Station 2013 191220.97 0.16
Bryan-College Station 2013 199885.63 0.22
Bryan-College Station 2013 195078.43 0.24
Bryan-College Station 2013 189343.28 0.29
Bryan-College Station 2013 194387.20 0.24
Bryan-College Station 2013 189354.84 0.15
Bryan-College Station 2013 200085.37 0.14
Bryan-College Station 2013 179240.96 0.15
Bryan-College Station 2013 185100.00 0.18
Bryan-College Station 2014 193796.05 0.13
Bryan-College Station 2014 194888.89 0.14
Bryan-College Station 2014 183287.27 0.22
Bryan-College Station 2014 199937.29 0.24
Bryan-College Station 2014 202424.93 0.29
Bryan-College Station 2014 206851.46 0.33
Bryan-College Station 2014 207312.66 0.39
Bryan-College Station 2014 203486.58 0.29
Bryan-College Station 2014 207941.18 0.20
Bryan-College Station 2014 213233.94 0.21
Bryan-College Station 2014 206526.63 0.17
Bryan-College Station 2014 212765.00 0.23
Tyler 2010 159293.75 0.06
Tyler 2010 166513.81 0.07
Tyler 2010 143464.00 0.09
Tyler 2010 157955.70 0.10
Tyler 2010 171790.78 0.09
Tyler 2010 169187.02 0.08
Tyler 2010 160509.80 0.08
Tyler 2010 166962.18 0.07
Tyler 2010 146068.18 0.07
Tyler 2010 158846.53 0.06
Tyler 2010 157490.32 0.05
Tyler 2010 156368.42 0.07
Tyler 2011 147202.80 0.05
Tyler 2011 156464.09 0.06
Tyler 2011 162029.05 0.08
Tyler 2011 160051.38 0.08
Tyler 2011 172557.20 0.08
Tyler 2011 167153.35 0.10
Tyler 2011 164892.09 0.09
Tyler 2011 167294.92 0.09
Tyler 2011 158461.24 0.08
Tyler 2011 152726.87 0.07
Tyler 2011 170168.27 0.07
Tyler 2011 143974.75 0.07
Tyler 2012 150213.02 0.06
Tyler 2012 154693.33 0.08
Tyler 2012 162442.80 0.09
Tyler 2012 150043.48 0.09
Tyler 2012 184083.04 0.10
Tyler 2012 185142.38 0.10
Tyler 2012 178223.60 0.10
Tyler 2012 169318.61 0.10
Tyler 2012 172530.25 0.10
Tyler 2012 161577.85 0.10
Tyler 2012 160157.14 0.07
Tyler 2012 157970.09 0.09
Tyler 2013 162857.87 0.07
Tyler 2013 170515.42 0.09
Tyler 2013 165694.63 0.11
Tyler 2013 178574.39 0.10
Tyler 2013 183969.33 0.11
Tyler 2013 187611.94 0.11
Tyler 2013 170856.37 0.12
Tyler 2013 171327.73 0.12
Tyler 2013 178045.30 0.10
Tyler 2013 189775.74 0.10
Tyler 2013 168316.21 0.09
Tyler 2013 166476.99 0.10
Tyler 2014 155109.24 0.09
Tyler 2014 174397.54 0.09
Tyler 2014 173574.47 0.10
Tyler 2014 168188.85 0.12
Tyler 2014 181157.22 0.14
Tyler 2014 191049.65 0.15
Tyler 2014 179851.75 0.13
Tyler 2014 193786.74 0.12
Tyler 2014 190426.59 0.13
Tyler 2014 177008.13 0.14
Tyler 2014 174380.00 0.12
Tyler 2014 183831.33 0.15
Wichita Falls 2010 100573.03 0.10
Wichita Falls 2010 103098.90 0.10
Wichita Falls 2010 123755.10 0.16
Wichita Falls 2010 118395.21 0.18
Wichita Falls 2010 126551.52 0.18
Wichita Falls 2010 148775.19 0.13
Wichita Falls 2010 118798.08 0.10
Wichita Falls 2010 117884.62 0.13
Wichita Falls 2010 124810.61 0.13
Wichita Falls 2010 120398.23 0.11
Wichita Falls 2010 111793.81 0.10
Wichita Falls 2010 125555.56 0.12
Wichita Falls 2011 102075.00 0.08
Wichita Falls 2011 110721.52 0.08
Wichita Falls 2011 112966.39 0.12
Wichita Falls 2011 126153.15 0.11
Wichita Falls 2011 119398.44 0.12
Wichita Falls 2011 117396.40 0.11
Wichita Falls 2011 107039.37 0.12
Wichita Falls 2011 110192.59 0.13
Wichita Falls 2011 118548.67 0.11
Wichita Falls 2011 97010.20 0.10
Wichita Falls 2011 120172.04 0.10
Wichita Falls 2011 116049.38 0.10
Wichita Falls 2012 97847.62 0.12
Wichita Falls 2012 118855.56 0.10
Wichita Falls 2012 112965.52 0.13
Wichita Falls 2012 111008.00 0.14
Wichita Falls 2012 122068.63 0.11
Wichita Falls 2012 136869.23 0.14
Wichita Falls 2012 122469.70 0.14
Wichita Falls 2012 113845.53 0.13
Wichita Falls 2012 124126.32 0.10
Wichita Falls 2012 99948.45 0.11
Wichita Falls 2012 143915.97 0.14
Wichita Falls 2012 102782.61 0.14
Wichita Falls 2013 122354.43 0.09
Wichita Falls 2013 118019.80 0.12
Wichita Falls 2013 105125.79 0.18
Wichita Falls 2013 109064.52 0.14
Wichita Falls 2013 132354.17 0.16
Wichita Falls 2013 128487.60 0.13
Wichita Falls 2013 123806.67 0.18
Wichita Falls 2013 125409.40 0.18
Wichita Falls 2013 125804.69 0.16
Wichita Falls 2013 126929.82 0.14
Wichita Falls 2013 122191.49 0.12
Wichita Falls 2013 135543.48 0.12
Wichita Falls 2014 108157.30 0.12
Wichita Falls 2014 121086.02 0.12
Wichita Falls 2014 136519.61 0.12
Wichita Falls 2014 124405.59 0.17
Wichita Falls 2014 127378.57 0.16
Wichita Falls 2014 148373.98 0.13
Wichita Falls 2014 124480.00 0.16
Wichita Falls 2014 117729.93 0.14
Wichita Falls 2014 109227.27 0.12
Wichita Falls 2014 123366.07 0.12
Wichita Falls 2014 117791.67 0.11
Wichita Falls 2014 127376.15 0.13

Analisi Condizionata

Per calcolare media e deviazione standard, per ciascuna combinazione di città e anno, il dataset include tutte le osservazioni dei vari mesi (se avessi considerato anche di raggruppare by group non avrei avuto standard devation).

Il primo grafico mostra come il prezzo medio degli immobili cambia nel tempo per ciascuna città.

Bryan-College Station ha il prezzo più alto e un forte aumento nel 2014. Tyler cresce costantemente, ma meno marcatamente. Beaumont mostra una leggera flessione seguita da stabilizzazione. Wichita Falls ha il prezzo più basso e una ripresa dopo il 2011.

Il secondo grafico descrive l’andamento dell’efficacia degli annunci nel tempo e da quindi un’indicazione di come il mercato immobiliare stia migliorando/ peggiorando nella conversione degli annunci in vendite.

In linea con l’interpretazione del primo grafico, Bryan-College Station aumenta notevolmente nell’efficcia degli annunci dal 2012, nonostante fino a quell’anno i livelli di efficacia siano stati inferiori rispetto a Wichita Falls. Quest’ultima, dopo un picco nel 2013, nel 2014 presenta gli stessi livelli ottenuti da Beaumont, mentre Tyler mantiene sempre livelli bassi, in un range tra 0 e 0.125.

data_summary <- data %>%
  group_by(city, year) %>%
  summarise(
    mean_avg_price = mean(avg_price, na.rm = TRUE),
    sd_avg_price = sd(avg_price, na.rm = TRUE),
    mean_effectiveness = mean(effectiveness, na.rm = TRUE),
    sd_effectiveness = sd(effectiveness, na.rm = TRUE)
  )
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
kable(data_summary)
city year mean_avg_price sd_avg_price mean_effectiveness sd_effectiveness
Beaumont 2010 146582.5 13960.175 0.0900000 0.0200000
Beaumont 2011 145921.9 12655.338 0.0808333 0.0131137
Beaumont 2012 141475.9 10345.770 0.1016667 0.0158592
Beaumont 2013 150079.0 6245.121 0.1233333 0.0210339
Beaumont 2014 149142.7 11234.170 0.1341667 0.0227470
Bryan-College Station 2010 174601.8 11964.068 0.1050000 0.0382575
Bryan-College Station 2011 173689.0 11645.001 0.1025000 0.0319446
Bryan-College Station 2012 179360.6 9072.875 0.1208333 0.0403301
Bryan-College Station 2013 187315.8 12931.506 0.1708333 0.0651513
Bryan-College Station 2014 202704.3 8625.370 0.2366667 0.0771461
Tyler 2010 159537.5 8554.899 0.0741667 0.0144338
Tyler 2011 160248.0 8949.978 0.0766667 0.0137069
Tyler 2012 165533.0 12271.145 0.0900000 0.0134840
Tyler 2013 174501.8 8939.224 0.1016667 0.0140346
Tyler 2014 178563.5 10805.819 0.1233333 0.0210339
Wichita Falls 2010 120032.5 12351.215 0.1283333 0.0301008
Wichita Falls 2011 113143.6 8247.223 0.1066667 0.0155700
Wichita Falls 2012 117225.3 13981.540 0.1250000 0.0162369
Wichita Falls 2013 122924.3 8760.489 0.1433333 0.0290245
Wichita Falls 2014 123824.3 10994.396 0.1333333 0.0196946
# prezzo medio per città nel tempo
ggplot(data_summary, aes(x = year, y = mean_avg_price, color = city, group = city)) +
  geom_line(size = 1) + 
  geom_point(size = 2) +
  ggtitle("Andamento del Prezzo Medio degli Immobili per Città") +
  xlab("Anno") +
  ylab("Prezzo Medio") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# annunci per città nel tempo
ggplot(data_summary, aes(x = year, y = mean_effectiveness, color = city, group = city)) +
  geom_line(size = 1) + 
  geom_point(size = 2) +
  ggtitle("Andamento dell'Efficacia degli Annunci per Città") +
  xlab("Anno") +
  ylab("Efficacia (%)") +
  theme_minimal()

Creazione visualizzazioni ggplot

Nel primo grafico si può notare come, in linea con la precedente interpretazione circa il prezzo medio per ogni città, Bryan college station abbia livelli più alti rispetto alle altre città. Un’alta deviazione standard suggerisce un mercato con una grande varietà di prezzi, come nel caso di Tyler, Bryan station e Wichita Falls, mentre una bassa SD indica un mercato più stabile.

Nel secondo grafico, vengono analizzate le vendite per mese e città, avendo dunque una panoramica più specifica rispetto all’andamento in mesi. Bryan College Station mantiene sempre il primato, meno che al mese ottavo, quando viene superato da Tyler. Il picco per entrambe le città si verifica nei mesi centrali dell’anno, mentre le altre due non sembrano seguire un andamento cosi netto, ma si mantenfono più basse e senza particolari alterazioni.

Nel terzo grafico, si può vedere l’andamento delle vendite nel tempo per diverse città dal 2010 al 2014. La variazione stagionale sembra evidente (le vendite sembrano seguire un pattern ricorrente ogni anno, con picchi e cali in determinati period). In particolare, Tyler presenta vendite generalmente più elevate rispetto alle altre città, Bryan-College Station ha picchi molto marcati in alcuni anni, come nel 2013. Beaumont e Wichita Falls mostrano andamenti più stabili ma con tendenze diverse. Sembra esserci un’ampia variabilità nei dati, infatti ci sono molti punti a suggerire una grande dispersione nei valori di vendita tra i mesi dello stesso anno. Come confermavano anche i precedenti grafici, alcune città mostrano una piccola crescita nelle vendite nel tempo, mentre altre restano più stabili o fluttuano di poco.

ggplot(data, aes(x = city, y = median_price, fill = city)) +
  geom_boxplot() +
  labs(title = "Distribuzione del Prezzo Mediano per Città",
       x = "Città",
       y = "Prezzo Mediano") +
  theme_minimal()

ggplot(data, aes(x = month, y = sales, fill = city)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Totale Vendite per Mese e Città",
       x = "Mese",
       y = "Vendite") +
  theme_minimal()

ggplot(data, aes(x = year, y = sales, color = city, group = city)) +
  geom_line(size = 1) +
  geom_point() +
  labs(title = "Andamento delle Vendite nel Tempo",
       x = "Anno",
       y = "Vendite") +
  theme_minimal()

# Conclusioni

L’analisi mostra una chiara stagionalità nelle vendite nel tempop, con picchi nei mesi centrali dell’anno e cali verso la fine, suggerendo probabilmente una domanda immobiliare maggiore in determinati periodi dell’anno.

I cambiamenti riguardano chiaramente anche la zona di interesse: Bryan-College Station registra i prezzi medi più elevati e un aumento consistente nel 2014. Tyler mostra una crescita costante, amnche se meno marcata. Beaumont presenta una lieve flessione seguita da stabilizzazione. Wichita Falls ha i prezzi più bassi, con una leggera ripresa dopo il 2011.

Per quanto riguarda le varabili nello specifico, median_price è quella con maggior varaibilità, dato l’alto IQR e CV = 0.17, suggerendo un importante dispersione dei valori. In termini di asimmetria, volume presenta una skewness pari a 0.88 con valori fortemente alti nella coda detra. L’indice di Gini conferma un’elevata disuguaglianza nella distribuzione dei dati.

In termini di efficienza, Bryan College Station passa da circa il 10% a circa il 25%, ad indicare che il mercato è in miglioramento.

Per fare un resoconto, le persone che si occupano del mercato immobiliare, potrebbero concentrarsi ancora più nei mesi centrli dell’anno per massimizzare le opportunità di vendita. In aprticolare, per bryan college station, il trend suggerisce un mercato in espansione e quindi con margine per incrementare i prezzi. Al contrario per aree come witcha falls potrebbero essere necessari incentivi per far in modo che la domanda salga di nuovo.

Beaumont e Tyler potrebbero considerare di investire la loro attenzione nella qualità degli annunci per aumentare il tasso di conversione in vendite.