Il dataset iniziale contiene le seguenti variabili:
city: città di riferimento
year: anno di riferimento
month: mese di riferimento
sales: numero totale di vendite
volume: valore totale delle vendite (in milioni di dollari)
median_price: prezzo mediano di vendita (in dollari)
listings: numero totale di annunci attivi
months_inventory: quantità di tempo necessaria per vendere tutte le inserzioni correnti, espresso in mesi
summary(dati$city)
## Length Class Mode
## 240 character character
# variabile qualitativa nominale - 4 valori caratteriali
attach(dati)
summary(year)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2010 2011 2012 2012 2013 2014
# variabile quantitativa discreta ordinale - le vendite sono state fatte in un range dal 2010 al 2014
summary(month)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 3.75 6.50 6.50 9.25 12.00
# variabile quantitativa discreta ordinale - non significativa con i dati di SUMMARY
summary(sales)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 79.0 127.0 175.5 192.3 247.0 423.0
# variabile quantitativa discreta - le vendite hanno una media più alta della mediana, segno che ci saranno più mesi con vendite alte rispetto alla mediana
summary(volume)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8.166 17.660 27.062 31.005 40.893 83.547
# variabile quantitativa continua - da 8M a 83M con range IQR tra 17M e 40M
summary(median_price)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 73800 117300 134500 132665 150050 180000
# variabile quantitativa continua - da 73K a 180K con IQR da 117K a 150K, qui la mediana sorpassa la media
summary(listings)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 743 1026 1618 1738 2056 3296
# variabile quantitativa discreta - gli annunci attivi presentano un ampio range, quasi 5 volte il minimo
summary(months_inventory)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.400 7.800 8.950 9.193 10.950 14.900
# variabile quantitativa continua - il tempo massimo di vendita degli immobili è di 14,9 mesi
n <- dim(dati)[1]
dati$year_factor <- as.factor(dati$year)
dati$month_factor <- as.factor(dati$month)
## Warning: Returning more (or less) than 1 row per `summarise()` group was deprecated in
## dplyr 1.1.0.
## ℹ Please use `reframe()` instead.
## ℹ When switching from `summarise()` to `reframe()`, remember that `reframe()`
## always returns an ungrouped data frame and adjust accordingly.
## ℹ The deprecated feature was likely used in the dplyr package.
## Please report the issue at <https://github.com/tidyverse/dplyr/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## [1] "Indici di Posizione, Variabilità e Forma:"
## Media Mediana Deviazione_Standard Varianza Minimo Massimo
## year 2012 2012 1.417169 2.008368 2010 2014
## month 6.5 6.5 3.459267 11.96653 1 12
## sales 192.2917 175.5 79.65111 6344.3 79 423
## volume 31.00519 27.0625 16.65145 277.2707 8.166 83.547
## median_price 132665.4 134500 22662.15 513572983 73800 180000
## listings 1738.021 1618.5 752.7078 566569 743 3296
## months_inventory 9.1925 8.95 2.303669 5.306889 3.4 14.9
## Range Skewness Kurtosis
## year 4 0 -1.3
## month 11 0 -1.216783
## sales 344 0.718104 -0.3131764
## volume 75.381 0.884742 0.176987
## median_price 106200 -0.3645529 -0.6229618
## listings 2553 0.6494982 -0.79179
## months_inventory 11.5 0.04097527 -0.1744475
## [1] "\nDistribuzioni di Frequenza:"
## city
## 1 60
## 2 60
## 3 60
## 4 60
COMMENTO:
Anno (4), Mese (12) e Città (4) sono tutti dimensionati uguali
Median_price è l’unico con simmetria negativa
le altre varibili hanno tutte poca simmetria positiva
la curtosi è stata normalizzata con -3 e mostra che “median_price” è la variabile con le code più lunghe.
## [1] "Coefficienti di Variazione (CV):"
## CV
## volume 53.70535868
## month 53.21949013
## listings 43.30832759
## sales 41.42202965
## months_inventory 25.06030593
## median_price 17.08218257
## year 0.07043584
##
## La variabile con la più alta variabilità (in termini di CV) è: volume
il volume rappresenta il totale dei soldi movimentati nel mese, oltre ad essere la variabile con i valori più alti (MLN di dollari) rappresenta anche la sommatoria delle vendite concluse nel mese per il prezzo medio. E’ dunque un valore che risente di 2 variabili presenti nel dataset, ha infatti un valore che si avvicina alla somma dei CV delle 2 variabili citate.
calcolo dei valori assoluti di asimmetria:
## [1] "\nValori Assoluti di Skewness:"
## Skewness abs_skewness
## volume 0.88474203 0.88474203
## sales 0.71810402 0.71810402
## listings 0.64949823 0.64949823
## median_price -0.36455288 0.36455288
## months_inventory 0.04097527 0.04097527
## year 0.00000000 0.00000000
## month 0.00000000 0.00000000
##
## La variabile con la distribuzione più asimmetrica (in base al valore assoluto della skewness) è: volume (Skewness = 0.884742)
## ni fi Ni Fi
## (75,100] 21 0.087500000 21 0.0875000
## (100,125] 38 0.158333333 59 0.2458333
## (125,150] 34 0.141666667 93 0.3875000
## (150,175] 27 0.112500000 120 0.5000000
## (175,200] 29 0.120833333 149 0.6208333
## (200,225] 17 0.070833333 166 0.6916667
## (225,250] 15 0.062500000 181 0.7541667
## (250,275] 15 0.062500000 196 0.8166667
## (275,300] 19 0.079166667 215 0.8958333
## (300,325] 7 0.029166667 222 0.9250000
## (325,350] 6 0.025000000 228 0.9500000
## (350,375] 7 0.029166667 235 0.9791667
## (375,400] 2 0.008333333 237 0.9875000
## (400,425] 3 0.012500000 240 1.0000000
## L'indice di eterogeneità di Gini è: 0.898299
il risultato è vicino all’1, quindi indica un’ampia eterogenicità tra le classi, infatti molte delle 16 classi sono ben popolate a differenza delle ultime con bassa frequenza.
Distribuzione di Frequenze per la variabile “median_price”
mp_cl <- c(cut(median_price/1000, seq(70,180,5)))
distr_freq_mp <- as.data.frame( cbind(
ni = table(mp_cl),
fi = table(mp_cl)/n,
Ni = cumsum(table(mp_cl)),
Fi = cumsum(table(mp_cl)/n)))
# crea il grafico a barre
ggplot(data=dati)+
geom_bar(aes(x=mp_cl),
stat="count",
col="lightblue",
fill="blue")+
labs(title="Distribuzione di Prezzo Medio in Classi (valore in migliaia di Dollari)",
x="Classe Prezzo Medio * 1000",
y="Frequenza")+
theme_light()+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
## La probabilità che una riga a caso riporti la città 'Beaumont' è: 0.250000
## La probabilità che una riga a caso riporti il mese di Luglio è: 0.083333
## La probabilità che una riga a caso riporti il mese di Dicembre 2012 è: 0.016667
COMMENTO: il prezzo medio stimato, calcolato come “volume * 1MLN / vendite”, è un indice meno robusto del prezzo mediano in quanto la nuova varibile risente pesantemente di valori outlier. Con i dati in nostro possesso possiamo affermare che i prezzi migliori negli anni sono realizzati nella città di Bryan.
Calcolo l’efficacia degli annunci di vendita
## [1] "Summary di 'sales' per città:"
## # A tibble: 4 × 4
## city media_sales sd_sales n_obs
## <chr> <dbl> <dbl> <int>
## 1 Beaumont 177. 41.5 60
## 2 Bryan-College Station 206. 85.0 60
## 3 Tyler 270. 62.0 60
## 4 Wichita Falls 116. 22.2 60
## [1] "Summary di 'sales' per anno:"
## # A tibble: 5 × 4
## year media_sales sd_sales n_obs
## <int> <dbl> <dbl> <int>
## 1 2010 169. 60.5 48
## 2 2011 164. 63.9 48
## 3 2012 186. 70.9 48
## 4 2013 212. 84.0 48
## 5 2014 231. 95.5 48
## [1] "Summary di 'sales' per mese:"
## # A tibble: 12 × 4
## month media_sales sd_sales n_obs
## <int> <dbl> <dbl> <int>
## 1 1 127. 43.4 20
## 2 2 141. 51.1 20
## 3 3 189. 59.2 20
## 4 4 212. 65.4 20
## 5 5 239. 83.1 20
## 6 6 244. 95.0 20
## 7 7 236. 96.3 20
## 8 8 231. 79.2 20
## 9 9 182. 72.5 20
## 10 10 180. 75.0 20
## 11 11 157. 55.5 20
## 12 12 169. 60.7 20
l’anno che registra più vendite è il 2014
il mese che registra più vendite è giugno.
il mese che ha raggiunto i risultati migliori è giugno 2014, il peggiore gennaio 2010.
analizziamo la situazione per disponibilità di immobili:
ad una prima analisi visiva si assite ad una diminuzione della disponibilità di immobili con passare del tempo con andamento ciclico negli anni (dicembre come punta bassa di ogni anno).
guardando i dati dalla prospettiva del tempo necessario alla vendita:
anche qui si percepisce una diminuzione del tempo necessario alla vendita che diventa più sensibile dal 2012 in avanti, probabilmente è diminuita l’offerta (vedi grafico precedente) o è cresciuta la domanda.
provo ad inserire anche la città come nuova variabile
il risultato è difficilmente leggibile anche se si nota che Wichita Falls ha un mercato stabile nel tempo, invece Bryan e Tayler hanno sensibilmente aumentato le vendite negli anni.
inserisco ggplot per migliorare la rappresentazione
da questo boxplot possiamo evincere che:
Beaumont: dopo un rallentamento nel 2011 il mercato riprende e ha una buona crescita;
Bryan: importante oscillazione dei IQR negli anni con impennata del range dal 2013 (media stabile intorno ai 150 fino al 2012, cresce a 200 vendite nel 2013 e 250 nel 2014);
Tyler: parte già alto nel 2010 e migliora ogni anno le vendite, ha baffi lunghi ma IQR stabile, ritengo sia la città che registra il miglior incremento di vendite assoluto;
Wichita: vendite stabili negli anni, anche se la media diminuisce.
Dal momento che ipotizzo che l’agenzia guadagna sul numero di vendite concluse, se dovessi investire su una di queste città sceglierei Tyler.
provo a rappresentare le vendite per mese di ogni città:
grafico per tecnici; i mesi in cui si vendono più case sono da inizio maggio a fine agosto
Calcola le medie mensili delle vendite per ogni anno e città
## `summarise()` has grouped output by 'city', 'year'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
## Warning: The dot-dot notation (`..y..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(y)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
COMMENTO: in questa rappresentazione Tyler si conferma la città più interessante per le vendite, Bryan ha ottime performance negli ultimi due anni.
per approfondire meglio la situazione e scegliere quale città sarà il target dell’investimento della Texas Realty Insight filtro i dati per città e creo due boxplot
COMMENTO: paragonando il risultato di questi due grafici, entrameb le città hanno un trend in crescita, la scelta migliore rimane comunque Tyler.
Distribuzione prezzo mediano tra città
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'city', 'month'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
## Warning: Removed 8 rows containing missing values or values outside the scale range
## (`geom_line()`).
## Warning: Removed 8 rows containing missing values or values outside the scale range
## (`geom_point()`).
i dati in nostro possesso hanno permesso di fare una prima indagine conoscitiva del mercato delle 4 città analizzate. La disponibilità di ulteriori variabili potrebbe permettere di affinare i risultati da presentare alla società che ha commissionato il lavoro (Esempio: la dimensione degli appartamenti, la zona della città in cui si trovano, il numero di bagni, il livello di finiture, la domotica, i servizi presenti nelle immediate vicinanze, ecc, potrebbero contribuire a mappare meglio le caratteristiche delle abitazioni che vengono vendute più facilmente e di conseguenza indirizzare le inserzioni proposte).
Con i dati attualmente in nostro possesso consigliamo al cliente di aprire la nuova filiale a Tyler e di imparare la strategia di marketing dalle agenzie di Bryan. La sinergia tra le vendite potenziali in crescita di Tyler, la valorizzazione degli immobili e il marketing di Bryan daranno sicuramente luogo ad un business proficuo negli anni.