1. Analisi Esplorativa dei Dati

Obiettivo: Esplorare e comprendere la struttura del dataset, verificando la corretta importazione dei dati e identificando le variabili disponibili per l’analisi.

In questa fase iniziale, è stato importato ed esplorato il dataset relativo al mercato immobiliare del Texas. Il dataset contiene 240 osservazioni e 8 variabili, che includono dati sia categorici che numerici. Questa esplorazione preliminare ha confermato la presenza di dati coerenti e ha preparato il terreno per le successive analisi.

dati <- read.csv("/Users/matteocalzametre/Desktop/realestate_texas.csv")
dim(dati)
## [1] 240   8
names(dati)
## [1] "city"             "year"             "month"            "sales"           
## [5] "volume"           "median_price"     "listings"         "months_inventory"
head(dati)
##       city year month sales volume median_price listings months_inventory
## 1 Beaumont 2010     1    83 14.162       163800     1533              9.5
## 2 Beaumont 2010     2   108 17.690       138200     1586             10.0
## 3 Beaumont 2010     3   182 28.701       122400     1689             10.6
## 4 Beaumont 2010     4   200 26.819       123200     1708             10.6
## 5 Beaumont 2010     5   202 28.833       123100     1771             10.9
## 6 Beaumont 2010     6   189 27.219       122800     1803             11.1

Nel dataset in esame, le variabili possono essere classificate come quantitative o qualitative, a seconda della loro natura e del modo in cui possono essere misurate o contate. Di seguito, è riportata una tabella che riassume il nome di ciascuna variabile e il suo tipo:

Nome Variabile Tipo di Variabile
city Qualitativa Nominale
year Quantitativa Discreta
month Quantitativa Discreta
sales Quantitativa Discreta
volume Quantitativa Continua
median_price Quantitativa Continua
listings Quantitativa Discreta
months_inventory Quantitativa Continua

Spiegazione del Tipo di Variabili:

Spiegazione delle Variabili Temporali:

2. Analisi Descrittiva delle Variabili Numeriche

Obiettivo: Calcolare le statistiche descrittive per comprendere la distribuzione delle variabili numeriche principali.

install.packages("moments", repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/q1/xj3p1r6s4vj9kr11jz1v4pbh0000gn/T//RtmpazwFDA/downloaded_packages
library(moments)

sapply(dati[, c("sales","volume","median_price","listings", "months_inventory")], function(x){
  c(Mean = mean(x),
    Median = median(x),
    SD = sd(x),
    IQR = IQR(x),
    percentil = quantile(x),
    Skewness = skewness(x),
    Kurtosis = kurtosis(x)-3)
})
##                      sales    volume  median_price     listings
## Mean           192.2916667 31.005188  1.326654e+05 1738.0208333
## Median         175.5000000 27.062500  1.345000e+05 1618.5000000
## SD              79.6511112 16.651447  2.266215e+04  752.7077561
## IQR            120.0000000 23.233500  3.275000e+04 1029.5000000
## percentil.0%    79.0000000  8.166000  7.380000e+04  743.0000000
## percentil.25%  127.0000000 17.659500  1.173000e+05 1026.5000000
## percentil.50%  175.5000000 27.062500  1.345000e+05 1618.5000000
## percentil.75%  247.0000000 40.893000  1.500500e+05 2056.0000000
## percentil.100% 423.0000000 83.547000  1.800000e+05 3296.0000000
## Skewness         0.7181040  0.884742 -3.645529e-01    0.6494982
## Kurtosis        -0.3131764  0.176987 -6.229618e-01   -0.7917900
##                months_inventory
## Mean                 9.19250000
## Median               8.95000000
## SD                   2.30366862
## IQR                  3.15000000
## percentil.0%         3.40000000
## percentil.25%        7.80000000
## percentil.50%        8.95000000
## percentil.75%       10.95000000
## percentil.100%      14.90000000
## Skewness             0.04097527
## Kurtosis            -0.17444754

In questa seconda parte del progetto, ci siamo concentrati sull’analisi descrittiva delle variabili numeriche principali del dataset. Gli indicatori calcolati includono media, mediana, deviazione standard, IQR, percentili, skewness e kurtosis.

Queste misure offrono una panoramica completa della distribuzione dei dati, evidenziando asimmetrie e variabilità.

3. Distribuzione di Frequenza delle Variabili Qualitative

Obiettivo: Analizzare la distribuzione delle variabili qualitative e valutare la rappresentatività delle diverse modalità.

attach(dati)
N = dim(dati)[1]

freq_ass <- table(dati$city)
cum_freq_ass <- cumsum(freq_ass)
distr_freq_city<-as.data.frame(cbind(freq_ass,cum_freq_ass))
distr_freq_city
##                       freq_ass cum_freq_ass
## Beaumont                    60           60
## Bryan-College Station       60          120
## Tyler                       60          180
## Wichita Falls               60          240

È stata generata una distribuzione di frequenza per la variabile qualitativa nominale city. La tabella riporta la frequenza assoluta (freq_ass), che ci permette di valutare la rappresentatività delle diverse modalità.

L’output mostra la stessa frequenza assoluta per tutte e quattro le modalità della variabile city, indicando che ognuna di esse contribuisce in misura uguale al totale delle osservazioni. Si è scelto di non riportare nella tabella la frequenza relativa perché la variabile qualitativa in esame è nominale e non ordinale.

Per le variabili quantitative discrete year e month, visto il numero contenuto di valori distinti di entrambi e per il loro significato intrinseco nell’analisi, si è scelto di mostrare delle semplici tabelle con la frequenza assoluta per ogni valore distinto della variabile. Anche in questo caso, considerando il tipo variabili analizzate, si è deciso di escludere la frequenza relativa dalla tabella.

freq_ass <- table(dati$year)
cum_freq_ass <- cumsum(freq_ass)
distr_freq_year<-as.data.frame(cbind(freq_ass,cum_freq_ass))
distr_freq_year
##      freq_ass cum_freq_ass
## 2010       48           48
## 2011       48           96
## 2012       48          144
## 2013       48          192
## 2014       48          240
freq_ass <- table(dati$month)
cum_freq_ass <- cumsum(freq_ass)
distr_freq_month<-as.data.frame(cbind(freq_ass,cum_freq_ass))
distr_freq_month
##    freq_ass cum_freq_ass
## 1        20           20
## 2        20           40
## 3        20           60
## 4        20           80
## 5        20          100
## 6        20          120
## 7        20          140
## 8        20          160
## 9        20          180
## 10       20          200
## 11       20          220
## 12       20          240

Otteniamo lo stesso risultato di frequenza assoluta per ogni valore distinto delle variabili year e month. Conclusa l’analisi si può affermare con certezza che il dataset in esame è bilanciato in relazione alle diverse modalità della variabile city e ai diversi valori unici delle variabili year e month, non mostrando uno sbilanciamento di osservazioni tra di esse.

4. Analisi della variabilità relativa e della Asimmetria

Obiettivo: Misurare e confrontare la variabilità relativa delle variabili numeriche attraverso il calcolo del coefficiente di variazione. Individuare la variabile con maggiore variabilità e quella più asimmetrica.

cv <- function(x) {
  (sd(x)/mean(x))*100
}

variabilità <- sapply(dati[, c("sales","volume","median_price","listings", "months_inventory")], cv)
print(variabilità)
##            sales           volume     median_price         listings 
##         41.42203         53.70536         17.08218         43.30833 
## months_inventory 
##         25.06031

Abbiamo calcolato il coefficiente di variazione (CV) per confrontare la variabilità relativa delle variabili numeriche. Il coefficiente di variazione è una misura senza unità di misura, questo lo rende particolarmente utile per confrontare variabili con scale diverse, permettendo di valutare la dispersione dei dati in modo proporzionale rispetto alla loro media.

La variabile volume ha mostrato la maggiore variabilità relativa, indicando una distribuzione più dispersa rispetto alla media.

Per identificare la variabile più asimmetrica, possiamo confrontare i valori di skewness (asimmetria) calcolati al punto 2 per le variabili quantitative. Dai risultati della skewness emerge che la variabile volume ha un valore di 0.884, la più asimmetrica tra quelle analizzate, suggerendo una asimmetria positiva con una coda più lunga verso i volumi più alti e una concentrazione della maggior parte dei dati su valori più bassi.

library(ggplot2)

mean_volume <- mean(dati$volume)

ggplot(dati, aes(x = volume)) +
  geom_density(fill = "skyblue", alpha = 0.5) +
  geom_vline(aes(xintercept = mean_volume), color = "red", linetype = "dashed", linewidth = 1) +
  labs(title = "Distribuzione della Variabile Volume con Indicazione della Media",
       x = "Volume",
       y = "Densità") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

Abbiamo deciso di plottare il grafico della distribuzione della variabile volume per visualizzare in modo chiaro e immediato l’asimmetria positiva della distribuzione. Questo grafico permette di evidenziare come la maggior parte dei valori si concentri verso il lato sinistro (valori più bassi), mentre la coda della distribuzione si estende verso il lato destro (valori più elevati), caratteristica tipica di una distribuzione con skewness positiva.

5. Analisi della Variabile Volume Suddivisa in Classi

Obiettivo: Esaminare la distribuzione della variabile volume dopo la suddivisione in classi e confermare l’asimmetria della distribuzione.

num_classi <- 5
classi = cut(dati$volume, breaks = num_classi, include.lowest = TRUE)

ni<-table(classi)
fi<-ni/N
Ni<-cumsum(ni)
Fi<-Ni/N

distr_freq<-as.data.frame(cbind(ni,fi,Ni,Fi))
distr_freq
##             ni         fi  Ni        Fi
## [8.09,23.2] 93 0.38750000  93 0.3875000
## (23.2,38.3] 79 0.32916667 172 0.7166667
## (38.3,53.4] 43 0.17916667 215 0.8958333
## (53.4,68.5] 17 0.07083333 232 0.9666667
## (68.5,83.6]  8 0.03333333 240 1.0000000

La variabile volume è stata suddivisa in 5 intervalli di uguale ampiezza, definiti dai valori minimi e massimi della variabile. Questo ha generato 5 classi, ciascuna rappresentante un intervallo di valori di volume.

La tabella risultante mostra che la maggior parte dei dati è concentrata nelle prime tre classi, con frequenze cumulative relative che aumentano gradualmente fino al 100%.

Inoltre, la distribuzione delle frequenze conferma la presenza di un’asimmetria positiva, evidenziata dalla maggiore concentrazione di osservazioni nelle classi con valori di volume più bassi e dalla coda più lunga verso i valori più elevati. Questo risultato è coerente con l’analisi della skewness precedentemente calcolata.

5.1 Visualizzazione con Grafico a Barre

Obiettivo: Visualizzare la distribuzione delle frequenze delle classi di volume tramite un grafico a barre.

library(ggplot2)

ggplot(data = distr_freq) +
  geom_col(
    aes(x = rownames(distr_freq), y = ni),
    fill = "darkblue"
  ) +
  geom_text(
    aes(x = rownames(distr_freq), y = ni, label = ni),
    vjust = -0.5, 
    color = "black",  
    size = 3.5       
  ) +
  labs(
    x = "Volume in classi",
    y = "Frequenze assolute",
    title = "Grafico a barre"
  ) +
  theme_bw() +
  scale_y_continuous(breaks = seq(0, 120, 10))

Il grafico a barre risultante fornisce una rappresentazione visiva chiara della distribuzione delle frequenze delle classi di volume.

6. Calcolo dell’Indice di Gini per variabile volume suddivisa in classi

Obiettivo: Misurare la disuguaglianza nella distribuzione delle frequenze all’interno delle classi di volume.

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)
}

gini.index(classi)
## [1] 0.8790799

In questo passaggio del progetto, è stato calcolato l’indice di Gini normalizzato per la variabile volume, che precedentemente è stata suddivisa in 5 classi. L’obiettivo di questo calcolo è stato quello di misurare il grado di disuguaglianza nella distribuzione delle frequenze all’interno di queste classi.

Un valore elevato dell’indice di Gini normalizzato per le classi di volume indicherebbe che la distribuzione è abbastanza uniforme, mentre un valore basso evidenzierebbe una concentrazione di osservazioni in un numero limitato di classi, rafforzando l’evidenza di una distribuzione asimmetrica.

L’indice di Gini pari a 0.8790 indica che la distribuzione delle osservazioni tra le classi di volume è eterogenea.

Indice di Gini per la variabile city

L’indice di Gini per la variabile city può essere facilmente “indovinato” osservando la distribuzione di frequenze calcolata al punto 3, dove si osservavano frequenze assolute uguali per le quattro modalità della variabile. Il risultato precedente è coerente con un valore dell’indice di Gini pari a 1, dove nessuna modalità prevale sulle altre e tutte le città contribuiscono in misura uguale al totale delle osservazioni. Questo rappresenta una situazione di eterogeneità massima (equidistribuzione).

7. Calcolo delle Probabilità per Caratteristiche Specifiche

Obiettivo: Calcolare la probabilità che una riga del dataset appartenga a specifiche categorie, come una città o un periodo temporale.

num_beaumont <- sum(dati$city == "Beaumont")
prob_beaumont <- (num_beaumont / N)
prob_beaumont
## [1] 0.25
num_dicembre_2012 <- sum(dati$month == "12" & dati$year == 2012)
prob_dicembre_2012 <- (num_dicembre_2012 / N)
prob_dicembre_2012
## [1] 0.01666667

Abbiamo calcolato la probabilità che una riga del dataset rappresenti la città di Beaumont o il mese di dicembre 2012. Questi calcoli offrono una visione della rappresentatività di queste categorie nel dataset.

8. Creazione di Nuove Variabili: Prezzo Medio ed Efficacia degli Annunci

Obiettivo: Arricchire il dataset con nuove variabili che forniscano informazioni aggiuntive rispetto a quelle esistenti.

dati$prezzo_medio <- (dati$volume*10^6)/(dati$sales)
dati$efficacia_annunci <- ((dati$sales)/(dati$listings))*100
head(dati)
##       city year month sales volume median_price listings months_inventory
## 1 Beaumont 2010     1    83 14.162       163800     1533              9.5
## 2 Beaumont 2010     2   108 17.690       138200     1586             10.0
## 3 Beaumont 2010     3   182 28.701       122400     1689             10.6
## 4 Beaumont 2010     4   200 26.819       123200     1708             10.6
## 5 Beaumont 2010     5   202 28.833       123100     1771             10.9
## 6 Beaumont 2010     6   189 27.219       122800     1803             11.1
##   prezzo_medio efficacia_annunci
## 1     170626.5          5.414220
## 2     163796.3          6.809584
## 3     157697.8         10.775607
## 4     134095.0         11.709602
## 5     142737.6         11.405985
## 6     144015.9         10.482529

Sono state create due nuove variabili: prezzo_medio, calcolato utilizzando volume e sales, e efficacia_annunci, che misura l’efficacia degli annunci di vendita. Queste variabili offrono nuove prospettive per l’analisi del mercato immobiliare:

9. Analisi della Media e Deviazione Standard delle Vendite per Città

Obiettivo: Confrontare le vendite medie e la variabilità delle vendite tra le diverse città.

install.packages("dplyr", repos = "https://cloud.r-project.org")
## 
## The downloaded binary packages are in
##  /var/folders/q1/xj3p1r6s4vj9kr11jz1v4pbh0000gn/T//RtmpazwFDA/downloaded_packages
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
summarise_city_sales <- dati%>%
  group_by(city) %>%
  summarise(mean_sales = mean(sales),
            sd_sales = sd(sales))
summarise_city_sales
## # A tibble: 4 × 3
##   city                  mean_sales sd_sales
##   <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

Questo tipo di analisi è fondamentale per comprendere la performance delle vendite in diverse città. La media delle vendite ci fornisce un’indicazione del livello di attività in ciascuna città, mentre la deviazione standard ci aiuta a capire quanto sono stabili o volatili le vendite.

La stessa tipologia di analisi è stata effettuata anche raggruppando per le variabili year e month:

library(dplyr)
summarise_year_sales <- dati%>%
  group_by(year) %>%
  summarise(mean_sales = mean(sales),
            sd_sales = sd(sales))
summarise_year_sales
## # A tibble: 5 × 3
##    year mean_sales sd_sales
##   <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
summarise_month_sales <- dati%>%
  group_by(month) %>%
  summarise(mean_sales = mean(sales),
            sd_sales = sd(sales))
summarise_month_sales
## # A tibble: 12 × 3
##    month mean_sales sd_sales
##    <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

10. Confronto della Distribuzione dei Prezzi Mediani e del Volume delle Vendite

Obiettivo: Visualizzare e confrontare la distribuzione del prezzo mediano e del volume delle vendite per città e anno.

Diversi boxplot sono stati creati per confrontare le distribuzioni del prezzo mediano e del volume delle vendite tra le città e nel tempo. Questi grafici evidenziano differenze significative tra le città e tendenze di crescita del volume nel tempo.

library(ggplot2)
library(dplyr)

statistiche <- dati%>%
  group_by(city) %>%
  summarise(
    min = min(median_price),
    max = max(median_price),
    mean = mean(median_price)
  )

ggplot(dati, aes(x = city, y = median_price)) +
  geom_boxplot(fill = "lightblue") +
  geom_text(data = statistiche, aes(x = city, y = min, label = round(min, 2)), vjust = 1.5, color = "black", size = 3.5) +
  geom_text(data = statistiche, aes(x = city, y = max, label = round(max, 2)), vjust = -0.5, color = "black", size = 3.5) +
  geom_text(data = statistiche, aes(x = city, y = mean, label = round(mean, 2)), vjust = -0.5, color = "blue", size = 3.5) +
  labs(x = "Città", y = "Prezzo Mediano", title = "Boxplot del Prezzo Mediano per Città") +
  theme_minimal()

Il primo grafico confronta il prezzo mediano delle case tra le città.

Risultati principali:

Nel secondo grafico è stato utilizzato un boxplot multivariato per confrontare la distribuzione del volume totale delle vendite tra diverse città e nel corso di più anni (dal 2010 al 2014). Questo grafico consente di osservare come i volumi di vendita siano distribuiti tra le città e come si evolvano nel tempo.

Descrizione del Grafico

library(ggplot2)

ggplot(dati, aes(x = city, y = volume, fill = factor(year))) +
  geom_boxplot() +
  labs(title = "Confronto del Volume di Vendite tra le Città e negli Anni",
       x = "Città",
       y = "Volume delle Vendite",
       fill = "Anno") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

Osservazioni e Conclusioni

  1. Trend di crescita:

  1. Variabilità:

  1. Analisi del Totale delle Vendite per Mese e Città

Obiettivo: Esaminare l’andamento stagionale delle vendite per città nel corso degli anni.

Il grafico a barre sovrapposte rappresenta il totale delle vendite nei vari mesi, suddiviso per città e organizzato per anno tramite il faceting. Questa visualizzazione permette di analizzare simultaneamente le variazioni stagionali delle vendite e le differenze tra le città nel corso di diversi anni.

library(ggplot2)
ggplot(data = dati, aes(x = factor(month), y = sales, fill = city)) +
  geom_bar(stat = "identity", position = "stack") +
  labs(
    title = "Totale delle Vendite nei Vari Mesi per Città e Anno",
    x = "Mese",
    y = "Totale Vendite",
    fill = "Città"
  ) +
  scale_fill_brewer(palette = "Set3") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5)) +
  facet_wrap(~ year)

Andamento Stagionale:

Confronto tra Anni:

Contributo delle Città:

Grafico a Barre Normalizzato per Percentuale delle Vendite nei Vari Mesi per Città e Anno

È stato creato un grafico a barre normalizzato per visualizzare la percentuale delle vendite nei diversi mesi e anni, suddiviso per città. In questo grafico, ogni barra rappresenta la distribuzione percentuale delle vendite tra le diverse città in ogni mese, per ciascun anno dal 2010 al 2014.

Dettagli del grafico:


library(ggplot2)
ggplot(data = dati, aes(x = factor(month), y = sales, fill = city)) +
  geom_bar(stat = "identity", position = "fill") +
  labs(
    title = "Percentuale delle Vendite nei Vari Mesi per Città e Anno",
    x = "Mese",
    y = "Percentuale di Vendite",
    fill = "Città"
  ) +
  scale_fill_brewer(palette = "Set3") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5)) +
  facet_wrap(~ year) 

Osservazioni e Conclusioni

  1. Distribuzione relativamente costante:

  1. Tyler e Bryan-College Station:

  1. Leggera stagionalità:

  1. Analisi del Volume Totale delle Vendite nel Tempo per Città

Obiettivo: Valutare la crescita del volume totale delle vendite nel tempo per ciascuna città.

In questa analisi, abbiamo generato un grafico a linee che rappresenta l’andamento del volume di vendite per ciascuna città nei vari mesi e anni. Oltre a tracciare le vendite per ogni città, abbiamo inserito una linea aggiuntiva che rappresenta il totale aggregato delle vendite (sommando le vendite di tutte le città) per ogni mese e anno, in modo da monitorare anche il volume complessivo del mercato.

library(dplyr)

dati_aggregati <- dati %>%
  group_by(year, month) %>%
  summarise(volume_totale = sum(volume)) %>%
  mutate(city = "Totale")
## `summarise()` has grouped output by 'year'. You can override using the
## `.groups` argument.
dati_completo <- bind_rows(dati, dati_aggregati)

Passaggi:

Aggregazione dei dati: Abbiamo raggruppato il dataset originale per anno e mese utilizzando la funzione group_by(). Successivamente, abbiamo sommato i valori della variabile volume (che rappresenta il volume delle vendite) per ciascun mese e anno, utilizzando la funzione summarise().

Creazione della metrica aggregata: Il risultato di questa operazione è un nuovo dataset che contiene il totale delle vendite mensili per tutte le città, per ciascun anno e mese. Abbiamo anche aggiunto una nuova variabile city con il valore “Totale” per indicare che questa riga rappresenta il volume totale di tutte le città sommate insieme.

Unione del dataset originale con quello aggregato: Abbiamo poi unito il dataset contenente i dati originali con quello aggregato, usando bind_rows(). Questo ci ha permesso di includere sia i dati relativi alle singole città sia il totale aggregato all’interno dello stesso grafico.

Visualizzazione del volume totale: Nel grafico risultante, la linea del volume totale (colorata di blu scuro) è stata visualizzata insieme alle linee delle singole città. La visualizzazione permette di confrontare il trend aggregato delle vendite con quello delle singole città.

library(ggplot2)
ggplot(data = dati_completo, aes(x = factor(month), y = ifelse(city == "Totale", volume_totale, volume), 
                                 group = city, color = city)) +
  geom_line(linewidth = 1) + 
  geom_point(size = 2) + 
  labs(
    title = "Andamento del Volume di Vendite per Città e Totale Aggregato",
    x = "Mese",
    y = "Volume delle Vendite",
    color = "Città"
  ) +
  scale_x_discrete(breaks = 1:12) +
  scale_color_manual(values = c("Beaumont" = "red", "Bryan-College Station" = "green", 
                                "Tyler" = "blue", "Wichita Falls" = "purple", "Totale" = "darkblue")) +
  facet_wrap(~ year) + 
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5)
  )

Considerazioni:

Trend per città: Le città mostrano andamenti piuttosto simili nel tempo, con picchi di vendite nei mesi centrali dell’anno (soprattutto tra maggio e agosto), che probabilmente riflettono stagionalità tipiche del mercato immobiliare, come evidenziato anche dalle analisi precedenti.

Totale aggregato: La linea del totale aggregato (in blu scuro) evidenzia chiaramente la tendenza generale del mercato. È evidente un aumento complessivo delle vendite anno dopo anno, con un incremento significativo nel 2013 e 2014.

Confronto tra città: Città come Tyler e Bryan-College Station presentano volumi di vendita mediamente più elevati rispetto a Beaumont e Wichita Falls, con un divario visibile nel corso degli anni. Questo potrebbe indicare mercati immobiliari più attivi in queste città.

Conclusioni

Il report ha evidenziato significative differenze tra le città del Texas in termini di attività di mercato immobiliare. Tyler e Bryan-College Station emergono come i mercati più dinamici, con volumi di vendita e prezzi medi superiori rispetto a Beaumont e Wichita Falls. Le tendenze nel tempo indicano una crescita generale del mercato, con picchi di attività durante i mesi estivi. L’analisi descrittiva e le visualizzazioni forniscono una base solida per prendere decisioni strategiche in merito alle operazioni immobiliari e alla pianificazione delle risorse.