Introduzione

L’azienda Texas Realty Insights desidera analizzare le tendenze del mercato immobiliare nello stato del Texas, sfruttando i dati storici relativi alle vendite di immobili. L’obiettivo è fornire insight statistici e visivi che supportino le decisioni strategiche di vendita e ottimizzazione delle inserzioni immobiliari.

L’analisi statistica proposta permetterà a Texas Realty Insights di ottimizzare le loro strategie di mercato, identificando città con opportunità di crescita e valutando l’efficacia delle inserzioni immobiliari nel tempo. Grazie a una visione chiara e strutturata dei dati, l’azienda potrà prendere decisioni basate su informazioni concrete, migliorando la gestione delle vendite immobiliari in Texas.

Effettuiamo il caricamento del dataset per procedere con l’analisi delle variabili

dati <- read.csv("realestate_texas.csv", sep = ",")
attach(dati)

1.Analisi delle variabili

Il dataset è composto da 240 osservazioni e presenta 8 variabili:

1- city: città di riferimento, è una variabile qualitativa nominale.

Su questa variabile, il tipo di analisi che si può condurre è il calcolo della moda per ciò che riguarda gli indici di posizione, in quanto la moda è la misura della frequenza più alta osservata calcolabile per qualsiasi tipo di variabile, anche quelle di tipo nominale.

table(city)
## city
##              Beaumont Bryan-College Station                 Tyler 
##                    60                    60                    60 
##         Wichita Falls 
##                    60

Dai risultati ottenuti possiamo affermare che la variabile city presenta 4 modalità distribuite in maniera uniforme.Si tratta di una distribuzione multimodale, in cui sono presenti 4 modalità che presentano la stessa frequenza.

Inoltre, essendo una variabile nominale, non esiste un ordine naturale delle modalità di essa, pertanto non ha senso calcolare altri indici di posizione così come non ha senso calcolare gli indici di variabilità. Infatti gli indici di variabilità esprimono una misura della tendenza delle unità ad assumere diverse modalità di una variabile e sono quasi tutti applicabili a variabili quantitative.

L’unico indice di variabilità calcolabile per questa variabile qualitativa è l’indice di Eterogeneità di Gini, che andrà a misurare la propensione della variabile city ad assumere le sue diverse modalità.

A priori, guardando la distribuzione dei dati, possiamo affermare con certezza che l’indice di Eterogeneità di Gini (normalizzato) sarà pari a 1 in quanto abbiamo 4 modalità per la variabile city e queste 4 modalità sono distrbuite in maniera assolutamento uniforme tra di loro (equidistrbuzione)

gini.index<-function(x){
  ni= table(x)
  fi=ni/length(x)
  fi2=fi^2
  J=length(table(x))
  
  gini <- 1-sum(fi^2)
  gini.normalizzato <- gini/((J-1)/J)
  
  return(gini.normalizzato)
}

gini.index(city)
## [1] 1

Infine, non usufruiremo degli indici di forma in quanto si applicano a variabili quantitative.

2- year: anno di riferimento, è una variabile quantitativa continua in quanto i suoi valori sono numerici su scala continua.

Calcoliamo gli indici di posizione per questa variabile

table(year)
## year
## 2010 2011 2012 2013 2014 
##   48   48   48   48   48

Dai risultati ottenuti possiamo affermare che la variabile year presenta 5 modalità distribuite in maniera uniforme. Si tratta di una distribuzione multimodale, in cui sono presenti 5 modalità che presentano la stessa frequenza.

min(year)
## [1] 2010
max(year)
## [1] 2014
median(year)
## [1] 2012

La mediana (o secondo quartile), è quel valore che divide in 2 la distribuzione dei dati. Osservando la distribuzione dei dati, notiamo che la modalità 2012 si lascia alle spalle il 50% della distribuzione e ha davanti a se il restante 50%, pertanto ci aspettiamo che sia proprio 2012.

Calcoliamo i quartili Q1 e Q3 che rappresentano rispettivamente il 25° e 75° percentile

quantile(year)
##   0%  25%  50%  75% 100% 
## 2010 2011 2012 2013 2014

Calcoliamo la media aritmetica, ovvero la somma dei valori della variabile diviso il totale

mean(year)
## [1] 2012

Trattandosi di una variabile quantitativa discreta, possiamo andare a calcolare tutti gli indici di variabilità

Calcoliamo l’intervallo di variazione o range, ovvero l’ampiezza dell’intervallo in cui la variabile può variare

range(year)
## [1] 2010 2014

Osserviamo che la variabile year si muove in un range di valori che va dal 2010 al 2014. Se volessimo ottenere l’intervallo, ci basterebbe fare la differenza tra
il minimo e il massimo valore della variabile

max(year)-min(year)
## [1] 4

Calcoliamo la differenza interquartile, ovvero la differenza tra il terzo quartile e il primo quartile. Questa misura rappresenta l’intervallo di variazione del corpo centrale dei dati

IQR(year)
## [1] 2

Calcoliamo la varianza, ovvero la dispersione dei dati intorno alla media, dato che i valori della variabile si discostano tra loro di poco, possiamo aspettarci una varianza bassa. Ciò sta ad indicare che i valori sono distribuiti intorno alla media aritmetica

var(year)
## [1] 2.008368

Tale valore non è direttamente confrontabile con i dati, pertanto andiamo a calcolare la deviazione standard, ovvero la radice quadrata della varianza. Ci fornisce un indice di variabilità nella stessa misura dei dati osservati.

sd(year)
## [1] 1.417169

Calcoliamo il coefficiente di variazione, che riscala la deviazione standard dividendola per la media e moltiplicando per 100.

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

CV(year)
## [1] 0.07043584

Questo indice è utile perchè, nel nostro caso di studio, ci permetterà di studiare due varibili dello stesso campione per confrontarne la variabilità. Ad esempio, confrontiamo il coefficiente di variazione di year con quello di un’altra variabile temporale, ad esempio month

CV(year)
## [1] 0.07043584
CV(month)
## [1] 53.21949

La differenza tra i due coefficienti è parlante: nel primo caso della variabile year notiamo che la variabile è molto meno variabile rispetto alla variabile month il cui coefficiente di variazione è 53.22 approssimato.

Come ultimo indice di posizione, calcoliamo l’indice di eterogeneità di Gini. Guardando la distribuzione dei dati, possiamo affermare con certezza che l’indice di Eterogeneità di Gini (normalizzato) sarà pari a 1 in quanto ci troviamo di fronte ad una equidistribuzione dei valori per le modalità della variabile year.

gini.index(year)
## [1] 1

Studiamo adesso gli indici di forma, che forniscono una misura di allontanamento dalla perfetta regolarità della distribuzione normale

Calcoliamo l’indice di asimmetria di Fisher che ci consente di quantificare l’asimmetria. Dallo studio degli indici effettutato fino ad ora possiamo prevedere che la distribuzione sarà del tutto simmetrica(quindi pari a 0) in quanto la media, la moda e la media sono uguali tra di loro

#usiamo il pacchetto moment
library(moments)
#usiamo la funzione skewness per l'indice di Fisher
skewness(year)
## [1] 0

Trattandosi di una distribuzione simmetrica, possiamo prevedere graficamente che sarà possibile individuare un asse verticale che taglia la distrbuzione in due parti specularmente uguali

plot(density(year))+
abline(v=mean(year),col=2)

## integer(0)

Adesso andiamo a calcolare il coefficiente di curtosi centrata in 3, che misura lo schiacciamento e l’allungamento della forma della distribuzione dei dati rispetto ad una distribuzione normale. Dal grafico ottenuto possiamo già notare che la curva risulta essere più allungata che appiattita, pertanto ci aspettiamo che l’indice sia positivo

kurtosis(year)
## [1] 1.7

Possiamo affermare che si tratta di una curtosi leptocurtica.

3- month: mese di riferimento, è una variabile quantitativa continua. Calcoliamo gli indici di posizione

table(month)
## month
##  1  2  3  4  5  6  7  8  9 10 11 12 
## 20 20 20 20 20 20 20 20 20 20 20 20

Anche in questo caso ci toviamo davanti ad una distribuzione uniforme multimodale in cui la variabile month presenta ben 12 modalità diverse tutte con la stessa frequenza osservata.

Calcoliamo minimo e massimo

min(month)
## [1] 1
max(month)
## [1] 12

Calcoliamo la mediana

median(month)
## [1] 6.5

Calcoliamo la media

mean(month)
## [1] 6.5

Notiamo anche che media e mediana corrispondono, pertanto già da questa evidenza possiamo affermare che si tratta di una distribuzione simmetrica, ne avremo la conferma con lo studio degli indici di forma.

#range

range(month)
## [1]  1 12
max(month)-min(month)
## [1] 11
# differenza interquartile

IQR(month)
## [1] 5.5
# varianza

var(month)
## [1] 11.96653
# deviazione standard

sd(month)
## [1] 3.459267
# indice di eterogeneità di Gini

gini.index(month)
## [1] 1

Abbiamo osservato che la media è pari a 6.5 e il range è abbastanza ristretto, quindi una deviazione standard pari a 3.46 è non è molto alta, questo significa che i dati non sono molto dispersi rispetto alla media. Osserviamo anche che abbiamo un indice di eterogeneità di Gini pari a 1 che conferma che si tratta di una distribuzione uniforme.

Analizziamo adesso gli indici di forma, e valutiamo se l’osservazione fatta rispetto alla media e alla mediana è corretta.

skewness(month)
## [1] 0
kurtosis(month)
## [1] 1.783217

Effettivamente l’indice di asimmetria di Fisher è pari a 0, pertanto ci troviamo di fronte ad una distribuzione normale. Inoltre, il coefficiente di curtosi è positivo, questo indica che la distribuzione ha una forma allungata rispetto alla distribuzione normale ed è leptocurtica

osserviamo con un semplice grafico

plot(density(month))+
abline(v=mean(month),col=2)

## integer(0)

4- sales: numero totale di vendite, è una variabile quantitativa discreta.

table(sales)
## sales
##  79  80  81  83  89  90  91  92  93  94  95  96  97  98 100 101 102 104 105 107 
##   2   1   1   1   3   1   1   1   2   2   1   1   2   1   1   3   2   1   1   1 
## 108 109 110 111 112 113 114 115 116 117 119 121 122 123 124 125 127 128 129 130 
##   3   1   2   2   1   2   2   2   1   1   2   1   1   2   5   2   2   2   1   3 
## 131 132 134 135 137 140 141 143 144 146 147 148 149 150 151 152 155 159 160 162 
##   1   2   1   3   1   2   1   3   1   1   1   2   3   4   1   1   2   3   3   2 
## 163 164 165 166 167 169 170 171 173 174 175 176 177 180 181 182 186 187 188 189 
##   2   2   1   2   1   2   1   1   1   1   1   2   2   1   2   4   3   1   1   2 
## 190 193 196 197 198 200 202 204 206 208 209 210 212 213 218 220 224 225 227 232 
##   1   2   2   2   2   2   3   1   1   2   1   1   2   1   2   1   1   1   2   1 
## 233 234 238 239 241 244 246 250 253 254 255 258 260 262 267 271 272 273 275 278 
##   1   1   3   1   1   2   2   1   3   1   1   1   1   2   1   2   1   1   1   1 
## 281 282 284 286 287 289 292 293 294 295 296 298 300 302 303 313 316 317 322 323 
##   1   3   1   1   1   3   1   1   1   1   1   2   1   1   1   1   1   1   1   1 
## 326 328 332 335 341 347 353 357 361 369 371 377 388 402 403 423 
##   1   1   1   1   1   1   1   2   1   2   1   1   1   1   1   1

Come possiamo notare, abbiamo a disposizione una grande quantità di modalità quindi costruiamo una distribuzione di frequenza

#chiamiamo n la variabile che rappresenta la dimensione del dataset
n<-length(dati)

distr_freq_sales <- as.data.frame(
  cbind(
    ni=table(sales),
    fi=table(sales)/n,
    Ni=cumsum(table(sales)),
    Fi=cumsum(table(sales))/n
  )
)
#distribuzione di frequenza 
distr_freq_sales
##     ni    fi  Ni     Fi
## 79   2 0.250   2  0.250
## 80   1 0.125   3  0.375
## 81   1 0.125   4  0.500
## 83   1 0.125   5  0.625
## 89   3 0.375   8  1.000
## 90   1 0.125   9  1.125
## 91   1 0.125  10  1.250
## 92   1 0.125  11  1.375
## 93   2 0.250  13  1.625
## 94   2 0.250  15  1.875
## 95   1 0.125  16  2.000
## 96   1 0.125  17  2.125
## 97   2 0.250  19  2.375
## 98   1 0.125  20  2.500
## 100  1 0.125  21  2.625
## 101  3 0.375  24  3.000
## 102  2 0.250  26  3.250
## 104  1 0.125  27  3.375
## 105  1 0.125  28  3.500
## 107  1 0.125  29  3.625
## 108  3 0.375  32  4.000
## 109  1 0.125  33  4.125
## 110  2 0.250  35  4.375
## 111  2 0.250  37  4.625
## 112  1 0.125  38  4.750
## 113  2 0.250  40  5.000
## 114  2 0.250  42  5.250
## 115  2 0.250  44  5.500
## 116  1 0.125  45  5.625
## 117  1 0.125  46  5.750
## 119  2 0.250  48  6.000
## 121  1 0.125  49  6.125
## 122  1 0.125  50  6.250
## 123  2 0.250  52  6.500
## 124  5 0.625  57  7.125
## 125  2 0.250  59  7.375
## 127  2 0.250  61  7.625
## 128  2 0.250  63  7.875
## 129  1 0.125  64  8.000
## 130  3 0.375  67  8.375
## 131  1 0.125  68  8.500
## 132  2 0.250  70  8.750
## 134  1 0.125  71  8.875
## 135  3 0.375  74  9.250
## 137  1 0.125  75  9.375
## 140  2 0.250  77  9.625
## 141  1 0.125  78  9.750
## 143  3 0.375  81 10.125
## 144  1 0.125  82 10.250
## 146  1 0.125  83 10.375
## 147  1 0.125  84 10.500
## 148  2 0.250  86 10.750
## 149  3 0.375  89 11.125
## 150  4 0.500  93 11.625
## 151  1 0.125  94 11.750
## 152  1 0.125  95 11.875
## 155  2 0.250  97 12.125
## 159  3 0.375 100 12.500
## 160  3 0.375 103 12.875
## 162  2 0.250 105 13.125
## 163  2 0.250 107 13.375
## 164  2 0.250 109 13.625
## 165  1 0.125 110 13.750
## 166  2 0.250 112 14.000
## 167  1 0.125 113 14.125
## 169  2 0.250 115 14.375
## 170  1 0.125 116 14.500
## 171  1 0.125 117 14.625
## 173  1 0.125 118 14.750
## 174  1 0.125 119 14.875
## 175  1 0.125 120 15.000
## 176  2 0.250 122 15.250
## 177  2 0.250 124 15.500
## 180  1 0.125 125 15.625
## 181  2 0.250 127 15.875
## 182  4 0.500 131 16.375
## 186  3 0.375 134 16.750
## 187  1 0.125 135 16.875
## 188  1 0.125 136 17.000
## 189  2 0.250 138 17.250
## 190  1 0.125 139 17.375
## 193  2 0.250 141 17.625
## 196  2 0.250 143 17.875
## 197  2 0.250 145 18.125
## 198  2 0.250 147 18.375
## 200  2 0.250 149 18.625
## 202  3 0.375 152 19.000
## 204  1 0.125 153 19.125
## 206  1 0.125 154 19.250
## 208  2 0.250 156 19.500
## 209  1 0.125 157 19.625
## 210  1 0.125 158 19.750
## 212  2 0.250 160 20.000
## 213  1 0.125 161 20.125
## 218  2 0.250 163 20.375
## 220  1 0.125 164 20.500
## 224  1 0.125 165 20.625
## 225  1 0.125 166 20.750
## 227  2 0.250 168 21.000
## 232  1 0.125 169 21.125
## 233  1 0.125 170 21.250
## 234  1 0.125 171 21.375
## 238  3 0.375 174 21.750
## 239  1 0.125 175 21.875
## 241  1 0.125 176 22.000
## 244  2 0.250 178 22.250
## 246  2 0.250 180 22.500
## 250  1 0.125 181 22.625
## 253  3 0.375 184 23.000
## 254  1 0.125 185 23.125
## 255  1 0.125 186 23.250
## 258  1 0.125 187 23.375
## 260  1 0.125 188 23.500
## 262  2 0.250 190 23.750
## 267  1 0.125 191 23.875
## 271  2 0.250 193 24.125
## 272  1 0.125 194 24.250
## 273  1 0.125 195 24.375
## 275  1 0.125 196 24.500
## 278  1 0.125 197 24.625
## 281  1 0.125 198 24.750
## 282  3 0.375 201 25.125
## 284  1 0.125 202 25.250
## 286  1 0.125 203 25.375
## 287  1 0.125 204 25.500
## 289  3 0.375 207 25.875
## 292  1 0.125 208 26.000
## 293  1 0.125 209 26.125
## 294  1 0.125 210 26.250
## 295  1 0.125 211 26.375
## 296  1 0.125 212 26.500
## 298  2 0.250 214 26.750
## 300  1 0.125 215 26.875
## 302  1 0.125 216 27.000
## 303  1 0.125 217 27.125
## 313  1 0.125 218 27.250
## 316  1 0.125 219 27.375
## 317  1 0.125 220 27.500
## 322  1 0.125 221 27.625
## 323  1 0.125 222 27.750
## 326  1 0.125 223 27.875
## 328  1 0.125 224 28.000
## 332  1 0.125 225 28.125
## 335  1 0.125 226 28.250
## 341  1 0.125 227 28.375
## 347  1 0.125 228 28.500
## 353  1 0.125 229 28.625
## 357  2 0.250 231 28.875
## 361  1 0.125 232 29.000
## 369  2 0.250 234 29.250
## 371  1 0.125 235 29.375
## 377  1 0.125 236 29.500
## 388  1 0.125 237 29.625
## 402  1 0.125 238 29.750
## 403  1 0.125 239 29.875
## 423  1 0.125 240 30.000

dalla distribuzione di frequenza osserviamo che il valore con frequenza più alta osservata è 125 (con frequenza 5). Pertanto la moda è 125.

# min e max

min(sales)
## [1] 79
max(sales)
## [1] 423
# mediana (o secondo quartile)

median(sales)
## [1] 175.5
# primo e terzo quartile

quantile(sales)
##    0%   25%   50%   75%  100% 
##  79.0 127.0 175.5 247.0 423.0
#media aritmetica

mean(sales)
## [1] 192.2917

Osserviamo che media>mediana>moda, pertanto prevediamo che si tratti di una distribuzione asimmetica positiva.

Studiamo, ora, gli indici di variabilità

# intervallo di variazione o range

range(sales)
## [1]  79 423
max(sales)-min(sales)
## [1] 344
# differenza interquartile

IQR(sales)
## [1] 120
# varianza

var(sales)
## [1] 6344.3
# deviazione standard

sd(sales)
## [1] 79.65111
# indice di eterogeneità di Gini

gini.index(sales)
## [1] 0.998379

Osserviamo anche che abbiamo un indice di eterogeneità di Gini pari a 0.998 che conferma che si tratta di una distribuzione quasi del tutto eterogenea, questo indica che si tratta di una distribuzione dei dati abbastanza equa.

skewness(sales)
## [1] 0.718104
kurtosis(sales)
## [1] 2.686824

come anticipato, si tratta di una distribuzione asimmetrica positiva e di una curtosi leptocurtica di forma allungata

plot(density(sales))+
abline(v=mean(sales),col=2)

## integer(0)

5- volume: valore totale delle vendite (in milioni di dollari) è una variabile quantitativa continua

table(volume)
## volume
##  8.166  8.747  8.951  9.382    9.4  9.507  9.626  9.666  9.695 10.274 10.697 
##      1      1      1      1      1      1      1      1      1      1      1 
## 10.844 11.176 11.261 11.308 11.486 11.792  11.82  11.92 12.015 12.355 12.451 
##      1      1      1      1      1      1      1      1      1      1      1 
##  12.47 13.031 13.104 13.396 13.443 13.496 13.524 13.594 13.605 13.817 13.876 
##      1      1      1      1      1      1      1      1      1      1      1 
## 13.884 13.925 14.003 14.162  14.47  14.69 14.876 15.151 15.242 15.283 15.325 
##      1      1      2      1      1      1      1      1      1      1      1 
## 15.489 15.547 16.103 16.125 16.129 16.166 16.187   16.2 16.475 16.715 16.908 
##      1      1      1      1      1      1      1      1      1      1      1 
## 17.126 17.212 17.233 17.568  17.69  17.79 17.793 17.833 18.077 18.107 18.192 
##      1      1      1      1      1      1      1      1      1      1      1 
##  18.25 18.571 18.672 18.686 18.977 19.059 19.192 19.684 19.686 19.772 19.789 
##      1      1      1      1      1      1      1      1      1      1      1 
## 20.301 20.342  20.58 20.635 20.881  21.05 21.235 21.534 22.183 22.564 22.706 
##      1      1      1      1      1      1      1      1      1      1      1 
## 22.887 22.906 22.983 23.029 23.464 23.904 23.916 24.052 24.087 24.228 24.411 
##      1      1      1      1      1      1      1      1      1      1      1 
##  24.86 24.921 24.925 24.956 25.237 25.281 25.359 25.386 25.487 25.551 25.686 
##      1      1      1      1      1      1      1      1      1      1      1 
## 25.714  25.86 25.981 26.344 26.371 26.644 26.819 26.891 26.961 27.164 27.219 
##      1      1      1      1      1      1      1      1      1      1      1 
##  27.35  28.32 28.434  28.48 28.507 28.701 28.833 28.882 29.117 29.433 29.457 
##      1      1      1      1      1      1      1      1      1      1      1 
## 29.754 30.139 30.159 30.181 30.773 30.818 31.146 31.263 31.656 31.667 31.684 
##      1      1      1      1      1      1      1      1      1      1      1 
## 32.083 32.087 32.135 32.538 32.681 32.814 33.326 33.633 33.859 34.057 34.359 
##      1      1      1      1      1      1      1      1      1      1      1 
## 34.669 34.806 34.861 34.903 35.169  35.22 35.335 35.395 35.866 36.275 36.739 
##      1      1      1      1      1      1      2      1      1      1      1 
## 36.916 36.965  37.28 37.961 38.189 38.691 38.707 39.049 39.737 39.788 40.306 
##      1      1      1      1      1      1      1      1      1      1      1 
## 40.493 40.883 40.923  40.93 41.191 42.028  42.42 42.553 42.584 42.941 44.022 
##      1      1      1      1      1      1      1      2      1      1      1 
## 44.327  45.53  45.84 46.485 46.696 46.763 47.453 47.776 48.445 48.481 48.948 
##      1      1      1      1      1      1      1      1      1      1      1 
## 49.352 49.377 49.914 50.348 50.404 51.056 51.099 51.608 51.619 51.716 52.314 
##      1      1      1      1      1      1      1      1      1      1      1 
## 52.319 52.928   53.2 53.674 54.325 55.448 55.913 57.388 59.974 60.581 60.639 
##      1      1      1      1      1      1      1      1      1      1      1 
## 61.032 61.164  62.85 63.046 63.759 65.316 66.725 67.244 68.161 68.744 69.643 
##      1      1      1      1      1      1      1      1      1      1      1 
## 70.289 71.456 76.116 77.983 80.814 83.547 
##      1      1      1      1      1      1

Come possiamo notare, abbiamo a disposizione una grande quantità di modalità quindi costruiamo una distribuzione di frequenza

distr_freq_volume <- as.data.frame(
  cbind(
    ni=table(volume),
    fi=table(volume)/n,
    Ni=cumsum(table(volume)),
    Fi=cumsum(table(volume))/n
  )
)
#distribuzione di frequenza 
distr_freq_volume
##        ni    fi  Ni     Fi
## 8.166   1 0.125   1  0.125
## 8.747   1 0.125   2  0.250
## 8.951   1 0.125   3  0.375
## 9.382   1 0.125   4  0.500
## 9.4     1 0.125   5  0.625
## 9.507   1 0.125   6  0.750
## 9.626   1 0.125   7  0.875
## 9.666   1 0.125   8  1.000
## 9.695   1 0.125   9  1.125
## 10.274  1 0.125  10  1.250
## 10.697  1 0.125  11  1.375
## 10.844  1 0.125  12  1.500
## 11.176  1 0.125  13  1.625
## 11.261  1 0.125  14  1.750
## 11.308  1 0.125  15  1.875
## 11.486  1 0.125  16  2.000
## 11.792  1 0.125  17  2.125
## 11.82   1 0.125  18  2.250
## 11.92   1 0.125  19  2.375
## 12.015  1 0.125  20  2.500
## 12.355  1 0.125  21  2.625
## 12.451  1 0.125  22  2.750
## 12.47   1 0.125  23  2.875
## 13.031  1 0.125  24  3.000
## 13.104  1 0.125  25  3.125
## 13.396  1 0.125  26  3.250
## 13.443  1 0.125  27  3.375
## 13.496  1 0.125  28  3.500
## 13.524  1 0.125  29  3.625
## 13.594  1 0.125  30  3.750
## 13.605  1 0.125  31  3.875
## 13.817  1 0.125  32  4.000
## 13.876  1 0.125  33  4.125
## 13.884  1 0.125  34  4.250
## 13.925  1 0.125  35  4.375
## 14.003  2 0.250  37  4.625
## 14.162  1 0.125  38  4.750
## 14.47   1 0.125  39  4.875
## 14.69   1 0.125  40  5.000
## 14.876  1 0.125  41  5.125
## 15.151  1 0.125  42  5.250
## 15.242  1 0.125  43  5.375
## 15.283  1 0.125  44  5.500
## 15.325  1 0.125  45  5.625
## 15.489  1 0.125  46  5.750
## 15.547  1 0.125  47  5.875
## 16.103  1 0.125  48  6.000
## 16.125  1 0.125  49  6.125
## 16.129  1 0.125  50  6.250
## 16.166  1 0.125  51  6.375
## 16.187  1 0.125  52  6.500
## 16.2    1 0.125  53  6.625
## 16.475  1 0.125  54  6.750
## 16.715  1 0.125  55  6.875
## 16.908  1 0.125  56  7.000
## 17.126  1 0.125  57  7.125
## 17.212  1 0.125  58  7.250
## 17.233  1 0.125  59  7.375
## 17.568  1 0.125  60  7.500
## 17.69   1 0.125  61  7.625
## 17.79   1 0.125  62  7.750
## 17.793  1 0.125  63  7.875
## 17.833  1 0.125  64  8.000
## 18.077  1 0.125  65  8.125
## 18.107  1 0.125  66  8.250
## 18.192  1 0.125  67  8.375
## 18.25   1 0.125  68  8.500
## 18.571  1 0.125  69  8.625
## 18.672  1 0.125  70  8.750
## 18.686  1 0.125  71  8.875
## 18.977  1 0.125  72  9.000
## 19.059  1 0.125  73  9.125
## 19.192  1 0.125  74  9.250
## 19.684  1 0.125  75  9.375
## 19.686  1 0.125  76  9.500
## 19.772  1 0.125  77  9.625
## 19.789  1 0.125  78  9.750
## 20.301  1 0.125  79  9.875
## 20.342  1 0.125  80 10.000
## 20.58   1 0.125  81 10.125
## 20.635  1 0.125  82 10.250
## 20.881  1 0.125  83 10.375
## 21.05   1 0.125  84 10.500
## 21.235  1 0.125  85 10.625
## 21.534  1 0.125  86 10.750
## 22.183  1 0.125  87 10.875
## 22.564  1 0.125  88 11.000
## 22.706  1 0.125  89 11.125
## 22.887  1 0.125  90 11.250
## 22.906  1 0.125  91 11.375
## 22.983  1 0.125  92 11.500
## 23.029  1 0.125  93 11.625
## 23.464  1 0.125  94 11.750
## 23.904  1 0.125  95 11.875
## 23.916  1 0.125  96 12.000
## 24.052  1 0.125  97 12.125
## 24.087  1 0.125  98 12.250
## 24.228  1 0.125  99 12.375
## 24.411  1 0.125 100 12.500
## 24.86   1 0.125 101 12.625
## 24.921  1 0.125 102 12.750
## 24.925  1 0.125 103 12.875
## 24.956  1 0.125 104 13.000
## 25.237  1 0.125 105 13.125
## 25.281  1 0.125 106 13.250
## 25.359  1 0.125 107 13.375
## 25.386  1 0.125 108 13.500
## 25.487  1 0.125 109 13.625
## 25.551  1 0.125 110 13.750
## 25.686  1 0.125 111 13.875
## 25.714  1 0.125 112 14.000
## 25.86   1 0.125 113 14.125
## 25.981  1 0.125 114 14.250
## 26.344  1 0.125 115 14.375
## 26.371  1 0.125 116 14.500
## 26.644  1 0.125 117 14.625
## 26.819  1 0.125 118 14.750
## 26.891  1 0.125 119 14.875
## 26.961  1 0.125 120 15.000
## 27.164  1 0.125 121 15.125
## 27.219  1 0.125 122 15.250
## 27.35   1 0.125 123 15.375
## 28.32   1 0.125 124 15.500
## 28.434  1 0.125 125 15.625
## 28.48   1 0.125 126 15.750
## 28.507  1 0.125 127 15.875
## 28.701  1 0.125 128 16.000
## 28.833  1 0.125 129 16.125
## 28.882  1 0.125 130 16.250
## 29.117  1 0.125 131 16.375
## 29.433  1 0.125 132 16.500
## 29.457  1 0.125 133 16.625
## 29.754  1 0.125 134 16.750
## 30.139  1 0.125 135 16.875
## 30.159  1 0.125 136 17.000
## 30.181  1 0.125 137 17.125
## 30.773  1 0.125 138 17.250
## 30.818  1 0.125 139 17.375
## 31.146  1 0.125 140 17.500
## 31.263  1 0.125 141 17.625
## 31.656  1 0.125 142 17.750
## 31.667  1 0.125 143 17.875
## 31.684  1 0.125 144 18.000
## 32.083  1 0.125 145 18.125
## 32.087  1 0.125 146 18.250
## 32.135  1 0.125 147 18.375
## 32.538  1 0.125 148 18.500
## 32.681  1 0.125 149 18.625
## 32.814  1 0.125 150 18.750
## 33.326  1 0.125 151 18.875
## 33.633  1 0.125 152 19.000
## 33.859  1 0.125 153 19.125
## 34.057  1 0.125 154 19.250
## 34.359  1 0.125 155 19.375
## 34.669  1 0.125 156 19.500
## 34.806  1 0.125 157 19.625
## 34.861  1 0.125 158 19.750
## 34.903  1 0.125 159 19.875
## 35.169  1 0.125 160 20.000
## 35.22   1 0.125 161 20.125
## 35.335  2 0.250 163 20.375
## 35.395  1 0.125 164 20.500
## 35.866  1 0.125 165 20.625
## 36.275  1 0.125 166 20.750
## 36.739  1 0.125 167 20.875
## 36.916  1 0.125 168 21.000
## 36.965  1 0.125 169 21.125
## 37.28   1 0.125 170 21.250
## 37.961  1 0.125 171 21.375
## 38.189  1 0.125 172 21.500
## 38.691  1 0.125 173 21.625
## 38.707  1 0.125 174 21.750
## 39.049  1 0.125 175 21.875
## 39.737  1 0.125 176 22.000
## 39.788  1 0.125 177 22.125
## 40.306  1 0.125 178 22.250
## 40.493  1 0.125 179 22.375
## 40.883  1 0.125 180 22.500
## 40.923  1 0.125 181 22.625
## 40.93   1 0.125 182 22.750
## 41.191  1 0.125 183 22.875
## 42.028  1 0.125 184 23.000
## 42.42   1 0.125 185 23.125
## 42.553  2 0.250 187 23.375
## 42.584  1 0.125 188 23.500
## 42.941  1 0.125 189 23.625
## 44.022  1 0.125 190 23.750
## 44.327  1 0.125 191 23.875
## 45.53   1 0.125 192 24.000
## 45.84   1 0.125 193 24.125
## 46.485  1 0.125 194 24.250
## 46.696  1 0.125 195 24.375
## 46.763  1 0.125 196 24.500
## 47.453  1 0.125 197 24.625
## 47.776  1 0.125 198 24.750
## 48.445  1 0.125 199 24.875
## 48.481  1 0.125 200 25.000
## 48.948  1 0.125 201 25.125
## 49.352  1 0.125 202 25.250
## 49.377  1 0.125 203 25.375
## 49.914  1 0.125 204 25.500
## 50.348  1 0.125 205 25.625
## 50.404  1 0.125 206 25.750
## 51.056  1 0.125 207 25.875
## 51.099  1 0.125 208 26.000
## 51.608  1 0.125 209 26.125
## 51.619  1 0.125 210 26.250
## 51.716  1 0.125 211 26.375
## 52.314  1 0.125 212 26.500
## 52.319  1 0.125 213 26.625
## 52.928  1 0.125 214 26.750
## 53.2    1 0.125 215 26.875
## 53.674  1 0.125 216 27.000
## 54.325  1 0.125 217 27.125
## 55.448  1 0.125 218 27.250
## 55.913  1 0.125 219 27.375
## 57.388  1 0.125 220 27.500
## 59.974  1 0.125 221 27.625
## 60.581  1 0.125 222 27.750
## 60.639  1 0.125 223 27.875
## 61.032  1 0.125 224 28.000
## 61.164  1 0.125 225 28.125
## 62.85   1 0.125 226 28.250
## 63.046  1 0.125 227 28.375
## 63.759  1 0.125 228 28.500
## 65.316  1 0.125 229 28.625
## 66.725  1 0.125 230 28.750
## 67.244  1 0.125 231 28.875
## 68.161  1 0.125 232 29.000
## 68.744  1 0.125 233 29.125
## 69.643  1 0.125 234 29.250
## 70.289  1 0.125 235 29.375
## 71.456  1 0.125 236 29.500
## 76.116  1 0.125 237 29.625
## 77.983  1 0.125 238 29.750
## 80.814  1 0.125 239 29.875
## 83.547  1 0.125 240 30.000

da cui osserviamo che la distribuzione di frequenza è trimodale, ovvero sono presenti tre modalità per la variabile volume le cui frequenze sono le più alte osservate (ni = 3)

# min e max

min(volume)
## [1] 8.166
max(volume)
## [1] 83.547
# mediana (e secondo quartile)

median(volume)
## [1] 27.0625
# quartili

quantile(volume)
##      0%     25%     50%     75%    100% 
##  8.1660 17.6595 27.0625 40.8930 83.5470
# media aritmetica

mean(volume)
## [1] 31.00519

Notiamo che la media è maggiore della mediana quindi ci aspettiamo che sia una distribuzione asimettrica positiva

# intervallo di variazione o range

range(volume)
## [1]  8.166 83.547
max(volume)-min(volume)
## [1] 75.381
# differenza interquartile

IQR(volume)
## [1] 23.2335
# varianza

var(volume)
## [1] 277.2707
# deviazione standard

sd(volume)
## [1] 16.65145
# indice di eterogeneità di Gini

gini.index(volume)
## [1] 0.9999484

considerando che si tratta di un range ampio, i valori si disperdono molto dalla media, con deviazione standard alta.

Osserviamo anche che abbiamo un indice di eterogeneità di Gini pari a 0.998 che conferma che si tratta di una distribuzione quasi del tutto eterogenea, questo indica che si tratta di una distribuzione dei dati abbastanza equa.

skewness(volume)
## [1] 0.884742
kurtosis(volume)
## [1] 3.176987

come avevamo anticipato, si tratta proprio di una distribuzione asimmetrica positiva.Inoltre, abbiamo una curtosi leptocurtica, quindi ci aspettiamo che la curva sia più allungata che appiattita.

plot(density(volume))+
abline(v=mean(volume),col=2)

## integer(0)

6- median_price: prezzo mediano di vendita (in dollari), è una variabile quantitativa continua che rappresenta già un valore mediano.

table(median_price)
## median_price
##  73800  82100  85900  86400  87000  87200  87500  88600  89400  90000  90800 
##      1      1      1      1      1      1      1      1      1      2      1 
##  91200  91700  92200  93000  94000  95000  96000  96700  97500  99300  99600 
##      1      1      1      1      1      1      1      1      2      1      1 
##  1e+05 100700 101400 102300 102500 102900 103800 104700 105000 105200 105800 
##      2      2      1      3      2      1      1      2      1      2      1 
## 106700 108000 108300 109100 109400 110000 111100 112100 113300 113600 114000 
##      1      1      1      1      1      2      2      1      1      1      1 
## 114300 115700 116000 116500 116700 117500 118200 118800 119200 120000 120600 
##      1      1      1      1      1      1      1      2      1      1      1 
## 120700 121100 121200 121300 121800 122400 122800 123100 123200 123800 124200 
##      1      2      1      1      1      1      1      1      1      1      1 
## 124300 126100 126200 127000 128100 128200 128800 129100 129200 129400 129600 
##      2      1      1      1      1      1      1      1      1      1      1 
## 130000 130700 130800 131200 131400 131500 132100 132400 132500 132800 132900 
##      4      2      2      1      1      1      1      1      2      1      1 
## 133200 133300 133600 133800 134100 134200 134300 134400 134500 134700 135000 
##      2      1      1      1      2      2      1      1      2      1      1 
## 135100 135300 135700 136000 136100 136300 136800 137600 138200 138300 138500 
##      1      1      2      1      1      1      1      1      1      1      1 
## 138900 139200 139400 139600 140000 140500 140600 140700 142000 142200 142400 
##      1      1      1      1      2      1      1      1      1      1      2 
## 142700 143100 143600 144000 144100 144600 144800 144900 145000 145800 146700 
##      1      1      1      1      2      2      2      1      1      1      1 
## 146900 147000 147400 147600 147700 147900 148100 148300 148400 148500 148700 
##      1      1      1      1      1      1      1      1      1      2      1 
## 148900 149100 149300 149400 150000 150200 150700 151000 151200 151500 151700 
##      1      1      2      1      1      1      1      1      1      1      1 
## 151900 152000 152100 152200 152300 152600 153100 153300 153900 154300 154400 
##      1      1      2      1      1      1      2      1      1      1      1 
## 155200 155300 155500 155600 155700 156200 156400 156500 156600 157300 158200 
##      2      2      1      2      1      1      1      3      1      1      1 
## 158800 159300 159400 159700 161000 161200 161400 161600 163700 163800 165200 
##      1      1      1      1      2      1      1      1      1      1      1 
## 165300 166100 167300 168500 169500 169600 170000 172200 172600 172800 176100 
##      1      1      1      1      1      1      1      1      1      1      1 
## 177300 180000 
##      1      1

Come possiamo notare, abbiamo a disposizione una grande quantità di modalità, quindi costriamo una distribuzione di frequenza

distr_freq_median_price <- as.data.frame(
  cbind(
    ni = table(median_price),
    fi = table(median_price)/n,
    Ni = cumsum(table(median_price)),
    Fi = cumsum(table(median_price)/n)
  )
)

osserviamo che la moda è il valore 130000 con numero di frequenza osservata pari a 4

# min e max

min(median_price)
## [1] 73800
max(median_price)
## [1] 180000
# quartili

quantile(median_price)
##     0%    25%    50%    75%   100% 
##  73800 117300 134500 150050 180000
# media aritmetica

mean(median_price)
## [1] 132665.4
# intervallo di variazione o range

range(median_price)
## [1]  73800 180000
max(median_price)-min(median_price)
## [1] 106200
# differenza interquartile

IQR(median_price)
## [1] 32750
# varianza

var(median_price)
## [1] 513572983
# deviazione standard

sd(median_price)
## [1] 22662.15
# indice di eterogeneità di Gini

gini.index(median_price)
## [1] 0.9992672

Indice di eterogeneità di Gini pari a 0.999, è quind una distribuzione eterogenea.

skewness(median_price)
## [1] -0.3645529
kurtosis(median_price)
## [1] 2.377038

Notiamo un indice di asimmetria negativo, questo indica che la distribuzione è asimmetica ed ha una coda più lunga a sinistra, quindi verso valori più bassi. Anche in questo caso si tratta di una distribuzione leptocurtica.

plot(density(median_price))

Osservazioni: Dall’analisi svolta e dal grafico ottenuto, notiamo che la media risulta essere maggiore della moda, ci saremmo aspettati un’asimmetria positiva. Sebbene l’indice di Fisher sia negativo, -0.36 risulta relativamente basso, quindi abbiamo una distribuzione quasi simmetrica, non molto lontana da una distribuzione normale. Questo è dovuto alla presenza di valori più estremi verso la coda di sinistra che abbassano notevolmente la media. Infatti se i valori bassi hanno un effetto maggiore rispetto ai valori alti, la media si riduce molto rispetto alla moda.

7- listings: numero totale di annunci attivi, è una variabile quantitativa discreta in quanto rappresenta il conteggio di annunci attivi, che può assumere solo valori interi non negativi.

Gli indici di posizione cher possono aiutare nella sintesi dei dati sono moda, media aritmetica, mediana, massimo, minimo e quantili.

distr_freq_listings <- as.data.frame(
  cbind(
    ni = table(listings),
    fi = table(listings)/n,
    Ni = cumsum(table(listings)),
    Fi = cumsum(table(listings)/n)
  )
)

distr_freq_listings
##      ni    fi  Ni     Fi
## 743   1 0.125   1  0.125
## 746   1 0.125   2  0.250
## 774   1 0.125   3  0.375
## 777   1 0.125   4  0.500
## 796   1 0.125   5  0.625
## 801   1 0.125   6  0.750
## 812   1 0.125   7  0.875
## 821   1 0.125   8  1.000
## 830   1 0.125   9  1.125
## 838   1 0.125  10  1.250
## 844   2 0.250  12  1.500
## 850   1 0.125  13  1.625
## 852   1 0.125  14  1.750
## 854   1 0.125  15  1.875
## 859   1 0.125  16  2.000
## 861   1 0.125  17  2.125
## 868   1 0.125  18  2.250
## 870   1 0.125  19  2.375
## 877   1 0.125  20  2.500
## 882   1 0.125  21  2.625
## 887   1 0.125  22  2.750
## 895   1 0.125  23  2.875
## 899   1 0.125  24  3.000
## 900   1 0.125  25  3.125
## 902   1 0.125  26  3.250
## 904   1 0.125  27  3.375
## 905   1 0.125  28  3.500
## 907   2 0.250  30  3.750
## 908   1 0.125  31  3.875
## 914   2 0.250  33  4.125
## 915   1 0.125  34  4.250
## 923   1 0.125  35  4.375
## 931   1 0.125  36  4.500
## 933   1 0.125  37  4.625
## 934   1 0.125  38  4.750
## 938   1 0.125  39  4.875
## 940   1 0.125  40  5.000
## 941   2 0.250  42  5.250
## 946   1 0.125  43  5.375
## 950   1 0.125  44  5.500
## 955   1 0.125  45  5.625
## 961   1 0.125  46  5.750
## 963   1 0.125  47  5.875
## 968   2 0.250  49  6.125
## 972   1 0.125  50  6.250
## 973   2 0.250  52  6.500
## 993   1 0.125  53  6.625
## 996   1 0.125  54  6.750
## 1004  1 0.125  55  6.875
## 1005  2 0.250  57  7.125
## 1016  1 0.125  58  7.250
## 1022  2 0.250  60  7.500
## 1028  1 0.125  61  7.625
## 1029  1 0.125  62  7.750
## 1030  1 0.125  63  7.875
## 1031  1 0.125  64  8.000
## 1041  1 0.125  65  8.125
## 1052  1 0.125  66  8.250
## 1057  1 0.125  67  8.375
## 1132  1 0.125  68  8.500
## 1152  1 0.125  69  8.625
## 1155  1 0.125  70  8.750
## 1199  1 0.125  71  8.875
## 1201  1 0.125  72  9.000
## 1212  1 0.125  73  9.125
## 1218  1 0.125  74  9.250
## 1261  1 0.125  75  9.375
## 1271  1 0.125  76  9.500
## 1298  1 0.125  77  9.625
## 1362  1 0.125  78  9.750
## 1385  2 0.250  80 10.000
## 1416  1 0.125  81 10.125
## 1439  1 0.125  82 10.250
## 1442  2 0.250  84 10.500
## 1445  1 0.125  85 10.625
## 1458  1 0.125  86 10.750
## 1462  1 0.125  87 10.875
## 1480  1 0.125  88 11.000
## 1486  2 0.250  90 11.250
## 1492  1 0.125  91 11.375
## 1498  1 0.125  92 11.500
## 1500  1 0.125  93 11.625
## 1501  1 0.125  94 11.750
## 1510  1 0.125  95 11.875
## 1518  1 0.125  96 12.000
## 1530  1 0.125  97 12.125
## 1533  1 0.125  98 12.250
## 1534  1 0.125  99 12.375
## 1536  1 0.125 100 12.500
## 1539  1 0.125 101 12.625
## 1544  1 0.125 102 12.750
## 1549  1 0.125 103 12.875
## 1562  1 0.125 104 13.000
## 1567  1 0.125 105 13.125
## 1570  1 0.125 106 13.250
## 1575  2 0.250 108 13.500
## 1577  1 0.125 109 13.625
## 1581  3 0.375 112 14.000
## 1586  1 0.125 113 14.125
## 1588  1 0.125 114 14.250
## 1596  1 0.125 115 14.375
## 1599  2 0.250 117 14.625
## 1604  1 0.125 118 14.750
## 1613  1 0.125 119 14.875
## 1617  1 0.125 120 15.000
## 1620  2 0.250 122 15.250
## 1624  1 0.125 123 15.375
## 1634  1 0.125 124 15.500
## 1636  1 0.125 125 15.625
## 1646  2 0.250 127 15.875
## 1647  1 0.125 128 16.000
## 1652  1 0.125 129 16.125
## 1655  1 0.125 130 16.250
## 1657  1 0.125 131 16.375
## 1659  1 0.125 132 16.500
## 1662  1 0.125 133 16.625
## 1666  1 0.125 134 16.750
## 1669  1 0.125 135 16.875
## 1671  1 0.125 136 17.000
## 1672  1 0.125 137 17.125
## 1675  2 0.250 139 17.375
## 1677  1 0.125 140 17.500
## 1680  1 0.125 141 17.625
## 1681  1 0.125 142 17.750
## 1683  1 0.125 143 17.875
## 1687  1 0.125 144 18.000
## 1689  1 0.125 145 18.125
## 1691  1 0.125 146 18.250
## 1696  1 0.125 147 18.375
## 1704  1 0.125 148 18.500
## 1708  2 0.250 150 18.750
## 1722  1 0.125 151 18.875
## 1723  1 0.125 152 19.000
## 1724  1 0.125 153 19.125
## 1730  1 0.125 154 19.250
## 1734  1 0.125 155 19.375
## 1735  1 0.125 156 19.500
## 1742  1 0.125 157 19.625
## 1749  1 0.125 158 19.750
## 1750  1 0.125 159 19.875
## 1758  1 0.125 160 20.000
## 1762  1 0.125 161 20.125
## 1765  1 0.125 162 20.250
## 1767  1 0.125 163 20.375
## 1771  1 0.125 164 20.500
## 1779  1 0.125 165 20.625
## 1785  1 0.125 166 20.750
## 1789  1 0.125 167 20.875
## 1793  1 0.125 168 21.000
## 1803  1 0.125 169 21.125
## 1806  1 0.125 170 21.250
## 1822  1 0.125 171 21.375
## 1829  1 0.125 172 21.500
## 1830  1 0.125 173 21.625
## 1832  1 0.125 174 21.750
## 1833  1 0.125 175 21.875
## 1834  1 0.125 176 22.000
## 1840  1 0.125 177 22.125
## 1845  1 0.125 178 22.250
## 1857  1 0.125 179 22.375
## 1984  1 0.125 180 22.500
## 2272  1 0.125 181 22.625
## 2460  1 0.125 182 22.750
## 2500  1 0.125 183 22.875
## 2602  1 0.125 184 23.000
## 2609  1 0.125 185 23.125
## 2625  1 0.125 186 23.250
## 2633  1 0.125 187 23.375
## 2658  1 0.125 188 23.500
## 2666  1 0.125 189 23.625
## 2696  1 0.125 190 23.750
## 2701  1 0.125 191 23.875
## 2720  1 0.125 192 24.000
## 2727  1 0.125 193 24.125
## 2729  1 0.125 194 24.250
## 2737  1 0.125 195 24.375
## 2744  1 0.125 196 24.500
## 2763  1 0.125 197 24.625
## 2778  1 0.125 198 24.750
## 2788  1 0.125 199 24.875
## 2791  1 0.125 200 25.000
## 2811  1 0.125 201 25.125
## 2830  1 0.125 202 25.250
## 2852  2 0.250 204 25.500
## 2855  1 0.125 205 25.625
## 2857  1 0.125 206 25.750
## 2868  1 0.125 207 25.875
## 2875  1 0.125 208 26.000
## 2876  1 0.125 209 26.125
## 2878  1 0.125 210 26.250
## 2897  1 0.125 211 26.375
## 2917  1 0.125 212 26.500
## 2920  1 0.125 213 26.625
## 2938  1 0.125 214 26.750
## 2940  1 0.125 215 26.875
## 2946  1 0.125 216 27.000
## 2953  2 0.250 218 27.250
## 2981  1 0.125 219 27.375
## 2986  1 0.125 220 27.500
## 2998  1 0.125 221 27.625
## 3014  1 0.125 222 27.750
## 3041  1 0.125 223 27.875
## 3042  2 0.250 225 28.125
## 3056  1 0.125 226 28.250
## 3072  1 0.125 227 28.375
## 3094  1 0.125 228 28.500
## 3101  1 0.125 229 28.625
## 3156  1 0.125 230 28.750
## 3175  1 0.125 231 28.875
## 3196  1 0.125 232 29.000
## 3218  1 0.125 233 29.125
## 3256  1 0.125 234 29.250
## 3263  1 0.125 235 29.375
## 3266  1 0.125 236 29.500
## 3267  1 0.125 237 29.625
## 3272  1 0.125 238 29.750
## 3294  1 0.125 239 29.875
## 3296  1 0.125 240 30.000

Osserviamo che la moda della variabile è 1581 con 3 frequenze osservate Ricaviamo tutti gli indici di posizione di cui necessitiamo con la funzione summary

summary(listings)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     743    1026    1618    1738    2056    3296

osserviamo che media>mediana>moda, ci aspettiamo una distribuzione asimmetrica positiva

# intervallo di variazione o range

range(listings)
## [1]  743 3296
max(listings)-min(listings)
## [1] 2553
# differenza interquartile

IQR(listings)
## [1] 1029.5
# varianza

var(listings)
## [1] 566569
# deviazione standard

sd(listings)
## [1] 752.7078
# indice di eterogeneità di Gini

gini.index(listings)
## [1] 0.9996201

Notiamo che la deviazione standard è superiore al valore massimo della variabile, si tratta quindi di una variabile con una grande dispersione intorno alla media.

skewness(listings)
## [1] 0.6494982
kurtosis(listings)
## [1] 2.20821

come ci aspettavamo, si tratta di una distribuzione asimmetrica positiva e di una curtosi leptocurtica

plot(density(listings))

8- months_inventory: quantità di tempo necessaria per vendere tutte le inserzioni correnti, espresso in mesi. Rappresenta una variabile quantitativa continua in quanto rappresenta una misura di tempo che può assumere valori frazionari.

distr_freq_months_inventory <- as.data.frame(
  cbind(
    ni = table(months_inventory),
    fi = table(months_inventory)/n,
    Ni = cumsum(table(months_inventory)),
    Fi = cumsum(table(months_inventory)/n)
  )
)

distr_freq_months_inventory
##      ni    fi  Ni     Fi
## 3.4   1 0.125   1  0.125
## 3.8   1 0.125   2  0.250
## 4     3 0.375   5  0.625
## 4.1   1 0.125   6  0.750
## 4.4   1 0.125   7  0.875
## 4.5   1 0.125   8  1.000
## 4.8   1 0.125   9  1.125
## 4.9   1 0.125  10  1.250
## 5     5 0.625  15  1.875
## 5.2   1 0.125  16  2.000
## 6     1 0.125  17  2.125
## 6.1   3 0.375  20  2.500
## 6.3   1 0.125  21  2.625
## 6.4   2 0.250  23  2.875
## 6.6   1 0.125  24  3.000
## 6.7   1 0.125  25  3.125
## 6.9   2 0.250  27  3.375
## 7     3 0.375  30  3.750
## 7.1   5 0.625  35  4.375
## 7.2   4 0.500  39  4.875
## 7.3   3 0.375  42  5.250
## 7.4   2 0.250  44  5.500
## 7.5   5 0.625  49  6.125
## 7.6   7 0.875  56  7.000
## 7.7   2 0.250  58  7.250
## 7.8   7 0.875  65  8.125
## 7.9   7 0.875  72  9.000
## 8     7 0.875  79  9.875
## 8.1  10 1.250  89 11.125
## 8.2   1 0.125  90 11.250
## 8.3   4 0.500  94 11.750
## 8.4   5 0.625  99 12.375
## 8.5   4 0.500 103 12.875
## 8.6   4 0.500 107 13.375
## 8.7   6 0.750 113 14.125
## 8.8   4 0.500 117 14.625
## 8.9   3 0.375 120 15.000
## 9     7 0.875 127 15.875
## 9.1   6 0.750 133 16.625
## 9.2   3 0.375 136 17.000
## 9.3   3 0.375 139 17.375
## 9.4   6 0.750 145 18.125
## 9.5   3 0.375 148 18.500
## 9.6   1 0.125 149 18.625
## 9.7   2 0.250 151 18.875
## 9.9   2 0.250 153 19.125
## 10    4 0.500 157 19.625
## 10.1  1 0.125 158 19.750
## 10.2  3 0.375 161 20.125
## 10.3  1 0.125 162 20.250
## 10.4  3 0.375 165 20.625
## 10.5  3 0.375 168 21.000
## 10.6  4 0.500 172 21.500
## 10.7  3 0.375 175 21.875
## 10.8  3 0.375 178 22.250
## 10.9  2 0.250 180 22.500
## 11.1  4 0.500 184 23.000
## 11.2  2 0.250 186 23.250
## 11.3  5 0.625 191 23.875
## 11.4  4 0.500 195 24.375
## 11.5  2 0.250 197 24.625
## 11.6  7 0.875 204 25.500
## 11.7  5 0.625 209 26.125
## 11.8  1 0.125 210 26.250
## 11.9  1 0.125 211 26.375
## 12    4 0.500 215 26.875
## 12.2  1 0.125 216 27.000
## 12.3  3 0.375 219 27.375
## 12.4  3 0.375 222 27.750
## 12.6  2 0.250 224 28.000
## 12.7  1 0.125 225 28.125
## 13    3 0.375 228 28.500
## 13.3  2 0.250 230 28.750
## 13.4  2 0.250 232 29.000
## 13.5  1 0.125 233 29.125
## 13.8  2 0.250 235 29.375
## 14    1 0.125 236 29.500
## 14.5  2 0.250 238 29.750
## 14.6  1 0.125 239 29.875
## 14.9  1 0.125 240 30.000

osserviamo che la moda è 8.1 la cui frequenza è osservata ben 10 volte

summary(months_inventory)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.400   7.800   8.950   9.193  10.950  14.900

anche per questa variabile abbiamo media>mediana>moda, quindi avremo una distribuzione asimmetrica positiva

# intervallo di variazione o range

range(months_inventory)
## [1]  3.4 14.9
max(months_inventory)-min(months_inventory)
## [1] 11.5
# differenza interquartile

IQR(months_inventory)
## [1] 3.15
# varianza

var(months_inventory)
## [1] 5.306889
# deviazione standard

sd(months_inventory)
## [1] 2.303669
# indice di eterogeneità di Gini

gini.index(months_inventory)
## [1] 0.9944444

osserviamo una distribuzione standard bassa, pertanto possiamo affermare che i valori della variabile sono ben distribuiti intorno alla media. Inoltre notiamo un indice di Gini quasi vicino all’unità (0.994), pertanto si tratta di una distribuzione quasi del tutto eterogenea.

skewness(months_inventory)
## [1] 0.04097527
kurtosis(months_inventory)
## [1] 2.825552

si tratta di una distribuzione asimmetrica posistiva leptocurtica.

3.Identificazione delle variabili con maggiore variabilità e asimmetria

Per stabilire quale variabile ha la maggiore variabilità è necessario poterle confrontare tra di loro a prescindere dalle loro unità di misura. Pertanto è necessario usufruire del coefficiente di variabilità CV che rappresenta una misura adimensionale in percentuale della variabilità di una variabile e consente di confrontare variabili diverse dello stesso campione. La misura fornita non è significativa nel momento in cui la media della variabile in esame è intorno allo zero oppure se è negativa; non trovandoci in questo caso, possiamo procedere con il confronto tra le variabili.

CV(year)
## [1] 0.07043584
CV(month)
## [1] 53.21949
CV(sales)
## [1] 41.42203
CV(volume)
## [1] 53.70536
CV(median_price)
## [1] 17.08218
CV(listings)
## [1] 43.30833
CV(months_inventory)
## [1] 25.06031

Possiamo quindi affermare che la variabile con variabilità più alta risulta essere month con 53.2

Osserviamo adesso la variabile con la distribuzione più asimmetrica, ovvero la variabile il cui indice di asimmetria di Fisher si allontana di più dallo zero che invece è indice di distribuzione normale

skewness(year)
## [1] 0
skewness(month)
## [1] 0
skewness(sales)
## [1] 0.718104
skewness(volume)
## [1] 0.884742
skewness(median_price)
## [1] -0.3645529
skewness(listings)
## [1] 0.6494982
skewness(months_inventory)
## [1] 0.04097527

In questo caso osserviamo che la variabile volume ha l’indice di asimmetria di Fisher più lontano dallo zero, pertanto è la variabile più asimmetrica.

4. Creazione di classi per una variabile quantitativa

Quando una variabile presenta un elevato numero di modalità è possibile suddividere la variabile in classi che devono essere esaustive e mutuamente esclusive: questo implica che ogni unità originale deve appartenere soltanto ad una ed una sola classe. Suddividiamo la variabile sales in classi

sales_cl <- cut(sales, seq(79,423,43))

# distribuzione di frequenza della variabile sales_cl

distr_freq_sales_cl <- as.data.frame(
  cbind(
    ni=table(sales_cl),
    fi=table(sales_cl)/n,
    Ni=cumsum(table(sales_cl)),
    Fi=cumsum(table(sales_cl))/n
  )
)

Rappresentiamo i dati con un grafico a barre

#usiamo il pacchetto ggplot2
library(ggplot2)

#costruiamo il grafico
ggplot(data=dati)+
  geom_bar(aes(x = sales_cl),
           stat = "count",
           col = "black",
           fill = "orange")+
  labs(title = "Distribuzione delle classi di sales",
       x = "Numero totale di vendite",
       y = "Frequenze assolute")+
  theme_classic()

Da questa rappresentazione grafica possiamo notare che la classe con il numero totale di vendite maggiore è rappresentato proprio dalla classe (122,165]. Non a caso, quando abbiamo analizzato la variabile sales, abbiamo detto che la moda è pari a 125, pertanto anche in questo caso, la classe con la frequenza assoluta più alta è proprio quella in cui ricade la moda della variabile originale.

Infine calcoliamo l’indice di eterogeneità di Gini

gini.index(sales_cl)
## [1] 0.9472619

L’indice di eterogeneità di Gini è quasi pari a 1,quindi le unità statistiche si distribuiscono abbastanza uniformemente lungo tutte le modalità della variabile.

5. Calcolo della probabilità

Qual è la probabilità che, presa una riga a caso di questo dataset, essa riporti la città “Beaumont”? Sappiamo che la variabile city ha il seguente dominio

table(city)
## city
##              Beaumont Bryan-College Station                 Tyler 
##                    60                    60                    60 
##         Wichita Falls 
##                    60
distr_freq_city<-as.data.frame(
  cbind(
    ni = table(city),
    fi = table(city)/n,
    Ni = cumsum(table(city)),
    Fi = cumsum(table(city)/n)
  )
)

distr_freq_city
##                       ni  fi  Ni   Fi
## Beaumont              60 7.5  60  7.5
## Bryan-College Station 60 7.5 120 15.0
## Tyler                 60 7.5 180 22.5
## Wichita Falls         60 7.5 240 30.0

Sappiamo a priori quanti sono i casi favorevoli, ovvero 60, e quanti sono i casi possibili, ovvero 240 Applichiamo la formula della probabilità classica, dividendo quindi il numero di casi favorevoli per il numero di casi possibili

Beaumont_probability <- 60/240
Beaumont_probability
## [1] 0.25

C’è una possibilità su 4 che, presa una riga a caso di questo dataset, essa riporti la città “Beaumont”. Ci aspettavamo questo risultato in quanto le 4 modalità della variabile city hanno la stessa frequenza assoluta, pertanto hanno la stessa probabilità di essere estratte. Questo tipo di funzione di probabilità si dice uniforme.

E la probabilità che riporti il mese di Luglio? Situazione analoga

table(month)
## month
##  1  2  3  4  5  6  7  8  9 10 11 12 
## 20 20 20 20 20 20 20 20 20 20 20 20
# distribuzione uniforme dei dati
distr_freq_month<-as.data.frame(
  cbind(
    ni = table(month),
    fi = table(month)/n,
    Ni = cumsum(table(month)),
    Fi = cumsum(table(month)/n)
  )
)

distr_freq_month
##    ni  fi  Ni   Fi
## 1  20 2.5  20  2.5
## 2  20 2.5  40  5.0
## 3  20 2.5  60  7.5
## 4  20 2.5  80 10.0
## 5  20 2.5 100 12.5
## 6  20 2.5 120 15.0
## 7  20 2.5 140 17.5
## 8  20 2.5 160 20.0
## 9  20 2.5 180 22.5
## 10 20 2.5 200 25.0
## 11 20 2.5 220 27.5
## 12 20 2.5 240 30.0

Calcoliamo la probabilità

Luglio_probability<-20/240
Luglio_probability
## [1] 0.08333333

E la probabilità che riporti il mese di dicembre 2012? In questo caso parliamo di due variabili, pertanto la probabilità di ottenere il mese di dicembre nell’anno 2012 è data dalla somma delle singole probabilità

Calcoliamo la probabilità per il mese di dicembre, che sappiamo essere la stessa probabilità calcolata per il mese di Luglio in quanto si tratta di una distribuzione uniforme dei dati. Poi andiamo a calcolare la probabilità di ottenere l’anno 2012 e insime sommiamo le due probabilità

# Calcoliamo la probabilità per il mese di Dicembre

Dicembre_probability<- 20/240

# Calcoliamo la probabilità per l'anno 2012

table(year)
## year
## 2010 2011 2012 2013 2014 
##   48   48   48   48   48
# anche in questo caso si parla di una distribuzione uniforme dei dati

year2012_probability<-48/240

# Calcoliamo la probabilità per Dicembre 2012

dicembre2012_probability<- Dicembre_probability + year2012_probability
dicembre2012_probability
## [1] 0.2833333

6. Creazione di nuove variabili

Crea una nuova colonna che calcoli il prezzo medio degli immobili utilizzando le variabili disponibili.

Per ottenere il prezzo medio degli immobili andrei a sommare il valore di tutte le vendite (volume) e lo dividerei per il totale delle vendite effettutate (sales)

dati$mean_price <- data.frame((volume/sales)*1000000)

in questo modo abbiamo aggiunto una nuova colonna al dataset che rappresenta proprio il prezzo medio degli immobili.

Creiamo adesso una colonna che misuri l’efficacia degli annunci di vendita.

Misurare l’efficacia degli annunci attivi vuol dire calcolare il tempo impiegato a vendere tutti gli annunci attivi, pertanto ciò che farei è calcolare il numero totale degli annunci attivi sul numero totale di mesi impiegati per venderli. Da questo rapporto otterrò il numero totale di annunci venduti al mese. In questo modo ottengo una variabile confrontabile che mi permetterà di valutare quali annunci sono stati i più efficaci

dati$listings_effectiveness<-data.frame(listings/months_inventory)

In questo modo possiamo osservare l’efficacia degli annunci e metterle in relazione tra di loro. Ad esempio, il maggior numero di annunci venduti al mese è 329.2754 nel Dicembre del 2014 nella città di Tyler.

7. Analisi condizionata

Svolgiamo alcune analisi statistiche condizionate per città, anno e mese

#pacchetto dplyr
library(dplyr)
## 
## Caricamento pacchetto: 'dplyr'
## I seguenti oggetti sono mascherati da 'package:stats':
## 
##     filter, lag
## I seguenti oggetti sono mascherati da 'package:base':
## 
##     intersect, setdiff, setequal, union
#operatore pipe che ci permette di usare funzioni del pacchetto 
#senza creare oggetti intermedi

dati %>%
  group_by(city)%>%
  # calcoliamo gli indici
  summarise(media=mean(year),
            dev.st = sd(year))
## # A tibble: 4 × 3
##   city                  media dev.st
##   <chr>                 <dbl>  <dbl>
## 1 Beaumont               2012   1.43
## 2 Bryan-College Station  2012   1.43
## 3 Tyler                  2012   1.43
## 4 Wichita Falls          2012   1.43

Otteniamo un dataframe in cui troviamo per riga le modalità della variabile qualitativa city e per colonna le statistiche della variabile year

Rappresentiamo graficamente i risultati

ggplot(data=dati) +
  geom_boxplot(aes(x=city, y=year), fill="lightblue") +
  ggtitle("Analisi condizionata: City e Year") +
  theme(
    panel.background = element_blank(),
    axis.line = element_line(color = "black"),
    plot.background = element_rect(fill="white"),
    plot.title = element_text(hjust = 0.5)
  )

Calcoliamo adesso l’analisi condizionata per la variabile città e la variabile mese

dati %>%
  group_by(city)%>%
  summarise(media=mean(month),
            dev.st = sd(month))
## # A tibble: 4 × 3
##   city                  media dev.st
##   <chr>                 <dbl>  <dbl>
## 1 Beaumont                6.5   3.48
## 2 Bryan-College Station   6.5   3.48
## 3 Tyler                   6.5   3.48
## 4 Wichita Falls           6.5   3.48

otteniamo un dataframe in cui troviamo per riga le modalità della variabile qualitativa city e per colonna le statistiche della variabile month Rappresentiamo graficamente i risultati

ggplot(data=dati) +
  geom_boxplot(aes(x=city, y=month), fill="pink3") +
  ggtitle("Analisi condizionata: city e month") +
  theme(
    panel.background = element_blank(),
    axis.line = element_line(color = "black"),
    plot.background = element_rect(fill="white"),
    plot.title = element_text(hjust = 0.5)
  )

Optiamo adesso per un confronto multiplo tra città, mese e anno

ggplot(data=dati) +
  geom_boxplot(aes(y= year,
                   x= month,
                   fill= city))+
  ggtitle("Analisi condizionata: city, year e month") +
  theme(
    panel.background = element_blank(),
    axis.line = element_line(color = "black"),
    plot.background = element_rect(fill="white"),
    plot.title = element_text(hjust = 0.5)
  )

Ricapitolando quanto osservato fino ad ora:

La variabile year ha valori compresi tra il 2010 e il 2014, con una mediana di 2012 e una distribuzione uniforme dei dati nell’intervallo temporale.

La variabile month presenta valori da 1 a 12,con mediana 6.5 e una distribuzione uniforme.

La variabile city ha quattro modalità (Beaumont, Bryan-College Station, Tyler e Wichita Falls), ciascuna con la stessa frequenza (60 osservazioni per città).

Dall’analisi condizionata, e dai relativi boxplot creati, deduciamo che le tre variabili presentano ognuna una distribuzione uniforme, e tale caratteristica si riflette anche durante l’analisi condizionata multipla. Notiamo come per ogni città corrisponandano Q1 e Q3, la mediana coincida tra loro, come anche le code del boxplot. Da questo emerge che la frequenza della variabile city si mantiene costante nei mesi e negli anni. Possiamo quindi affermare che ci troviamo di fronte ad una distribuzione totalmente uniforme e che la rappresentazione ottenuta è esattamente quella attesa.

8. Creazione di visualizzazioni con ggplot2

Creiamo dei boxplot per confrontare la distribuzione del prezzo mediano tra le città.

ggplot(data=dati) +
  geom_boxplot(aes(x=city, 
                   y=median_price), 
               fill="violet") +
  labs(
    title = "Distribuzione del prezzo mediano tra le città",
    x = "Città",
    y = "Prezzo mediano"
  ) +
  theme(
    panel.background = element_blank(),
    axis.line = element_line(color = "black"),
    plot.title = element_text(hjust = 0.5)
  )

Analizziamo i singoli boxplot per poi confrontare le varie città e fare le nostre considerazioni statistiche.

Beaumont: Mediana intorno ai 125000, non divide a metà la scatola, è più vicina al terzo quartile, quindi la distribuzione è asimmetrica IQR abbastanza ampio, quindi c’è abbastanza variabilità dei prezzi La coda inferiore si estende intorno ai 100000 Outlier superiore, intorno a 160000

Bryan-College Station: Mediana intorno a 160000, anche qui la mediana non divide a metà la scatola, è più vicina al primo quartile IQR piuttosto stretto, quindi i prezzi si concentrano maggiormente intorno alla mediana La coda superiore si estende fino a 175000 Outlier superiore intorno a 180000

Tyler: Mediana intorno ai 140000, orientata verso il terzo quartile. IQR è più ampio rispetto alle altre due città, questo ci fa capire che la variabilità dei prezzi è maggiore. Le code si estendono simmetricamente, la distribuzione risulta quindi più simmetrica rispetto alle altre città Outliers non presenti

Wichita Falls: Mediana intorno ai 100000, la più bassa tra le città IQR esteso La coda inferiore si estende fino a 75000 Outlier superiore intorno a 135000

Considerazioni: Si evince che la città più accessibile risulta essere Wichita Falls, con mediana bassa e prezzi più concentrati. Al contrartio, Bryan-College Station e Tyler risultano le città più costose, presentando una mediana simile. Beaumont, invece, rappresenta una fascia intermedia.

Osservando, invece, la stabilità del mercato, possiamo dire che Beaumont e Tyler presentano il mercato più variabile, con prezzi alti e bassi. Bryan-College Station invece presenta il mercato più stabile, con prezzi molto elevati.

Grafici a barre per confrontare il totale delle vendite per mese e città.

ggplot(data = dati)+
  geom_bar(aes(x = month,
               y = sales,
               fill = city),
           stat = "identity", 
           position = "dodge") +
  labs(
    title = "Totale delle vendite per mese e città",
    x = "Mese",
    y = "Totale vendite",
    fill = "Città"
  ) +
  theme_minimal() +
  scale_x_continuous(breaks = seq(1,12,1))+
  scale_y_continuous(breaks = seq(0,500,50))+
  scale_fill_brewer(palette = "Set3")

Da questo grafico possiamo osservare che le vendite più alte sono state registrate durante il mese di Giugno per la città di Tyler, mentre le vendite più basse sono state registrate durante il mese di Febbraio per la città di Wichita Falls. Ovviamente possiamo fare dei confronti tra le varie città, ad esempio osserviamo che la città con un numero di vendite minore rispetto alle altre è Wichita Falls, oppure che la città con un numero di vendite maggiore rispetto alle altre è sicuramente Tyler, che viene superata nel numero di vendite da Bryan-College Station solo durante il mese di Luglio.

Line charts per confrontare l’andamento delle vendite in periodi storici differenti.

Per confrontare l’andamento delle vendite in periodi differenti possiamo aiutarci confrontando i valori medi delle vendite per ogni anno dal 2010 al 2014

#creiamo una variabile che rappresenti il numero medio delle vendite per ogni anno

media_vendite_per_anno <- dati %>%
  group_by(year) %>%
  summarise(media_sales = mean(sales, na.rm = TRUE))

# creiamo un line chart
ggplot(data = media_vendite_per_anno)+
  geom_line(aes(x=year, y = media_sales), col = "pink3", lwd= 2)+
  geom_point(aes(x=year, y = media_sales), col = "red", lwd = 3)+
  labs(
    x= "Anni",
    y = "Media vendite annuali",
    title= "Andamento delle vendite in anni differenti"
  )+
  geom_text(aes(x=year, 
                y = media_sales+5, 
                label= round(media_sales,1)),
            lwd = 2)+
  theme(
    panel.background = element_blank(),
    axis.line = element_line(color = "black")
  )+
  scale_x_continuous(breaks = seq(2010,2014,1))
## Warning in geom_point(aes(x = year, y = media_sales), col = "red", lwd = 3):
## Ignoring unknown parameters: `linewidth`
## Warning in geom_text(aes(x = year, y = media_sales + 5, label =
## round(media_sales, : Ignoring unknown parameters: `linewidth`

#creiamo una variabile che rappresenti il numero medio delle vendite per ogni mese

media_vendite_per_mese <- dati %>%
  group_by(month) %>%
  summarise(media_sales = mean(sales, na.rm = TRUE))

# creiamo un line chart
ggplot(data = media_vendite_per_mese)+
  geom_line(aes(x=month, y = media_sales), col = "pink3", lwd= 2)+
  geom_point(aes(x=month, y = media_sales), col = "red", lwd = 3)+
  labs(
    x= "Mesi",
    y = "Media vendite mensili",
    title= "Andamento delle vendite in mesi differenti"
  )+
  geom_text(aes(x=month, 
                y = media_sales+5, 
                label= round(media_sales,1)),
            lwd = 2)+
  theme(
    panel.background = element_blank(),
    axis.line = element_line(color = "black")
  )+
  scale_x_continuous(breaks = seq(1,12,1))
## Warning in geom_point(aes(x = month, y = media_sales), col = "red", lwd = 3):
## Ignoring unknown parameters: `linewidth`
## Warning in geom_text(aes(x = month, y = media_sales + 5, label =
## round(media_sales, : Ignoring unknown parameters: `linewidth`

Dalla rappresentazione grafica emerge un calo delle vendite medie dal 2010 al 2011,con un successivio aumento delle vendite medie dal 2011 in poi. Invece nella rappresentazione delle vendite medie mensili notiamo che il boom di vendita si ha nella stagione estiva, quindi da maggio ad agosto, con un calo netto delle vendite medie nel mese di settembre.

#Altri grafici per ulteriori osservazioni operative

#Utilizziamo un boxplot per confrontare la distribuzione del valore totale delle vendite tra le varie città ma anche tra i vari anni.

ggplot(data=dati) +
  geom_boxplot(aes(x=year, 
                   y=volume,
                     fill=city)) +
  labs(
    title = "Distribuzione del valore totale delle vendite tra città ed anni",
    x = "Anni",
    y = "Valore totale delle vednite(in milioni)"
  ) +
  theme_classic()+
  scale_x_continuous(breaks = seq(2010,2014,1))

Beaumont ha una distribuzione del valore totale delle vendite relativamente concentrata e una mediana piuttosto bassa rispetto ad altre città, indicando che il volume delle vendite è stabile ma non elevato. Bryan-College Station ha una maggiore variabilità, suggerendo che ci sono differenze significative nei valori totali delle vendite. La mediana è piuttosto alta tra le città analizzate,quindi ha un mercato molto attivo. Tyler ha una buona distribuzione con un volume elevato. Sebbene ci sia meno variabilità rispetto a Bryan-College Station, i valori totali delle vendite sono competitivi. Infine Wichita Fallsha la distribuzione più bassa tra tutte le città analizzate, con una mediana bassa e poca variabilità. Ciò indica un mercato meno dinamico o con meno crescita.

A livello temporale, possiamo dire che il 2011 mostra un mercato stabile con dei valori di vendita piuttosto nella media; il 2012 invece sembra essere un anno di picco, soprattutto per le città di Bryan-College Station e Tyler che si distinguono rispetto alle altre.

Possiamo notare che il valore totale delle vendite, a prescindere dal tempo, è più basso nella città di Wichita Falls. Infatti, nelle analisi precedenti, abbiamo osservato che risulta essere la città più accessibile con prezzi più concentrati.

Sempre dalla stessa analisi, era emerso che la città di Beaumont risultava essere quella con un mercato intermedio, con una fascia di prezzi nella media rispetto alle altre. Questa analisi conferma quanto affermato in precedenza, infatti possiamo notare che il valore totale delle vendite si mantiene nella media.

Le due città più costose, con un valore totale delle vendite più alto, risultano la città di Tyler e quella di Bryan-College Station.

Usare un grafico a barre sovrapposte per confrontare il totale delle vendite

nei vari mesi, sempre considerando le città

ggplot(data = dati)+
  geom_bar(aes(x = month,
               y = sales,
               fill = city),
           stat = "identity", 
           position = "stack") +
  labs(
    title = "Totale delle vendite per mese e città",
    x = "Mese",
    y = "Totale vendite",
    fill = "Città"
  ) +
  theme_minimal() +
  scale_x_continuous(breaks = seq(1,12,1))+
  scale_y_continuous(breaks = seq(0,5000,500))+
  scale_fill_brewer(palette = "Set3")

Ci permette di confrontare meglio quanto ogni città contribuisce alla vendita totale per ogni mese. Ad esempio, osserviamo che la maggior parte delle vendite per ogni mese è fornita dalla città di Tyòer e Bryan-College Station, mentre la città di Wichita Falls contribuisce meno alle vendite totali ogni mese.

Osserviamo anche la rappresentazione grafica a barre sovrapposte normalizzata

ggplot(data = dati)+
  geom_bar(aes(x = month,
               y = sales,
               fill = city),
           stat = "identity", 
           position = "fill") +
  labs(
    title = "Totale delle vendite per mese e città",
    x = "Mese",
    y = "Totale vendite",
    fill = "Città"
  ) +
  theme_minimal() +
  scale_x_continuous(breaks = seq(1,12,1))+
  scale_y_continuous(breaks = seq(0,1,0.1))+
  scale_fill_brewer(palette = "Set3")

In questo caso ogni barra è normalizzata, e questo ci consente di analizzare come le diverse città contribuiscono al totale delle vendite in termini di percentuali, in quanto ogni barra rappresenta il 100% del totale delle vendite per ogni mese. Ad esempio possiamo dire che la città che domina il totale delle vendite è la città di Tyler.

Proviamo ad aggiungere anche la variabile year per permetterci di confrontare il totale delle vendite di ogni città per ogni mese dei rispettivi anni.

ggplot(data = dati)+
  geom_bar(aes(x = month,
               y = sales,
               fill = city),
           stat = "identity", 
           position = "fill") +
  labs(
    title = "Totale delle vendite per mese e città",
    x = "Mese",
    y = "Totale vendite",
    fill = "Città"
  ) +
  theme_minimal() +
  scale_x_continuous(breaks = seq(1,12,1))+
  scale_y_continuous(breaks = seq(0,1,0.1))+
  scale_fill_brewer(palette = "Set3")+
  facet_wrap(~ year)

Osservazioni finali:

Dalle varie analisi svolte possiamo giungere alla conclusione che il mercato immobiliare del Texas ha subito una forte impennata di vendite nel 2012, con un mercato in continuo aumento fino al 2014. Questo potrebbe essere dovuto all’efficacia delle inserzioni immobiliari utilizzate in quell’arco temporale, pertanto sembra che dal 2012 in poi sia cambiata la strategia di marketing adottata per la creazione delle inserzioni immobiliari e quindi consiglierei di continuare ad adottare quel tipo di strategia.

Dal punto di vista del mercato, è possibile soddisfare le esigenze di un vasto target di clientela. Infatti, troviamo città molto economiche come Wachita Falls, che quindi si adattano tranquillamente a qualsiasi fascia economica. A seguire, troviamo un mercato immobliare di fascia medio-bassa, ovvero il mercato immobiliare di Beaumont. Per una clientela che appartiene ad una fascai economica medio-alta troviamo sicurmanente le città di Tyler e Bryan-College Station, per le quali è possibile trovare anche soluzioni immobiliari di lusso, che quindi “sforano” la fascia medio-alta del mercato.

Sicuramente, si potrebbe puntare ad una crescita della città di Wachita Falls, che sembra essere la città che meno ha risentito dell’efficacia adottata nelle strategie di marketing dedicate alle inserzioni immobiliari. Quello che farei è adottare una strategia diversa, valorizzando i prezzi molto bassi degli immobili di quella città, cercando di aumentare il numero di richieste e quindi di vendite.

Un alto aspetto che non è passato in osservato è come il numero totale delle vendite aumenti durante la stagione estiva,sopratutto nelle due città più ricche analizzate. Pertanto andrei a studiare con ulterioridati e variabili, il motivo per il quale questo avviene e rafforzerei la strategia di marketing adottata.