library(readxl)
library(ggplot2)
library(pROC)
library(ROCR)
library(dplyr)
library(tidyverse)
library(knitr)
library(moments)
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.
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")
| 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'")
| 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'")
| 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'")
| 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 |
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")
| 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.
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")
| 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.Gini |
|---|
| 0.93 |
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à")
| Evento | Probabilita |
|---|---|
| Città Beaumont | 0.25 |
| Mese di Luglio | 0.08 |
| Dicembre 2012 | 0.02 |
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.
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.
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")
| 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 |
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()
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.