La variabile “city” è una variabile qualitativa su scala nominale,mentre tutte le altre sono variabili quantitative. In particolare, sono tutte variabili discrete, a parte “months_inventory”, che è continua.
Le variabili “city”, “year” e “month” sono variabili che vengono utilizzate principalmente come dimensioni di raggruppamento e temporali per l’analisi delle altre variabili. Nello specifico, le città sono sottoinsiemi di interesse in corrispondenza dei quali suddividere i dati, mentre anni e mesi danno un’idea dell’evoluzione temporale.
Per tutte le altre variabili è possibile calcolare indici di posizione, di variabilità e forma. Tra gli indici di variabilità, l’indice di Gini può essere valutato rispetto alla distribuzione rispetto alla variabile “city” o in base a delle classi create ad hoc a partire dalle altre già presenti.
L’evoluzione temporale si può rappresentare tramite una line chart, come faremo per l’andamento delle vendite. Se, però, si vuole porre l’accento sul confronto tra le varie città, può essere una buona idea sfruttare i grafici a barre. Ovviamente la distribuzione dei valori di una determinata variabile sarà raffigurata tramite boxplot.
texas <- read.csv('realestate_texas.csv', sep = ',')
attach(texas)
variables <- texas[, c("sales", "volume", "median_price",
"listings", "months_inventory")]
ind.pos <- data.frame(
Min = sapply(sapply(variables, min), round, digits=2),
Primo_Quart = sapply(sapply(variables, quantile, probs=0.25), round, digits=2),
Mediana = sapply(sapply(variables, median), round, digits=2),
Media = sapply(sapply(variables, mean), round, digits=2),
Terzo_Quart = sapply(sapply(variables, quantile, probs=0.75), round, digits=2),
Max = sapply(sapply(variables, max), round, digits=2)
)
knitr::kable(ind.pos)
| Min | Primo_Quart | Mediana | Media | Terzo_Quart | Max | |
|---|---|---|---|---|---|---|
| sales | 79.00 | 127.00 | 175.50 | 192.29 | 247.00 | 423.00 |
| volume | 8.17 | 17.66 | 27.06 | 31.01 | 40.89 | 83.55 |
| median_price | 73800.00 | 117300.00 | 134500.00 | 132665.42 | 150050.00 | 180000.00 |
| listings | 743.00 | 1026.50 | 1618.50 | 1738.02 | 2056.00 | 3296.00 |
| months_inventory | 3.40 | 7.80 | 8.95 | 9.19 | 10.95 | 14.90 |
CV<-function(x){
return(sd(x)/mean(x)*100)
}
ind.var <- data.frame(
Deviazione_standard = sapply(sapply(variables, sd),round, digits=2),
Coeff.variazione = sapply(sapply(variables, CV),round, digits=2)
)
knitr::kable(ind.var)
| Deviazione_standard | Coeff.variazione | |
|---|---|---|
| sales | 79.65 | 41.42 |
| volume | 16.65 | 53.71 |
| median_price | 22662.15 | 17.08 |
| listings | 752.71 | 43.31 |
| months_inventory | 2.30 | 25.06 |
library(moments)
correct_kurt <- function(x){
return(kurtosis(x)-3)
}
ind.for <- data.frame(
Fisher_Index = sapply(sapply(variables, skewness), round, digits=3),
Curtosi = sapply(sapply(variables, correct_kurt), round, digits=3)
)
knitr::kable(ind.for)
| Fisher_Index | Curtosi | |
|---|---|---|
| sales | 0.718 | -0.313 |
| volume | 0.885 | 0.177 |
| median_price | -0.365 | -0.623 |
| listings | 0.649 | -0.792 |
| months_inventory | 0.041 | -0.174 |
Guardando i dati ottenuti, possiamo fare una serie di considerazioni.
Le variabili median price e months inventory hanno media e mediana molto simili, il che ci fa pensare che le loro distribuzioni siano particolarmente simmetriche. Dando uno sguardo agli indici di forma, possiamo vedere che questo è effettivamente il caso, specialmente per months inventory.
Il coefficiente di variazione ci permette di confrontare i livelli di dispersione relativa delle varie variabili. Possiamo quindi affermare che volume è la variabile che presenta la maggiore variabilità relativa, mentre median_price è quella che presenta la minore variabilità relativa.
Tutte le variabili tranne median price hanno distribuzione asimmetrica positiva, come possiamo vedere dal segno dell’indice di Fisher. Per quanto riguarda lo schiacciamento dei dati, la distribuzione di volume è leptocurtica, mentre tutte le altre sono platicurtiche.
La variabile con la più alta variabilità è la variabile “volume”, perché ha il coefficiente di variazione più alto. Sempre “volume” è anche la variabile più asimmetrica, con asimmetria positiva, dal momento che il valore assoluto del suo indice di Fisher è il più alto.
Suddividiamo la variabile “sales” in classi. Scegliamo il numero di classi utlizzando la regola di Sturges:
N <- round(1+log(length(sales), base = 2))
N
## [1] 9
Quindi il numero di classi è uguale a 9.
table(texas["sales_cl"])
In basso ecco una tabella con frequenze assolute e relative:
freq_ass<-table(sales_cl)
freq_rel<-round(table(sales_cl)/length(sales), digits = 3)
distr_frq_sales_cl<-cbind(freq_ass,freq_rel)
distr_frq_sales_cl
## freq_ass freq_rel
## (78,116] 45 0.188
## (116,155] 50 0.208
## (155,193] 46 0.192
## (193,231] 27 0.112
## (231,270] 23 0.096
## (270,308] 26 0.108
## (308,346] 10 0.042
## (346,385] 9 0.038
## (385,423] 4 0.017
Rappresentiamo ora per maggior chiarezza le frequenze assolute con un grafico a barre.
ggplot(data=texas)+
geom_bar(aes(x=sales_cl),
stat='count',
col='black',
fill='blue')+
labs(title = 'Distribuzione delle classi numero vendite mensili',
x='Classi di vendita',
y='Frequenze assolute')+
theme_classic()
gini.index<-function(x){
ni=table(x)
fi=ni/length(x)
fi2=fi^2
J=length(table(x))
gini=1-sum(fi2)
gini.norm=gini/((J-1)/J)
return(gini.norm)
}
paste("L'indice di Gini è", round(gini.index(sales_cl), digits = 3))
## [1] "L'indice di Gini è 0.954"
L’indice di eterogeneità è molto alto, indicando una distribuzione relativamente equa del numero di vendite tra le varie classi.
“Qual è la probabilità che, presa una riga a caso di questo dataset, essa riporti la città “Beaumont”?”
C’è una riga col nome di una delle quattro città per ogni mese degli anni dal 2010 al 2014. Quindi c’è lo stesso numero di righe per ogni città. Di conseguenza, la probabilità è 1/4.
“E la probabilità che riporti il mese di Luglio?”
Il mese di luglio è presente una volta per ogni anno, ognuno dei quali contiene 12 mesi, perciò la probabilità è di 1/12.
“E la probabilità che riporti il mese di dicembre 2012?”
Per dicembre 2012 ci sono quattro osservazioni, una per ciascuna città, su un totale di 240 righe. La probabilità è quindi 4/240=1/60.
Creiamo una nuova variabile che rappresenti il prezzo medio degli immobili dividendo il volume totale delle vendite per il numero delle vendite: “mean_price”=volume”/“sales”. Poi misuriamo l’efficacia degli annunci di vendita introducendo una variabile che fornisca il numero di vendite per ogni annuncio pubblicato: “efficacy”=“sales”/“listings”.
Per poter commentare e analizzare queste nuove variabili, ci chiediamo ad esempio, come variano i loro valori medi tra le varie città.
texas %>%
group_by(city) %>%
summarise(
mean_price = round(mean(mean_price)),
efficacy = mean(listings_efficacy)
)
## # A tibble: 4 × 3
## city mean_price efficacy
## <chr> <dbl> <dbl>
## 1 Beaumont 146640 0.106
## 2 Bryan-College Station 183534 0.147
## 3 Tyler 167677 0.0935
## 4 Wichita Falls 119430 0.128
Dalla tabella risulta che nell’arco degli anni dal 2010 al 2014 i prezzi più alti e la maggiore efficacia degli annunci sono stati a Bryan-College Station, mentre i prezzi più bassi a Wichita Falls e l’efficacia peggiore a Tyler.
Calcoliamo ora i valori medi delle variabili nei 5 anni presi in considerazione.
texas %>%
group_by(year) %>%
summarise(
mean_price = round(mean(mean_price)),
efficacy = mean(listings_efficacy)
)
## # A tibble: 5 × 3
## year mean_price efficacy
## <int> <dbl> <dbl>
## 1 2010 150189 0.0997
## 2 2011 148251 0.0927
## 3 2012 150899 0.110
## 4 2013 158705 0.135
## 5 2014 163559 0.157
Possiamo osservare, quindi, che complessivamente nelle quattro città considerate sia i prezzi medi che l’efficacia degli annunci sembra essere cresciuta nei 5 anni in esame, specialmente nel 2013 e 2014.
Procediamo a usare il pacchetto dplyr per effettuare analisi statistiche condizionate per città, anno e mese. I risultati saranno rappresentati graficamente.
sales_city <- texas %>%
group_by(city)%>%
summarise(media=mean(sales),
dev.standard=sd(sales))
sales_city
## # A tibble: 4 × 3
## city media dev.standard
## <chr> <dbl> <dbl>
## 1 Beaumont 177. 41.5
## 2 Bryan-College Station 206. 85.0
## 3 Tyler 270. 62.0
## 4 Wichita Falls 116. 22.2
ggplot(sales_city, aes(x = city, y = media)) +
geom_col(fill = 'blue') +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
), width = 0.2) +
labs(
x = "Città",
y = "Media delle vendite",
title = "7.1.1 Vendite medie per città"
)
sales_year <- texas %>%
group_by(year)%>%
summarise(media=round(mean(sales)),
dev.standard=sd(sales))
sales_year
## # A tibble: 5 × 3
## year media dev.standard
## <int> <dbl> <dbl>
## 1 2010 169 60.5
## 2 2011 164 63.9
## 3 2012 186 70.9
## 4 2013 212 84.0
## 5 2014 231 95.5
ggplot(sales_year, aes(x = year, y = media)) +
geom_line(col = 'blue') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 2010:2014) +
labs(
x = "Anno",
y = "Media delle vendite",
title = "7.1.2 Vendite medie per anno"
)
sales_month <- texas %>%
group_by(month)%>%
summarise(media=round(mean(sales)),
dev.standard=sd(sales))
sales_month
## # A tibble: 12 × 3
## month media dev.standard
## <int> <dbl> <dbl>
## 1 1 127 43.4
## 2 2 141 51.1
## 3 3 189 59.2
## 4 4 212 65.4
## 5 5 239 83.1
## 6 6 244 95.0
## 7 7 236 96.3
## 8 8 231 79.2
## 9 9 182 72.5
## 10 10 180 75.0
## 11 11 157 55.5
## 12 12 169 60.7
ggplot(sales_month, aes(x = month, y = media)) +
geom_line(col = 'blue') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 1:12) +
labs(
x = "Mese",
y = "Media delle vendite",
title = "7.1.3 Vendite medie per mese"
)
volume_city<-texas %>%
group_by(city)%>%
summarise(media=round(mean(volume)),
dev.standard=sd(volume))
volume_city
## # A tibble: 4 × 3
## city media dev.standard
## <chr> <dbl> <dbl>
## 1 Beaumont 26 6.97
## 2 Bryan-College Station 38 17.2
## 3 Tyler 46 13.1
## 4 Wichita Falls 14 3.24
ggplot(volume_city, aes(x = city, y = media)) +
geom_col(fill = 'darkgreen') +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
), width = 0.2) +
labs(
x = "Città",
y = "Media valori vendite",
title = "7.2.1 Valore medio delle vendite per città"
)
volume_year<-texas %>%
group_by(year)%>%
summarise(media=mean(volume),
dev.standard=sd(volume))
volume_year
## # A tibble: 5 × 3
## year media dev.standard
## <int> <dbl> <dbl>
## 1 2010 25.7 10.8
## 2 2011 25.2 12.2
## 3 2012 29.3 14.5
## 4 2013 35.2 17.9
## 5 2014 39.8 21.2
ggplot(volume_year, aes(x = year, y = media)) +
geom_line(col = 'darkgreen') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 2010:2014) +
labs(
x = "Anno",
y = "Media valori vendite",
title = "7.2.2 Valore medio delle vendite per anno"
)
volume_month<-texas %>%
group_by(month)%>%
summarise(media=mean(volume),
dev.standard=sd(volume))
volume_month
## # A tibble: 12 × 3
## month media dev.standard
## <int> <dbl> <dbl>
## 1 1 19.0 8.37
## 2 2 21.7 10.1
## 3 3 29.4 12.0
## 4 4 33.3 14.5
## 5 5 39.7 19.0
## 6 6 41.3 21.1
## 7 7 39.1 21.4
## 8 8 38.0 18.0
## 9 9 29.6 15.2
## 10 10 29.1 15.1
## 11 11 24.8 11.2
## 12 12 27.1 12.6
ggplot(volume_month, aes(x = month, y = media)) +
geom_line(col = 'darkgreen') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 1:12) +
labs(
x = "Mese",
y = "Media valori vendite",
title = "7.2.3 Valore medio delle vendite per mese"
)
list_city<-texas %>%
group_by(city)%>%
summarise(media=round(mean(listings)),
dev.standard=round(sd(listings)))
list_city
## # A tibble: 4 × 3
## city media dev.standard
## <chr> <dbl> <dbl>
## 1 Beaumont 1679 91
## 2 Bryan-College Station 1458 253
## 3 Tyler 2905 227
## 4 Wichita Falls 910 74
ggplot(list_city, aes(x = city, y = media)) +
geom_col(fill = 'orange') +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
), width = 0.2) +
labs(
x = "Città",
y = "Media degli annunci",
title = "7.3.1 Numero annunci medio per città"
)
list_year<-texas %>%
group_by(year)%>%
summarise(media=round(mean(listings)),
dev.standard=round(sd(listings)))
list_year
## # A tibble: 5 × 3
## year media dev.standard
## <int> <dbl> <dbl>
## 1 2010 1826 785
## 2 2011 1850 780
## 3 2012 1777 738
## 4 2013 1678 744
## 5 2014 1560 707
ggplot(list_year, aes(x = year, y = media)) +
geom_line(col = 'orange') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 2010:2014) +
labs(
x = "Anno",
y = "Media degli annunci",
title = "7.3.2 Numero annunci medio per anno"
)
list_month<-texas %>%
group_by(month)%>%
summarise(media=round(mean(listings)),
dev.standard=round(sd(listings)))
list_month
## # A tibble: 12 × 3
## month media dev.standard
## <int> <dbl> <dbl>
## 1 1 1647 705
## 2 2 1692 711
## 3 3 1757 727
## 4 4 1826 770
## 5 5 1824 790
## 6 6 1833 812
## 7 7 1821 827
## 8 8 1786 816
## 9 9 1749 803
## 10 10 1710 779
## 11 11 1653 741
## 12 12 1558 693
ggplot(list_month, aes(x = month, y = media)) +
geom_line(col = 'orange') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 1:12) +
labs(
x = "Mese",
y = "Media degli annunci",
title = "7.3.3 Numero annunci medio per mese"
)
invent_city<-texas %>%
group_by(city)%>%
summarise(media=mean(months_inventory),
dev.standard=sd(months_inventory))
invent_city
## # A tibble: 4 × 3
## city media dev.standard
## <chr> <dbl> <dbl>
## 1 Beaumont 9.97 1.65
## 2 Bryan-College Station 7.66 2.25
## 3 Tyler 11.3 1.89
## 4 Wichita Falls 7.82 0.781
ggplot(invent_city, aes(x = city, y = media)) +
geom_col(fill = 'purple') +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
), width = 0.2) +
labs(
x = "Città",
y = "Media mesi di inventario",
title = "7.4.1 Media dei mesi di inventario per città"
)
invent_year<-texas %>%
group_by(year)%>%
summarise(media=mean(months_inventory),
dev.standard=sd(months_inventory))
invent_year
## # A tibble: 5 × 3
## year media dev.standard
## <int> <dbl> <dbl>
## 1 2010 9.97 2.08
## 2 2011 10.9 2.07
## 3 2012 9.88 1.61
## 4 2013 8.15 1.69
## 5 2014 7.06 1.75
ggplot(invent_year, aes(x = year, y = media)) +
geom_line(col = 'purple') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 2010:2014) +
labs(
x = "Anno",
y = "Media mesi di inventario",
title = "7.4.2 Media dei mesi di inventario per anno"
)
invent_month<-texas %>%
group_by(month)%>%
summarise(media=mean(months_inventory),
dev.standard=sd(months_inventory))
invent_month
## # A tibble: 12 × 3
## month media dev.standard
## <int> <dbl> <dbl>
## 1 1 8.84 1.97
## 2 2 9.06 1.98
## 3 3 9.40 2.06
## 4 4 9.72 2.24
## 5 5 9.68 2.38
## 6 6 9.70 2.41
## 7 7 9.62 2.50
## 8 8 9.39 2.45
## 9 9 9.18 2.52
## 10 10 8.94 2.44
## 11 11 8.66 2.37
## 12 12 8.12 2.27
ggplot(invent_month, aes(x = month, y = media)) +
geom_line(col = 'purple') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 1:12) +
labs(
x = "Mese",
y = "Media mesi di inventario",
title = "7.4.3 Media dei mesi di inventario per mese"
)
median_city<-texas %>%
group_by(city)%>%
summarise(media=round(mean(median_price)),
dev.standard=round(sd(median_price)))
median_city
## # A tibble: 4 × 3
## city media dev.standard
## <chr> <dbl> <dbl>
## 1 Beaumont 129988 10105
## 2 Bryan-College Station 157488 8852
## 3 Tyler 141442 9337
## 4 Wichita Falls 101743 11320
ggplot(median_city, aes(x = city, y = media)) +
geom_col(fill = 'lightgreen') +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
), width = 0.2) +
labs(
x = "Città",
y = "Media prezzo mediano",
title = "7.5.1 Media prezzo mediano per città"
)
median_year<-texas %>%
group_by(year)%>%
summarise(media=round(mean(median_price)),
dev.standard=round(sd(median_price)))
median_year
## # A tibble: 5 × 3
## year media dev.standard
## <int> <dbl> <dbl>
## 1 2010 130192 21822
## 2 2011 127854 21318
## 3 2012 130077 21432
## 4 2013 135723 21708
## 5 2014 139481 25625
ggplot(median_year, aes(x = year, y = media)) +
geom_line(col = 'lightgreen') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 2010:2014) +
labs(
x = "Anno",
y = "Media prezzo mediano",
title = "7.5.2 Media prezzo mediano per anno"
)
median_month<-texas %>%
group_by(month)%>%
summarise(media=mean(median_price),
dev.standard=round(sd(median_price)))
median_month
## # A tibble: 12 × 3
## month media dev.standard
## <int> <dbl> <dbl>
## 1 1 124250 25151
## 2 2 130075 22823
## 3 3 127415 23442
## 4 4 131490 21458
## 5 5 134485 18796
## 6 6 137620 19231
## 7 7 134750 21945
## 8 8 136675 22488
## 9 9 134040 24344
## 10 10 133480 26358
## 11 11 134305 24691
## 12 12 133400 22810
ggplot(median_month, aes(x = month, y = media)) +
geom_line(col = 'lightgreen') +
geom_point() +
geom_errorbar(
aes(
ymin = media - dev.standard,
ymax = media + dev.standard
),
width = 0.1, col='red'
) +
scale_x_continuous(breaks = 1:12) +
labs(
x = "Mese",
y = "Media prezzo mediano",
title = "7.5.3 Media prezzo mediano per mese"
)
ggplot(data=texas)+
geom_boxplot(aes(x=city, y=median_price), fill='lightblue')+
labs(x='Città', y='Prezzo mediano', title = '8.1 Boxplot del prezzo mediano per città')
texas3 <- data.frame(texas)
texas3$year <- as.character(texas$year)
ggplot(data=texas3)+
geom_boxplot(aes(x=year, y=volume, fill=city))+
labs(x='Anni', y='Totale vendite (in milioni di $)',
title = '8.2 Boxplot del totale vendite per anni e città')
ggplot(data=texas)+
geom_bar(aes(x=month, y=volume,
fill=city),
position = 'stack',
stat='identity',
col='black')+
facet_wrap(year, ncol=2)+
labs(title = '8.3 Totale vendite per mese, anno e città',
x='Mesi',
y='Totale vendite (in milioni di $)')+
scale_x_continuous(breaks=1:12)+
theme_classic()
ggplot(data=texas)+
geom_bar(aes(x=month, y=volume,
fill=city),
position = 'fill',
stat='identity',
col='black')+
facet_wrap(year, ncol=2)+
labs(title = '8.4 Totale vendite normalizzato per mese, anno e città',
x='Mesi',
y='Quota percentuale del totale (in milioni di $)')+
scale_x_continuous(breaks=1:12)+
theme_classic()
texas2 <- data.frame(texas)
texas2$year <- rep(seq(2010+1/24,2014+23/24,1/12),times=4)
texas2$month <- NULL
ggplot(data=texas2)+
geom_line(aes(x=year, y=sales), col='red', lwd=1)+
geom_point(aes(x=year, y=sales), col='red', lwd=3)+
facet_wrap(~city)+
labs(x ="Anni",
y ="Numero di Vendite",
title = "8.5 Andamento delle vendite")+
scale_x_continuous(breaks = seq(2010,2015,1))
## Warning in geom_point(aes(x = year, y = sales), col = "red", lwd = 3): Ignoring
## unknown parameters: `linewidth`
Un dato che emerge immediatamente osservando l’andamento mensile delle vendite nel grafico 7.1.3 è che la maggior parte è concentrata nel periodo tardo primaverile ed estivo, nei mesi da maggio ad agosto. Nel grafico 8.3 possiamo però notare che l’anno 2010 costituisce un’eccezione al trend, siccome il picco si è avuto nei mesi da aprile a giugno. Questo andamento complessivo è particolarmente influenzato dalle due città caratterizzate dai maggiori volumi di vendita, Bryan-College Station e Tyler, la cui dinamica ha quindi un peso maggiore sul dato aggregato. Per quanto riguarda, invece, Beaumont e Wichita Falls, possiamo vedere dal grafico 8.5 che gli andamenti delle vendite sono più irregolari, ma tendenzialmente i mesi da novembre a febbraio sembrano essere quelli con meno vendite anche in questo caso.
Nella sezione 7, i grafici a colonne relativi ai dati medi per le singole città ci mostrano che le variabili sales e volume presentano un andamento simile tra le diverse città: in particolare, i valori più alti sono registrati a Tyler e quelli più bassi a Wichita Falls. I grafici analoghi per le variabili listings e months_inventory presentano invece valori relativamente più bassi per Bryan-College Station. Questo è coerente con quanto osservato nella sezione 6, dove avevamo riscontrato che il rapporto tra sales e listings era il più alto per questa città. Infine, per quanto riguarda la variabile median_price, la città con i valori più elevati è Bryan-College Station.
Osservando i grafici relativi all’andamento annuale delle medie nella sezione 7, notiamo che dal 2011 il numero delle vendite, il valore delle vendite e il prezzo mediano sono in crescita, mentre il numero degli annunci e i mesi di inventario diminuiscono. Tuttavia, va sottolineato che i grafici che rappresentano gli andamenti nel tempo delle diverse variabili presentano generalmente deviazioni standard elevate, a parte quello della variabile months_inventory. Questo indica che, all’interno dei diversi anni e mesi, i valori delle singole città possono differire sensibilmente dalla media complessiva. Di conseguenza, gli andamenti aggregati potrebbero nascondere differenze significative tra le città e sarebbe necessario analizzare più nel dettaglio i singoli mercati per comprendere meglio il fenomeno. Questo è stato fatto per il caso della variabile sales, nel grafico 8.5: le curve mostrano effettivamente un andamento crescente nel periodo considerato, al netto dei cambiamenti stagionali, in Beaumont, Bryan-College Station e Tyler.
Esaminando i grafici della sezione 8 che non abbiamo ancora citato, il grafico 8.1 evidenzia innanzitutto una netta differenza nei livelli dei prezzi mediani tra le quattro città. Bryan-College Station presenta i valori più elevati, seguita da Tyler, Beaumont e infine Wichita Falls. Per quanto riguarda la dispersione, Wichita Falls mostra l’intervallo interquartile più ampio e quindi una maggiore variabilità dei prezzi nella metà centrale delle osservazioni, mentre Bryan-College Station presenta una distribuzione centrale relativamente più concentrata. Sono inoltre presenti tre valori anomali, uno per Beaumont, uno per Wichita Falls e uno per Bryan-College Station, caratterizzati da prezzi mediani particolarmente elevati rispetto alle rispettive distribuzioni.
Il grafico 8.2 evidenzia invece una forte variabilità del valore totale delle vendite, che differisce sensibilmente tra città e anni. In particolare, Bryan-College Station e Tyler presentano in diversi anni intervalli interquartili più ampi, indicando una maggiore dispersione dei valori mensili, mentre Wichita Falls mostra generalmente una variabilità più contenuta. Si osserva inoltre uno spostamento verso valori più elevati negli anni successivi, coerente con la crescita del volume osservata nell’analisi annuale. È presente infine un valore anomalo per Beaumont nel 2012.
Il grafico 8.4, ottenuto normalizzando i valori, permette invece di confrontare la composizione percentuale del valore totale delle vendite tra le diverse città. Si osserva che Tyler e Bryan-College Station rappresentano generalmente le quote maggiori del volume complessivo, mentre Beaumont e soprattutto Wichita Falls contribuiscono in misura minore. Le proporzioni risultano tuttavia abbastanza stabili nel tempo, indicando che il peso relativo delle diverse città sul volume complessivo non varia significativamente nel periodo considerato.
Sulla base dei risultati ottenuti, Texas Realty Insights dovrebbe tenere conto della forte componente stagionale delle vendite nella pianificazione e nell’interpretazione dei dati, evitando di confrontare direttamente periodi appartenenti a stagioni diverse senza considerare questo effetto. Inoltre, le marcate differenze osservate tra i mercati locali suggeriscono di adottare attività di monitoraggio e analisi differenziate per ciascuna città, affiancando agli indicatori aggregati quelli specifici dei singoli mercati.