Nota: Assicurarsi di aver installato i seguenti pacchetti prima di eseguire questo documento: ggplot2, modeest, dplyr, moments, rmarkdown, knitr.

Informazioni sul Dataset

Il dataset caricato presenta le seguenti variabili:

Pulisco l’area di lavoro per non avere oggetti passati in memoria

rm(list = ls())

Imposto un seme, per ottenere gli stessi risultati

set.seed(13)

Importo nell’ambiente i pacchetti scaricati

library(ggplot2) # Per la visualizzazione grafica

library(modeest) # Per calcolare la moda

library(dplyr) # Per manipolare gli oggetti
## 
## 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
library(moments) # Per calcolare i momenti 3 e 4 di una variabile
## 
## Caricamento pacchetto: 'moments'
## Il seguente oggetto è mascherato da 'package:modeest':
## 
##     skewness
library(rmarkdown)

library(knitr)

Definisco le funzioni che mi serviranno successivamente per capire le variabili

# Calcola la frequenza relativa e assoluta per una variabile data
calcola_frequenza <- function(x) {
  
  # Calcola la lunghezza del vettore  
  n = length(x)
  # Calcola la frequenza assoluta
  ni = table(x)
  # Calcola la frequenza relativa
  fi = ni / n
  # Calcola la funzione di ripartizione assoluta
  NI = cumsum(ni)
  # Calcola la funzione di ripartizione relativa
  FI = cumsum(fi)
  
  # Unisco le frequenze e le trasformo in un data frame
  frequenza <- as.data.frame(
                            cbind(
                              ni,
                              fi,
                              NI,
                              FI
                              )
)
  
  # ritorno il dataframe ottenuto
  return(frequenza)
  
}

# Calcola il coefficiente di variazione 
CV <- function(x) {
  
  # sigma/mu * 100
  return (sd(x) / mean(x) * 100)

}

calcolo_indice_Gini <- function(x) {
  
  # Calcola frequenza assoluta
  ni = table(x)
  # Calcola frequenza relativa
  fi = ni / length(x)
  # Seleziona quante modalità ha la variabile
  J = length(
            table(x)
      )
  # Calcola indice di gini
  gini = 1 - sum(fi ^ 2)
  # Normalizza tra 0 e 1 l'indice di gini per semplificarne l'interpretazione
  gini_normalizzato = gini / (J - 1) / J
  
  # Ritorna l'indice di gini normalizzato
  return(gini_normalizzato)

}


calcola_media_armonica <- function(x) {
  
  n = length(x)
  return (n / sum(1 / x))
  
  
}

Carico la cartella di lavoro dove sono contenuti i dati

setwd("C:/Users/simon/OneDrive/Desktop/Progetto_Statistica_Descrittiva") 
getwd() # assicurarsi che il percorso sia corretto
## [1] "C:/Users/simon/OneDrive/Desktop/Progetto_Statistica_Descrittiva"

DESCRIZIONE DEL PROGETTO

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.

OBIETTIVI DEL PROGETTO

Identificare e interpretare i trend storici delle vendite immobiliari in Texas. Valutare l’efficacia delle strategie di marketing delle inserzioni immobiliari. Offrire una rappresentazione grafica dei dati che evidenzi la distribuzione dei prezzi e delle vendite tra città, mesi e anni.

Carico i dati

dati <- read.csv("realestate_texas.csv")

head(dati,5) # verifico importazione dei dati
##       city year month sales volume median_price listings months_inventory
## 1 Beaumont 2010     1    83 14.162       163800     1533              9.5
## 2 Beaumont 2010     2   108 17.690       138200     1586             10.0
## 3 Beaumont 2010     3   182 28.701       122400     1689             10.6
## 4 Beaumont 2010     4   200 26.819       123200     1708             10.6
## 5 Beaumont 2010     5   202 28.833       123100     1771             10.9

1. ANALISI DELLE VARIABILI

Identificherò e descriverò il tipo di variabili statistiche presenti nel dataset.

Valuterò come gestire le variabili che sottintendono una dimensione tempo e

commenterò sul tipo di analisi che può essere condotta su ciascuna variabile.

Esamino i tipi delle variabili presenti

str(dati)
## 'data.frame':    240 obs. of  8 variables:
##  $ city            : chr  "Beaumont" "Beaumont" "Beaumont" "Beaumont" ...
##  $ year            : int  2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 ...
##  $ month           : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ sales           : int  83 108 182 200 202 189 164 174 124 150 ...
##  $ volume          : num  14.2 17.7 28.7 26.8 28.8 ...
##  $ median_price    : num  163800 138200 122400 123200 123100 ...
##  $ listings        : int  1533 1586 1689 1708 1771 1803 1857 1830 1829 1779 ...
##  $ months_inventory: num  9.5 10 10.6 10.6 10.9 11.1 11.7 11.6 11.7 11.5 ...

Analisi variabile per variabile

CITY

city Indica la città di riferimento

Variabile qualitativa su scala nominale

Assume 4 modalità (Beaumont, Bryan-College Station, Tyler e Wichita Falls)

Le modalità sono perfettamente bilanciate con le stesso numero di osservazioni

essere interessante vedere se ci sono città più costose e altre meno.

# tabella con i conteggi per ogni modalità
table(dati$city)
## 
##              Beaumont Bryan-College Station                 Tyler 
##                    60                    60                    60 
##         Wichita Falls 
##                    60
# Numero di modalità 
length(
      table(dati$city)
)
## [1] 4

YEAR

year: Indica l’anno di riferimento

Variabile quantitativa su scala discreta o variabile qualitativa su scala ordinale

Modalità (2010, 2011, 2012, 2013, 2014)

Può essere interessante verificare se con il passare degli anni sono aumentati i prezzi

table(dati$year)
## 
## 2010 2011 2012 2013 2014 
##   48   48   48   48   48
length(
      table(dati$year)
)
## [1] 5

MONTHS

months: indica il mese di riferimento

E’una variabile qualitativa su scala ordinale

Con modalità Da 1 a 12 (corrispondenti a Gennaio, …, Dicembre)

Può essere interessante verificare se ci sono alcuni mesi dell’anno

più costosi di altri(vicini ai periodi di festa o in certe stagioni)

table(dati$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
length(
      table(dati$month)
)
## [1] 12

SALES

sales: indica numero totale di vendite

Variabile quantitativa su scala discreta

Insieme a city per vedere quale città è più attrattiva

table(dati$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

VOLUME

volume: indica il valore totale delle vendite (in milioni di dollari)

Variabile quantitativa su scala continua

Insieme a city e year per vedere: quali città fatturano di più e gli anni più redditizi

table(dati$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

——————— MEDIAN_PRICE ——————————————

median_price: indica il prezzo mediano di vendita (in dollari)

Variabile quantitativa su scala discreta

table(dati$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

LISTINGS

listings: indica il numero totale di annunci attivi

Variabile quantitativa su scala discreta

Vedere se il numero di vendite è proporzionale al numero di annunci attivi

table(dati$listings)
## 
##  743  746  774  777  796  801  812  821  830  838  844  850  852  854  859  861 
##    1    1    1    1    1    1    1    1    1    1    2    1    1    1    1    1 
##  868  870  877  882  887  895  899  900  902  904  905  907  908  914  915  923 
##    1    1    1    1    1    1    1    1    1    1    1    2    1    2    1    1 
##  931  933  934  938  940  941  946  950  955  961  963  968  972  973  993  996 
##    1    1    1    1    1    2    1    1    1    1    1    2    1    2    1    1 
## 1004 1005 1016 1022 1028 1029 1030 1031 1041 1052 1057 1132 1152 1155 1199 1201 
##    1    2    1    2    1    1    1    1    1    1    1    1    1    1    1    1 
## 1212 1218 1261 1271 1298 1362 1385 1416 1439 1442 1445 1458 1462 1480 1486 1492 
##    1    1    1    1    1    1    2    1    1    2    1    1    1    1    2    1 
## 1498 1500 1501 1510 1518 1530 1533 1534 1536 1539 1544 1549 1562 1567 1570 1575 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    2 
## 1577 1581 1586 1588 1596 1599 1604 1613 1617 1620 1624 1634 1636 1646 1647 1652 
##    1    3    1    1    1    2    1    1    1    2    1    1    1    2    1    1 
## 1655 1657 1659 1662 1666 1669 1671 1672 1675 1677 1680 1681 1683 1687 1689 1691 
##    1    1    1    1    1    1    1    1    2    1    1    1    1    1    1    1 
## 1696 1704 1708 1722 1723 1724 1730 1734 1735 1742 1749 1750 1758 1762 1765 1767 
##    1    1    2    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 1771 1779 1785 1789 1793 1803 1806 1822 1829 1830 1832 1833 1834 1840 1845 1857 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 1984 2272 2460 2500 2602 2609 2625 2633 2658 2666 2696 2701 2720 2727 2729 2737 
##    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1    1 
## 2744 2763 2778 2788 2791 2811 2830 2852 2855 2857 2868 2875 2876 2878 2897 2917 
##    1    1    1    1    1    1    1    2    1    1    1    1    1    1    1    1 
## 2920 2938 2940 2946 2953 2981 2986 2998 3014 3041 3042 3056 3072 3094 3101 3156 
##    1    1    1    1    2    1    1    1    1    1    2    1    1    1    1    1 
## 3175 3196 3218 3256 3263 3266 3267 3272 3294 3296 
##    1    1    1    1    1    1    1    1    1    1

MONTHS_INVENTORY

months_inventory: indica la quantità di tempo necessaria per vendere tutte le inserzioni correnti, espresso in mesi Variabile quantitativa su scala continua Anche qua valutare come negli anni sia cresciuta la promozione pubblicitaria

table(dati$months_inventory)
## 
##  3.4  3.8    4  4.1  4.4  4.5  4.8  4.9    5  5.2    6  6.1  6.3  6.4  6.6  6.7 
##    1    1    3    1    1    1    1    1    5    1    1    3    1    2    1    1 
##  6.9    7  7.1  7.2  7.3  7.4  7.5  7.6  7.7  7.8  7.9    8  8.1  8.2  8.3  8.4 
##    2    3    5    4    3    2    5    7    2    7    7    7   10    1    4    5 
##  8.5  8.6  8.7  8.8  8.9    9  9.1  9.2  9.3  9.4  9.5  9.6  9.7  9.9   10 10.1 
##    4    4    6    4    3    7    6    3    3    6    3    1    2    2    4    1 
## 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 
##    3    1    3    3    4    3    3    2    4    2    5    4    2    7    5    1 
## 11.9   12 12.2 12.3 12.4 12.6 12.7   13 13.3 13.4 13.5 13.8   14 14.5 14.6 14.9 
##    1    4    1    3    3    2    1    3    2    2    1    2    1    2    1    1

2. INDICI DI POSIZIONE, VARIABILITA’ E FORMA

Calcolerò indici di posizione, variabilità e forma per tutte le variabili

per le quali ha senso farlo;

Per le altre creerò una distribuzione di frequenza.

Infine, commenterò brevemente i risultati.

INDICI DI POSIZIONE:

Indici che descrivono in sintesi la distribuzione dei dati:

Moda : il valore con il maggior numero di occorrenze

Media: Il valore medio

Mediana: Ordinata una sequenza in ordine crescente, è il valore che divide a metà

INDICI DI VARIABILITA’:

Misura la tendenza delle unità ad assumere diversi valori o modalità

Come? Misurando la distanza tra due valori della distribuzione o di modalità osservate

Varianza: la dispersione dei dati attorno alla media.

Deviazione standard: la radice quadrata della varianza per riportare il valore

alla stessa unità di misura della variabile

Range: La differenza tra il valore massimo e minimo, indica lo spazio in cui si

distribuiscono i dati

Primo quantile: Il 25% delle osservazioni ha avuto un numero pari o inferiore

a questo valore.

Terzo quantile: Il 25% delle osservazioni ha avuto un numero superiore a questo valore

IQR: Il 50% centrale delle osservazioni si trova in un intervallo dato dalla differenza

tra terzo e primo quartile

indice di gini normalizzato : Misura la propensione di una variabile,

ad assumere le sue diverse modalità

G = 0 eterogeneità nulla (O omogeneità)

G = 1 eterogeneità massima (O equidistribuzione)

INDICI DI FORMA:

Asimmetria di Fisher

Si indica con Y1:

Y1 = 0 distribuzione simmetrica, è possibile indiduare un asse verticale che tagli la

distribuzione in due parti specularmente uguali. Segue media=mediana=moda

Y1 > 0 distribuzione asimmetrica positiva. Segue media>mediana>moda

Y1 < 0 distribuzione asimmetrica negativa. Segue media<mediana<moda

Curtosi

Misura di allungamento/schiacciamento della forma di una distribuzione rispetto

alla distribuzione normale

Si indica con Y2:

Y2 = 0 mesocurtica, coincide con la normale

Y2 > 0 leptocurtica più allungata rispetto alla normale

Y2 < 0 platicurtica più appiattita rispetto alla normale

CITY

La distribuzione presenta 4 modalità, ciascuna con frequenza pari a 60 osservazioni, configurandosi quindi come una distribuzione quadrimodale. Essendo una variabile qualitativa nominale, non è possibile calcolare altri indici di posizione, come la media (in quanto non numerica), non avendo un ordine proprio nemmeno la mediana.

# INDICE DI POSIZIONE 
modeest::mlv(
             dati$city,
             method = 'mfv'
)
## [1] "Beaumont"              "Bryan-College Station" "Tyler"                
## [4] "Wichita Falls"
# Calcolo la frequenza assoluta e relativa per city

frequenza_city <- calcola_frequenza(dati$city)

print(frequenza_city) 
##                       ni   fi  NI   FI
## Beaumont              60 0.25  60 0.25
## Bryan-College Station 60 0.25 120 0.50
## Tyler                 60 0.25 180 0.75
## Wichita Falls         60 0.25 240 1.00

INDICE DI VARIABILITA’

Nel caso osservato, otteniamo un valore dell’indice di Gini (normalizzato) pari a 0.06, vicino allo zero, indicazione di eterogeità scarsa

calcolo_indice_Gini(dati$city)
## [1] 0.0625

SALES ——————————————–

INDICI DI POSIZIONE

Sales ha un valore modale di 124. Il valore medio invece risulta 192, cioè in media, ci sono 192 vendite, potremmo avere qualche vendità più alta, qualche più bassa mentre il valore mediano è pari a 175.5

modeest::mlv(
             dati$sales,
             method = 'mfv'
) 
## [1] 124
mean(dati$sales) 
## [1] 192.2917
median(dati$sales)
## [1] 175.5

INDICI DI VARIABILITA’

La varianza è di 6344, calcolando la radice quadratica

otteniamo una deviazione standard di 79.6,

cioè la maggior parte delle volte il numero di vendite sarà vicino alla media

qualche volta si discosterà di +- 79.6

var(dati$sales) 
## [1] 6344.3
sd(dati$sales) 
## [1] 79.65111
# Intervallo di variazione(o Range)  

# I dati si distribuiscono tra il massimo ed il minimo, su un range di 344

max(dati$sales) - min(dati$sales) # 344 
## [1] 344
#  Primo interquantile: Il 25% delle vendite ha avuto un numero di vendite pari
#  o inferiore a 127.

summary(dati$sales)[2]
## 1st Qu. 
##     127
# Il terzo interquantile: Il 25% delle vendite ha avuto un numero di vendite superiore a 247.

summary(dati$sales)[5] # 247
## 3rd Qu. 
##     247
# sottraendo il terzo e il primo quantile,
# ottengo IQR. Il quale mi dice il 50% (centrale) dei dati sulle vendite  si trova
# in un intervallo di 120 unità (tra 127 e 247 vendite).


IQR(dati$sales)
## [1] 120

INDICI DI FORMA

asimmetria di fisher

Y1 = 0.72 > 0 quindi distribuzione asimmetrica positiva in accordo con questo, abbiamo che la media > mediana > moda

Questo si traduce che la coda dei dati meno frequenti si estende verso destra (valori alti) Quindi abbiamo una maggiore concentrazione di valori medio bassi e pochi alti che portano su la media

skewness(dati$sales)
## [1] 0.718104

indice curtosi (tolgo 3 per centrarlo sullo zero)

Y2 = -0.31 < 0 quindi abbiamo che è platicurtica, cioè è più appiattita rispetto alla Normale. Questo si traduce che abbiamo meno valori vicino alla media (come invece accade con una Normale). Inoltre guardando alle code abbiamo una diminuizione più rapida man mano che ci allontaniamo dalla media cioè valori alti e bassi sono meno probabili di quanto ci aspetterebbe da una normale

kurtosis(dati$sales) - 3 
## [1] -0.3131764

L’analisi visiva della densità della distribuzione delle vendite rivela un quadro più dettagliato rispetto ai soli indici di forma. Sebbene l’asimmetria positiva indichi una coda più lunga a destra, la rapida discesa della curva dopo la media suggerisce che i valori di vendita molto elevati, quindi una tendenza verso volumi di vendita inferiori, con episodi occasionali di vendite più elevate che spostano la media verso l’alto

plot(
  density(dati$sales)
)

abline(
  v = mean(dati$sales)
)

————————– VOLUME ————————————————

INDICI DI POSIZIONE

La variabile volume indica che abbiamo una distribuzione trimodale, con valori rispettivamente 14, 35 e 42.5

modeest::mlv(
             dati$volume,
             method = 'mfv'
)
## [1] 14.003 35.335 42.553
# Il vlore medio è di 31 


mean(dati$volume)
## [1] 31.00519
# Il vlore mediano è di 27 


median(dati$volume) 
## [1] 27.0625

INDICI DI VARIABILITA’

var(dati$volume) # 277
## [1] 277.2707
sd(dati$volume) # 16.65
## [1] 16.65145
max(dati$volume) - min(dati$volume) # 75.4 
## [1] 75.381
summary(dati$volume)[2]
## 1st Qu. 
## 17.6595
summary(dati$volume)[5]
## 3rd Qu. 
##  40.893
IQR(dati$volume)
## [1] 23.2335

INDICI DI FORMA

distribuzione asimmetrica positiva in accordo con questo, abbiamo media > mediana > moda

skewness(dati$volume) # Y1= 0.88 > 0
## [1] 0.884742

Y2 > 0 quindi abbiamo che è leptocurtica, più allungata rispetto alla Normale Abbiamo i dati più concentrati attorno alla media ed inoltre abbiamo una probabilità maggiore di incontrare valori alti o bassi rispetto alla media di quanto si avrebbe rispetto ad una normale

# curtosi
kurtosis(dati$volume) - 3 # Y2=0.17 > 0
## [1] 0.176987
plot(
  density(dati$volume)
)

abline(
  v = mean(dati$volume)
)

—————————–MEDIAN_PRICE ——————————-

INDICI DI POSIZIONE

modeest::mlv(
             dati$median_price,
             method = 'mfv'
) # 130000
## [1] 130000
mean(dati$median_price) # 132665
## [1] 132665.4
median(dati$median_price) # 134500
## [1] 134500

INDICI DI VARIABILITA’

var(dati$median_price) # 513572983
## [1] 513572983
sd(dati$median_price) # 22662
## [1] 22662.15
max(dati$median_price) - min(dati$median_price) # 75 
## [1] 106200
summary(dati$median_price)[2]
## 1st Qu. 
##  117300
summary(dati$median_price)[5]
## 3rd Qu. 
##  150050
IQR(dati$median_price)
## [1] 32750

INDICI DI FORMA

Y1 < 0 distribuzione asimmetrica negativa

in accordo con questo, abbiamo moda > mediana > media

Questo indica che abbiamo valori bassi meno frequenti che abbassano la media

(coda sinistra allungata)

rispetto ai valori più alti della media che sono frequenti

skewness(dati$median_price) # Y1= -0.36
## [1] -0.3645529

Y2 < 0 quindi abbiamo che è platicurtica, più appiatita rispetto alla Normale

kurtosis(dati$median_price) - 3 # Y2=-0.62
## [1] -0.6229618
plot(
  density(dati$median_price)
)

abline(
  v = mean(dati$median_price)
)

LISTINGS

INDICI DI POSIZIONE

modeest::mlv(
             dati$listings,
             method = 'mfv'
) # 1581
## [1] 1581
mean(dati$listings) # 1738
## [1] 1738.021
median(dati$listings) # 1618
## [1] 1618.5

INDICI DI VARIABILITA’

var(dati$listings) # 566569
## [1] 566569
sd(dati$listings) # 752.7
## [1] 752.7078
max(dati$listings) - min(dati$listings) # 2553 
## [1] 2553
summary(dati$listings)[2]
## 1st Qu. 
##  1026.5
summary(dati$listings)[5]
## 3rd Qu. 
##    2056
IQR(dati$listings)
## [1] 1029.5

INDICI DI FORMA

Y1 > 0 distribuzione asimmetrica positiva

in accordo con questo, abbiamo media > mediana > moda

skewness(dati$listings) # Y1= 0.65 
## [1] 0.6494982

quindi abbiamo che è platicurtica, più appiatita rispetto alla Normale

kurtosis(dati$listings) - 3 # Y2=-0.79 < 0
## [1] -0.79179
plot(
  density(dati$listings)
)

abline(
  v = mean(dati$listings)
)

MONTH_INVENTORY

INDICI DI POSIZIONE

modeest::mlv(
            dati$months_inventory,
            method = 'mfv'
) # 8.1
## [1] 8.1
mean(dati$months_inventory) # 9.1
## [1] 9.1925
median(dati$months_inventory) # 8.9
## [1] 8.95

INDICI DI VARIABILITA’

var(dati$months_inventory) # 5.3
## [1] 5.306889
sd(dati$months_inventory) # 2.3
## [1] 2.303669
max(dati$months_inventory) - min(dati$months_inventory) # 11.5 
## [1] 11.5
summary(dati$months_inventory)[2] # 7.8
## 1st Qu. 
##     7.8
summary(dati$months_inventory)[5] # 10.95
## 3rd Qu. 
##   10.95
IQR(dati$months_inventory) # 3.15
## [1] 3.15

INDICI DI FORMA

Y1 circa uguale 0, quasi simmetrica

skewness(dati$months_inventory) # Y1 = 0.04
## [1] 0.04097527

Y2 < 0 quindi abbiamo che è platicurtica, più appiatita rispetto alla Normale

kurtosis(dati$months_inventory) - 3 # Y2=-0.17 
## [1] -0.1744475

Visualizzazione grafica della densità della variabile months_inventory

plot(
  density(dati$months_inventory)
)

abline(
  v = mean(dati$months_inventory)
)

3. Identificazione delle variabili con maggiore variabilità e asimmetria

Determina: Qual è la variabile con la più alta variabilità Qual è la variabile con la distribuzione più asimmetrica Spiega come sei giunto a queste conclusioni e fornisci considerazioni statistiche.

Calcolo il coefficiente di variazione per poter confrontare le variaiblità tra variabili con scala diversa

CV(dati$sales) # 41
## [1] 41.42203
CV(dati$volume) # 53
## [1] 53.70536
CV(dati$median_price) # 17
## [1] 17.08218
CV(dati$listings) # 43
## [1] 43.30833
CV(dati$months_inventory) # 25  
## [1] 25.06031

La variabile con più alta variabilità è dati$volume con un valore del 53%

ed è anche la variabile con la più alta asimmetria pari a 0.88

——————————————————————————-

——————————————————————————-

4. Creazione di classi per una variabile quantitativa

Seleziono una variabile quantitativa (median_price) e la suddivido in classi. Creo una distribuzione di frequenze e rappresento i dati con un grafico a barre. Calcolo l’indice di eterogeneità Gini e discuti i risultati.

# Calcola l'ampiezza ottimale della classe (Freedman-Diaconis)
ampiezza_classe <- 2 * IQR(dati$median_price) /
                  (length(dati$median_price) ^ (1/3))

# Calcola il numero di classi approssimativo
num_classi <- (max(dati$median_price) - min(dati$median_price)) /
              ampiezza_classe

# Crea i punti di interruzione delle classi usando seq()
punti_interruzione_fd <- seq(
  from = min(dati$median_price),
  to = max(dati$median_price),
  by = ampiezza_classe
)

dati$class_median_price_fd <- cut(
                                  dati$median_price,
                                  breaks = punti_interruzione_fd,
                                  include.lowest = TRUE,
                                  right = FALSE
)

table(dati$class_median_price_fd)
## 
## [7.38e+04,8.43e+04) [8.43e+04,9.49e+04) [9.49e+04,1.05e+05) [1.05e+05,1.16e+05) 
##                   2                  15                  24                  16 
## [1.16e+05,1.26e+05) [1.26e+05,1.37e+05) [1.37e+05,1.48e+05) [1.48e+05,1.58e+05) 
##                  26                  48                  34                  49 
## [1.58e+05,1.69e+05) [1.69e+05,1.79e+05] 
##                  17                   8
# Calcolo della frequenza per la classe appena creata
frequenza_class_median_price_fd <- calcola_frequenza(dati$class_median_price_fd)

# Calcola i punti medi delle classi
punti_medi_classi_fd <- (
                        punti_interruzione_fd[-length(punti_interruzione_fd)] +
                        punti_interruzione_fd[-1]) /
                        2

# Calcola la media ponderata
media_ponderata_prezzo_fd <- weighted.mean(
                                          punti_medi_classi_fd,
                                          frequenza_class_median_price_fd$ni
)

media_ponderata_prezzo_fd # 132431
## [1] 132431.1
# Grafico a barre sulla classe creata
barplot(frequenza_class_median_price_fd$fi,
        
        main = "Distribuzione di frequenza assoluta delle classi di prezzo mediano",
        xlab = "Classi di prezzo",
        ylab = "Frequenza relativa",
        col = "skyblue",
        border = "black",
        ylim = c(0, 1),
        names.arg = rownames(frequenza_class_median_price_fd),
        las = 2)

# la classse 6 e 8 risultano con la frequenza maggiore
# Calcolo indice di gini
calcolo_indice_Gini(dati$class_median_price_fd)
## [1] 0.009577353
# indicando scarsa eterogeneità tra le modalità

——————————————————————————-

——————————————————————————-

5. Calcolo della probabilità

Qual è la probabilità che, presa una riga a caso di questo dataset, essa riporti la città “Beaumont”? # P(Evento = ‘Beaumont’) = casi favorevoli / casi possibili = 60 / 240 = 0.25 = 25% # Il 25% di pescare Beaumont

prob_beaumont <- sum(dati$city == "Beaumont") / length(dati$city)

prob_beaumont
## [1] 0.25

E la probabilità che riporti il mese di Luglio?

prob_luglio <- sum(dati$month == 7) / length(dati$month)

prob_luglio
## [1] 0.08333333
# assume una probabilità del 8.3%

E la probabilità che riporti il mese di dicembre 2012?

prob_12_2012 <- sum(
                    dati$month == 12 & dati$year == 2012
                    ) / 
                        length(dati$month)

prob_12_2012 # assume una probabilità del 1.6%
## [1] 0.01666667

6. Creazione di nuove variabili

Creo una nuova colonna che calcoli il prezzo medio degli immobili utilizzando le variabili disponibili. Creo una colonna che misuri l’efficacia degli annunci di vendita. Commento e discuto i risultati.

Creiamo la variabile prezzo_medio che è stata ottenuta facendo il rapporto dell’ammontare in dollari dalla vendita e il totale delle vendite. Un valore alto indicherà E’ una variabile quantitativa su scala continua

dati$prezzo_medio <- (dati$volume) * 1000000 / dati$sales

table(dati$prezzo_medio)
## 
## 97010.2040816326 97847.6190476191 99948.4536082474 100573.033707865 
##                1                1                1                1 
##           102075 102782.608695652 103098.901098901 105125.786163522 
##                1                1                1                1 
##  107039.37007874 108157.303370787 109064.516129032 109227.272727273 
##                1                1                1                1 
## 110192.592592593 110721.518987342           111008  111793.81443299 
##                1                1                1                1 
## 112965.517241379 112966.386554622 113845.528455285 116049.382716049 
##                1                1                1                1 
## 117396.396396396 117729.927007299 117791.666666667 117884.615384615 
##                1                1                1                1 
## 118019.801980198 118395.209580838 118548.672566372 118798.076923077 
##                1                1                1                1 
## 118855.555555556      119398.4375 120172.043010753 120398.230088496 
##                1                1                1                1 
## 120713.333333333 121086.021505376  122068.62745098 122141.891891892 
##                1                1                1                1 
## 122191.489361702 122354.430379747 122469.696969697 122690.909090909 
##                1                1                1                1 
## 123366.071428571 123755.102040816 123806.666666667 124126.315789474 
##                1                1                1                1 
## 124405.594405594           124480 124810.606060606 124911.290322581 
##                1                1                1                1 
## 125409.395973154 125555.555555556      125804.6875 126153.153153153 
##                1                1                1                1 
## 126551.515151515 126929.824561404 127376.146788991 127378.571428571 
##                1                1                1                1 
## 127496.296296296 128487.603305785 132153.846153846 132354.166666667 
##                1                1                1                1 
## 133133.858267717           134095  135543.47826087 136291.390728477 
##                1                1                1                1 
## 136519.607843137 136627.659574468 136869.230769231  137650.34965035 
##                1                1                1                1 
## 138451.219512195 138472.222222222 138975.806451613 141395.061728395 
##                1                1                1                1 
## 141709.844559586 141795.454545455 142737.623762376 142752.747252747 
##                1                1                1                1 
## 142871.559633028           143464  143479.72972973 143915.966386555 
##                1                1                1                1 
## 143974.747474747 144015.873015873 144747.252747253 144836.477987421 
##                1                1                1                1 
## 144908.571428571 145040.229885057 145100.961538462 145102.409638554 
##                1                1                1                1 
##           145300 145574.193548387 146043.010752688 146068.181818182 
##                1                1                1                1 
## 146101.694915254 146132.947976879 147202.797202797 148373.983739837 
##                1                1                1                1 
## 148651.515151515  148775.19379845 148988.700564972 149345.528455285 
##                1                1                1                1 
## 149601.941747573  149879.62962963           150000  150043.47826087 
##                1                1                1                1 
## 150213.017751479           150300 150350.393700787 151544.715447154 
##                1                1                1                1 
##           151816 151938.356164384 152726.872246696 153091.370558376 
##                1                1                1                1 
## 153481.132075472 153948.717948718 154693.333333333 155109.243697479 
##                1                1                1                1 
##        155756.25  156357.75862069 156368.421052632  156464.08839779 
##                1                1                1                1 
## 156712.871287129 157217.557251908 157396.153846154 157490.322580645 
##                1                1                1                1 
## 157697.802197802 157745.535714286 157955.696202532 157970.085470085 
##                1                1                1                1 
## 158461.240310078 158846.534653465        159293.75           159360 
##                1                1                1                1 
## 159588.709677419 159653.465346535 160051.383399209 160157.142857143 
##                1                1                1                1 
## 160509.803921569         160712.5  161309.85915493  161453.90070922 
##                1                1                1                1 
## 161566.326530612  161577.85467128 162029.045643154 162148.936170213 
##                1                1                1                1 
## 162442.804428044 162820.105820106 162857.868020305 163796.296296296 
##                1                1                1                1 
## 164438.679245283 164892.086330935         165437.5 165694.630872483 
##                1                1                1                1 
##  165919.58041958 165993.827160494 166055.793991416 166476.987447699 
##                1                1                1                1 
## 166513.812154696  166962.18487395 167153.354632588 167294.915254237 
##                1                1                1                1 
## 168188.854489164 168225.352112676 168316.205533597 169187.022900763 
##                1                1                1                1 
## 169318.611987382 169352.941176471 170168.269230769  170235.95505618 
##                1                1                1                1 
## 170344.086021505 170515.418502203 170626.506024096 170798.507462687 
##                1                1                1                1 
## 170856.368563686 171327.731092437 171790.780141844 171836.177474403 
##                1                1                1                1 
##  172530.24911032 172557.195571956 173574.468085106 173760.204081633 
##                1                1                1                1 
##           174380 174397.540983607 174723.926380368           175680 
##                1                1                1                1 
## 175904.761904762 175987.704918033 177008.130081301 178045.296167247 
##                1                1                1                1 
## 178223.602484472 178574.394463668 178818.791946309 179240.963855422 
##                1                1                1                1 
## 179434.782608696 179851.752021563 180492.307692308 181064.171122995 
##                1                1                1                1 
## 181157.216494845 181260.273972603 181647.798742138 182564.885496183 
##                1                1                1                1 
## 183082.901554404 183287.272727273 183831.325301205 183969.325153374 
##                1                1                1                1 
## 183981.308411215 184083.044982699 184148.148148148           185100 
##                1                1                1                1 
##  185142.38410596 187324.324324324 187611.940298507 188385.245901639 
##                1                1                1                1 
## 188894.736842105  189343.28358209 189354.838709677 189775.735294118 
##                1                1                1                1 
## 190426.592797784 190832.214765101 191049.645390071 191212.765957447 
##                1                1                1                1 
## 191220.973782772  191797.54601227  193786.74351585 193796.052631579 
##                1                1                1                1 
## 194387.195121951 194888.888888889 195078.431372549 195387.096774194 
##                1                1                1                1 
## 199885.630498534 199937.293729373 200085.365853659           201000 
##                1                1                1                1 
##  202424.92917847 203486.577181208 206526.627218935 206851.458885942 
##                1                1                1                1 
## 207312.655086849 207941.176470588           212765 213233.944954128 
##                1                1                1                1
modeest::mlv(
  dati$prezzo_medio,
  method = 'mfv'
)
##   [1]  97010.20  97847.62  99948.45 100573.03 102075.00 102782.61 103098.90
##   [8] 105125.79 107039.37 108157.30 109064.52 109227.27 110192.59 110721.52
##  [15] 111008.00 111793.81 112965.52 112966.39 113845.53 116049.38 117396.40
##  [22] 117729.93 117791.67 117884.62 118019.80 118395.21 118548.67 118798.08
##  [29] 118855.56 119398.44 120172.04 120398.23 120713.33 121086.02 122068.63
##  [36] 122141.89 122191.49 122354.43 122469.70 122690.91 123366.07 123755.10
##  [43] 123806.67 124126.32 124405.59 124480.00 124810.61 124911.29 125409.40
##  [50] 125555.56 125804.69 126153.15 126551.52 126929.82 127376.15 127378.57
##  [57] 127496.30 128487.60 132153.85 132354.17 133133.86 134095.00 135543.48
##  [64] 136291.39 136519.61 136627.66 136869.23 137650.35 138451.22 138472.22
##  [71] 138975.81 141395.06 141709.84 141795.45 142737.62 142752.75 142871.56
##  [78] 143464.00 143479.73 143915.97 143974.75 144015.87 144747.25 144836.48
##  [85] 144908.57 145040.23 145100.96 145102.41 145300.00 145574.19 146043.01
##  [92] 146068.18 146101.69 146132.95 147202.80 148373.98 148651.52 148775.19
##  [99] 148988.70 149345.53 149601.94 149879.63 150000.00 150043.48 150213.02
## [106] 150300.00 150350.39 151544.72 151816.00 151938.36 152726.87 153091.37
## [113] 153481.13 153948.72 154693.33 155109.24 155756.25 156357.76 156368.42
## [120] 156464.09 156712.87 157217.56 157396.15 157490.32 157697.80 157745.54
## [127] 157955.70 157970.09 158461.24 158846.53 159293.75 159360.00 159588.71
## [134] 159653.47 160051.38 160157.14 160509.80 160712.50 161309.86 161453.90
## [141] 161566.33 161577.85 162029.05 162148.94 162442.80 162820.11 162857.87
## [148] 163796.30 164438.68 164892.09 165437.50 165694.63 165919.58 165993.83
## [155] 166055.79 166476.99 166513.81 166962.18 167153.35 167294.92 168188.85
## [162] 168225.35 168316.21 169187.02 169318.61 169352.94 170168.27 170235.96
## [169] 170344.09 170515.42 170626.51 170798.51 170856.37 171327.73 171790.78
## [176] 171836.18 172530.25 172557.20 173574.47 173760.20 174380.00 174397.54
## [183] 174723.93 175680.00 175904.76 175987.70 177008.13 178045.30 178223.60
## [190] 178574.39 178818.79 179240.96 179434.78 179851.75 180492.31 181064.17
## [197] 181157.22 181260.27 181647.80 182564.89 183082.90 183287.27 183831.33
## [204] 183969.33 183981.31 184083.04 184148.15 185100.00 185142.38 187324.32
## [211] 187611.94 188385.25 188894.74 189343.28 189354.84 189775.74 190426.59
## [218] 190832.21 191049.65 191212.77 191220.97 191797.55 193786.74 193796.05
## [225] 194387.20 194888.89 195078.43 195387.10 199885.63 199937.29 200085.37
## [232] 201000.00 202424.93 203486.58 206526.63 206851.46 207312.66 207941.18
## [239] 212765.00 213233.94
mean(dati$prezzo_medio) # 154320.4
## [1] 154320.4
median(dati$prezzo_medio) # 156588.5
## [1] 156588.5

INDICI DI VARIABILITA’

var(dati$prezzo_medio) # 736984385
## [1] 736984385
sd(dati$prezzo_medio) # 27147.46
## [1] 27147.46
max(dati$prezzo_medio) - min(dati$prezzo_medio) # 116223.7 
## [1] 116223.7
quantile(dati$prezzo_medio, 0.25) # 132938.9 
##      25% 
## 132938.9
quantile(dati$prezzo_medio, 0.75) # 173915.2 
##      75% 
## 173915.2
IQR(dati$prezzo_medio) # 40976.22
## [1] 40976.22

INDICI DI FORMA

Il valore di skewness che hai ottenuto indica che la distribuzione del prezzo medio è molto vicina alla simmetria, con una leggerissima tendenza all’asimmetria negativa. Questo significa che la coda dei valori più bassi è leggermente più estesa di quella dei valori più alti

skewness(dati$prezzo_medio) # Y1 = - 0.06870528 
## [1] -0.06870528

curtos

Y2 < 0 quindi abbiamo che è platicurtica, più appiatita rispetto alla Normale

kurtosis(dati$prezzo_medio) - 3 # Y2=-0.77 
## [1] -0.7784329
plot(
  density(dati$prezzo_medio)
)

abline(
  v = mean(dati$prezzo_medio)
)

Creiamo la variabile efficacia che è alta ci sono tante case in vendita, ma si vendono velocemente. Basso se ci sono meno case in vendita rispetto a quanto tempo ci vuole per venderle.

dati$efficacia <- dati$listings / dati$months_inventory

table(dati$efficacia)
## 
## 106.835443037975 107.011494252874 107.529411764706  107.97619047619 
##                1                1                1                1 
## 108.488372093023 108.674698795181  108.73417721519 108.987341772152 
##                1                1                1                1 
## 109.418604651163 109.431818181818 109.506172839506 109.574468085106 
##                1                1                1                1 
##          109.625 109.882352941176  110.43956043956 110.609756097561 
##                1                1                1                1 
## 110.909090909091 111.842105263158 111.847826086957 111.914893617021 
##                1                1                1                1 
## 112.808988764045 112.816901408451 114.210526315789  114.48275862069 
##                1                1                1                1 
##  114.74358974359              116 116.025641025641 116.049382716049 
##                1                1                1                1 
## 116.388888888889 116.835443037975 117.228915662651 117.285714285714 
##                1                1                1                1 
##          117.625 118.289473684211 118.333333333333 118.421052631579 
##                1                1                1                1 
## 118.641975308642  118.87323943662 119.506172839506 120.289855072464 
##                1                1                1                1 
##         120.9375              121 121.666666666667 121.794871794872 
##                1                1                1                1 
## 121.803278688525 122.295081967213 122.435897435897 122.592592592593 
##                1                1                1                1 
## 123.030303030303 123.333333333333 123.421052631579 123.855421686747 
##                1                1                1                1 
## 124.074074074074          124.375 125.342465753425 126.133333333333 
##                1                1                1                1 
## 126.233766233766 127.887323943662 128.732394366197 129.142857142857 
##                1                1                1                1 
## 143.783783783784 144.188034188034 144.473684210526 145.121951219512 
##                1                1                1                1 
## 145.447154471545 145.932203389831 146.140350877193 146.428571428571 
##                1                1                1                1 
## 146.935483870968 147.741935483871 149.137931034483 149.568965517241 
##                1                1                1                1 
## 152.327586206897 153.928571428571 154.695652173913 154.778761061947 
##                1                1                1                1 
## 154.824561403509 155.535714285714 155.929203539823 156.324786324786 
##                1                1                1                1 
## 156.761904761905 157.758620689655  158.03738317757 158.207547169811 
##                1                1                1                1 
## 158.378378378378            158.6 158.620689655172 158.717948717949 
##                1                1                1                1 
## 159.339622641509 160.285714285714 161.132075471698 161.368421052632 
##                1                1                1                1 
## 162.212389380531 162.432432432432 162.477064220183 162.941176470588 
##                1                1                1                1 
##  162.98969072165 163.404255319149 165.436893203883 165.673076923077 
##                1                1                1                1 
## 165.777777777778 166.091954022989 167.777777777778 167.956989247312 
##                1                1                1                1 
## 168.148148148148 168.181818181818 168.571428571429 168.787878787879 
##                1                1                1                1 
## 168.863636363636 169.814814814815 170.208333333333 170.309278350515 
##                1                1                1                1 
## 170.377358490566 171.910112359551 172.527472527473 175.151515151515 
##                1                1                1                1 
## 175.666666666667 175.714285714286  175.78431372549 176.022727272727 
##                1                1                1                1 
## 176.067415730337 176.086956521739 178.526315789474 179.462365591398 
##                1                1                1                1 
## 180.879120879121 182.307692307692 182.816901408451  184.48717948718 
##                1                1                1                1 
## 185.529411764706 186.111111111111 187.407407407407 188.952380952381 
##                1                1                1                1 
## 189.047619047619 189.620253164557 189.777777777778  192.02380952381 
##                1                1                1                1 
## 192.528735632184            194.4 194.705882352941  195.46511627907 
##                1                1                1                1 
##  195.66265060241 197.534246575342 198.133333333333 199.367088607595 
##                1                2                1                1 
##          199.875 201.149425287356 201.842105263158            204.5 
##                1                1                1                1 
## 205.063291139241            205.2 205.641025641026          207.125 
##                1                1                1                1 
## 207.307692307692 207.407407407407 208.472222222222              209 
##                1                1                1                1 
## 212.837837837838 213.648648648649 214.285714285714 214.444444444444 
##                1                1                1                1 
## 218.208955223881 219.194630872483 220.413793103448 223.013698630137 
##                1                1                1                1 
## 224.710144927536 225.034482758621              226 226.349206349206 
##                1                1                1                1 
## 226.614173228346 227.014925373134 227.049180327869 229.857142857143 
##                1                1                1                1 
## 230.833333333333 230.961538461538              231 231.020408163265 
##                1                1                1                1 
## 232.631578947368 233.777777777778 235.076923076923  238.59649122807 
##                1                1                1                1 
## 238.840579710145 239.666666666667            239.8 240.227272727273 
##                1                1                1                1 
##  240.25641025641 240.260869565217 241.327433628319 241.504424778761 
##                1                1                1                1 
##            243.6 243.805970149254 244.188034188034 246.015037593985 
##                1                1                1                1 
## 247.058823529412 247.235772357724 247.241379310345 248.416666666667 
##                1                1                1                1 
## 251.166666666667 251.803278688525            252.2            252.5 
##                1                1                1                1 
## 253.384615384615            253.5  253.90243902439              254 
##                1                1                1                1 
##            254.2 254.568965517241            255.5              256 
##                1                1                1                1 
## 256.048387096774 256.052631578947           257.75 259.411764705882 
##                1                1                1                1 
## 259.633027522936 260.990990990991            263.3            265.8 
##                1                1                1                1 
##            266.6 268.076923076923  270.37037037037 275.327102803738 
##                1                1                1                1 
## 276.481481481481  280.18691588785 282.376237623762 283.942307692308 
##                1                1                1                1 
## 285.980392156863 287.340425531915  287.35632183908 289.888888888889 
##                1                1                1                1 
## 291.170212765957 291.666666666667 292.421052631579 298.260869565217 
##                1                1                1                1 
## 305.851063829787 306.703296703297 306.989247311828 313.488372093023 
##                1                1                1                1 
## 321.234567901235 323.684210526316 329.275362318841 
##                1                1                1
modeest::mlv(
  
  dati$efficacia, 
  method = 'mfv'

) # 197.5
## [1] 197.5342
# è un tasso di conseguenza applico la media armonica
mean(dati$efficacia) # 187.3
## [1] 187.3386
median(dati$efficacia) # 176.04
## [1] 176.0451

INDICI DI VARIABILITA’

var(dati$efficacia) # 3343.94
## [1] 3343.947
sd(dati$efficacia) # 57.8
## [1] 57.82687
max(dati$efficacia) - min(dati$efficacia) # 222
## [1] 222.4399
quantile(dati$efficacia, 0.25) # 140
##      25% 
## 140.1236
quantile(dati$efficacia, 0.75) # 236
##      75% 
## 235.9568
IQR(dati$efficacia) # 96
## [1] 95.83326

INDICI DI FORMA

Y1 > 0 distribuzione asimmetrica positiva in accordo con questo, abbiamo media > mediana > moda

skewness(dati$efficacia) # Y1 = 0.36
## [1] 0.3672083

curtosi

Y2 < 0 quindi abbiamo che è platicurtica, più appiatita rispetto alla Normale

kurtosis(dati$efficacia) - 3 # Y2 = -0.88
## [1] -0.8832775
plot(
  density(dati$efficacia)
)

abline(
  v = mean(dati$efficacia)
)

# Violin plot “globale” per tutta la distribuzione di efficacia


ggplot(dati, aes(x = factor(city), y = efficacia)) +
  geom_violin(trim = FALSE, fill = "lightblue") +
  geom_boxplot(width = 0.1) +
  labs(
    title = "Distribuzione di efficacia per città",
    x = "Città",
    y = "Efficacia (listings/months_inventory)"
  ) +
  theme_minimal()

7. Analisi condizionata

Uso il pacchetto dplyr per generare dei summary (media, deviazione standard) ed effettuare analisi statistiche condizionate per città, anno e mese, poi rappresentiamo graficamente i risultati.

Estraiamo dentro a summary_stats, la vendita media di ogni mese per la città di Tyler nell’anno 2013, insieme alla sua deviazione standard

summary_stats <- dati %>%
  
  filter(city == "Tyler") %>%
                            group_by(
                                     city, 
                                     year,
                                     month)%>%
                                              summarise(
                                                      avg_sales = mean(sales, na.rm = TRUE),
                                                      sd_sales = sd(sales, na.rm = TRUE),
                                                      n_sales = n()
)
## `summarise()` has grouped output by 'city', 'year'. You can override using the
## `.groups` argument.
print(summary_stats)
## # A tibble: 60 × 6
## # Groups:   city, year [5]
##    city   year month avg_sales sd_sales n_sales
##    <chr> <int> <int>     <dbl>    <dbl>   <int>
##  1 Tyler  2010     1       160       NA       1
##  2 Tyler  2010     2       181       NA       1
##  3 Tyler  2010     3       250       NA       1
##  4 Tyler  2010     4       316       NA       1
##  5 Tyler  2010     5       282       NA       1
##  6 Tyler  2010     6       262       NA       1
##  7 Tyler  2010     7       255       NA       1
##  8 Tyler  2010     8       238       NA       1
##  9 Tyler  2010     9       220       NA       1
## 10 Tyler  2010    10       202       NA       1
## # ℹ 50 more rows

Creiamo un grafico a barre per la media delle vendite per città

ggplot(summary_stats,
       
       aes(
         x = factor(month), 
         y = avg_sales,
         fill = city)) +
  geom_bar(stat = "identity",
           position = "dodge") +
  facet_wrap(~ year) +
  labs(
    title = "Media delle vendite per città, anno e mese",
    x = "Mese",
    y = "Media delle vendite",
    fill = "Red"
  ) +
  theme_minimal()

summary_monthly <- dati %>%
  
  group_by(month) %>%
  summarise(
    avg_sales = mean(sales, na.rm = TRUE),
    sd_sales = sd(sales, na.rm = TRUE),
    n_sales = n()
)

print(summary_monthly)
## # A tibble: 12 × 4
##    month avg_sales sd_sales n_sales
##    <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
ggplot(summary_monthly,
       
       aes(
         x = factor(month), 
         y = avg_sales)) +
  geom_bar(stat = "identity",
           fill = "steelblue") +
  labs(
    title = "Vendite Totali per Mese (aggregando tutti gli anni)",
    x = "Mese",
    y = "Vendite Totali"
  ) +
  theme_minimal()

plot(
  density(summary_monthly$avg_sales)
)

abline(
  v = mean(summary_monthly$avg_sales)
)

I mesi dove vengono venduti più immobili sono da aprile ad agosto, abbiamo il massimo delle vendite a giugno. Mentre i primi mesi dell’anno da gennaio a febbraio abbiamo il picco più basso Ma più vendite indica anche più soldi? Verifichiamolo

Aggrega il volume totale per mese (su tutti gli anni)

summary_volume <- dati %>%
  
  group_by(month) %>%
  summarise(
    total_volume = sum(volume, na.rm = TRUE),
    avg_volume   = mean(volume, na.rm = TRUE),
    n_obs        = n()
  )
print(summary_volume)
## # A tibble: 12 × 4
##    month total_volume avg_volume n_obs
##    <int>        <dbl>      <dbl> <int>
##  1     1         380.       19.0    20
##  2     2         433.       21.7    20
##  3     3         588.       29.4    20
##  4     4         666.       33.3    20
##  5     5         794.       39.7    20
##  6     6         826.       41.3    20
##  7     7         782.       39.1    20
##  8     8         760.       38.0    20
##  9     9         592.       29.6    20
## 10    10         582.       29.1    20
## 11    11         496.       24.8    20
## 12    12         542.       27.1    20

Visualizza il volume totale per mese con un grafico a barre

ggplot(summary_volume,
       
       aes(
         x = factor(month), 
         y = total_volume)) +
  geom_bar(stat = "identity",
           fill = "darkgreen") +
  labs(
    title = "Valore Totale (Volume) per Mese (aggregando tutti gli anni)",
    x = "Mese",
    y = "Volume Totale (valore in soldi)"
  ) +
  theme_minimal()

Si, i mesi da aprile ad agosto risultano con il numero di vendite maggiori, nonchè quelli con il volume in milioni di dollari più alto

8. Creazione di visualizzazioni con ggplot2

Utilizziamo ggplot2 per creare grafici personalizzati. Assicurati di esplorare: - Boxplot per confrontare la distribuzione del prezzo mediano tra le città. - Grafici a barre per confrontare il totale delle vendite per mese e città. Line charts per confrontare l’andamento delle vendite in periodi storici differenti.

Esegui il boxplot per la distribuzione del prezzo mediano tra le città

ggplot(dati, 
       
       aes(x = city, 
           y = median_price)) + # median_price
  geom_boxplot() +
  labs(
    title = "Distribuzione del prezzo mediano tra le città",
    x = "Città",
    y = "Prezzo mediano"
  ) +
  theme_minimal()

Calcola il totale delle vendite per mese e città

total_dollari <- dati %>%
  
  group_by(
    city,
    month
  ) %>%
  summarise(total_dollari = sum(volume, na.rm = TRUE)
)
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
ggplot(total_dollari, 
       
       aes(x = factor(month),
           y = total_dollari,
           fill = city)) +
  geom_bar(stat = "identity",
           position = "dodge") +
  labs(
    title = "Valore totale dalle vendite in milioni di dollari, divisi per anno e per città",
    x = "Anno",
    y = "Totale milioni di dollari",
    fill = "Città"
  ) +
  theme_minimal()

Crea il line chart

# Aggrega i dati per calcolare il totale delle vendite per città e anno
vendite_annuali <- dati %>%
  
  group_by(
    city,
    year
  ) %>%
  summarise(totale_vendite_annue = sum(sales, na.rm = TRUE)) # na.rm = TRUE gestisce eventuali valori mancanti
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
ggplot(vendite_annuali, 
       
       aes(
         x = year, 
         y = totale_vendite_annue, 
         color = city, 
         group = city)) +
  geom_line(linewidth = 0.8) +
  geom_point(size = 2) + # Aggiunge punti per evidenziare gli anni
  labs(
    title = "Vendite Totali Annuali per Città (2010-2014)",
    x = "Anno",
    y = "Totale Vendite Annuali",
    color = "Città"
  ) +
  scale_x_continuous(breaks = unique(dati$year)) + # Assicura che tutti gli anni siano sull'asse x
  theme_minimal() +
  theme(
    legend.position = "right",
    axis.title = element_text(face = "bold"),
    axis.text = element_text(size = 10),
    legend.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

# 9. Conclusioni

Fornisci una sintesi dei risultati ottenuti, facendo riferimento alle principali tendenze emerse e fornendo raccomandazioni basate sull’analisi.

Commento finale:

L’analisi delle vendite evidenzia che Tyler è il mercato più performante, con vendite consistentemente più elevate. Bryan-College Station mostra alta variabilità, indicando un mercato instabile. Wichita Falls presenta le performance peggiori con trend negativo. Le vendite hanno una chiara stagionalità, con picchi tra aprile e agosto e cali nei mesi freddi. Il mercato complessivo mostra crescita nel tempo, con l’eccezione di Wichita Falls in declino. Un outlier significativo è stato identificato a Tyler, suggerendo un periodo di vendite eccezionali. Wichita Falls deve puntare su più annunci e a dare visibilità agli stessi, visto che permangono diversi mesi senza vendite. Mentre Tyler ha tanti annunci ed è un mercato veloce in quanto gli annunci restono attivi per poco con conseguente vendita

Session info:

sessionInfo()
## R version 4.5.0 (2025-04-11 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 22631)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## locale:
## [1] LC_COLLATE=Italian_Italy.utf8  LC_CTYPE=Italian_Italy.utf8   
## [3] LC_MONETARY=Italian_Italy.utf8 LC_NUMERIC=C                  
## [5] LC_TIME=Italian_Italy.utf8    
## 
## time zone: Europe/Rome
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] knitr_1.50     rmarkdown_2.29 moments_0.14.1 dplyr_1.1.4    modeest_2.4.0 
## [6] ggplot2_3.5.2 
## 
## loaded via a namespace (and not attached):
##  [1] statip_0.2.3        gtable_0.3.6        jsonlite_2.0.0     
##  [4] compiler_4.5.0      fBasics_4041.97     rpart_4.1.24       
##  [7] tidyselect_1.2.1    stable_1.1.6        cluster_2.1.8.1    
## [10] jquerylib_0.1.4     scales_1.3.0        timeSeries_4041.111
## [13] rmutil_1.1.10       yaml_2.3.10         fastmap_1.2.0      
## [16] R6_2.6.1            labeling_0.4.3      generics_0.1.3     
## [19] tibble_3.2.1        spatial_7.3-18      munsell_0.5.1      
## [22] timeDate_4041.110   bslib_0.9.0         pillar_1.10.2      
## [25] rlang_1.1.5         utf8_1.2.4          stabledist_0.7-2   
## [28] cachem_1.1.0        xfun_0.52           sass_0.4.10        
## [31] cli_3.6.4           withr_3.0.2         magrittr_2.0.3     
## [34] digest_0.6.37       grid_4.5.0          rstudioapi_0.17.1  
## [37] clue_0.3-66         lifecycle_1.0.4     vctrs_0.6.5        
## [40] evaluate_1.0.3      glue_1.8.0          farver_2.1.2       
## [43] colorspace_2.1-1    tools_4.5.0         pkgconfig_2.0.3    
## [46] htmltools_0.5.8.1