Leggiamo il dataset “realestate_texas.csv”, vediamo come si chiamano le variabili in esso contenuto, vediamo che tipo di variabili sono e quante sono.
dati<-read.csv("realestate_texas.csv")
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 ...
Il dataset è costituito da 240 osservazioni e 8 variabili. Iniziamo a fare i primi controlli. Per ognuna di essere analizziamone la frequenza assoluta o un riassunto dei principali indici (a seconda che la variabile sia categorica oppure no) per capire come sono strutturate.
table(city)
## city
## Beaumont Bryan-College Station Tyler
## 60 60 60
## Wichita Falls
## 60
city è una variabile qualitativa nominale; ha 4 valori: “Beaumont” “Bryan-College Station” “Tyler” “Wichita Falls”. Tutti i valori hanno 60 osservazioni.
table(year)
## year
## 2010 2011 2012 2013 2014
## 48 48 48 48 48
year è una variabile temporale, corrisponde all’anno di riferimento della vendita. La variabile assume 5 valori: 2010 2011 2012 2013 2014. Può essere considerata come una variabile qualitativa ordinale. Tutti i valori hanno 48 osservazioni.
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
month è una variabile temporale, corrisponde al mese dell’anno di riferimento della vendita. Ha 12 valori, da 1 a 12. Può essere considerata come una variabile qualitativa nominale. Tutti i valori hanno 20 osservazioni.
Ogni riga del dataset rappresenta i dati per città, mese e anno; quindi fissando una città, un anno e un mese si ottiene la singola osservazione. Per le analisi si potrebbe selezionare una singola città e vedere come cambiano le variabili quantitative nel tempo.
summary(sales)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 79.0 127.0 175.5 192.3 247.0 423.0
sales rappresenta il numero di vendite ed è una variabile quantitativa. Assume valori da un massimo di 423 a un minimo di 79.
plot(density(sales), main='')+
abline(v=mean(sales),col=2)+
title('Densità per la variabile sales')
## integer(0)
Dal grafico della densità sopra notiamo come la maggior parte delle vendite siano concentrate nella prima parte del grafico, su valori minori della media (segnata in rosso nel grafico).
Il grafico sottostante mostra come negli anni, non considerando la singola città, il numero delle vendite è andato via via crescendo.
ggplot(data=dati)+
geom_col(aes(x=year, y=sales), fill="lightblue")+
theme_classic()+
labs(x="Anni", y="Totale del numero di vendite", title="Andamento del numero delle vendite nel Texas")
summary(volume)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8.166 17.660 27.062 31.005 40.893 83.547
La variabile volume rappresenta il valore totale delle vendite (in milioni di dollari), è una variabile quantitativa continua. Assume valori da un massimo di 83.547 a un minimo di 8.166.
plot(density(volume), main='')+
abline(v=mean(volume),col=2)+
title('Densità per la variabile volume')
## integer(0)
Dal grafico della densità sopra notiamo come il valore delle vendite sia concentrato nella prima parte del grafico, su valori minori della media (segnata in rosso nel grafico).
Il grafico sottostante mostra come negli anni il volume delle vendite è andato via via crescendo.
ggplot(data=dati)+
geom_col(aes(x=year,y=volume), fill='lightblue')+
theme_classic()+
labs(x='Anni',
y='Totale del valore delle vendite (in milioni di dollari)',
title="Andamento del valore delle vendite nel Texas")
summary(median_price)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 73800 117300 134500 132665 150050 180000
La variabile median_price rappresenta il prezzo mediano di vendita (in dollari), è una variabile quantitativa. Assume valori da un massimo di 180000 a un minimo di 73800.
Dal grafico sottostante si nota come la distrubuzione sia concentratata prevalentemente su valori maggiori della media.
plot(density(median_price), main='')+
abline(v=mean(median_price),col=2)+
title('Densità per la variabile median_price')
## integer(0)
summary(listings)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 743 1026 1618 1738 2056 3296
La variabile listings rappresenta il numero totale di annunci attivi, è una variabile quantitativa. Assume valori da un massimo di 3296 a un minimo di 743.
Il grafico sottostante mostra come il suo valore negli anni va via via diminuendo.
ggplot(data=dati)+
geom_col(aes(x=year,y=listings), fill='lightblue')+
theme_classic()+
labs(x='Anni',
y='Totale del numero totale di annunci attivi',
title="Andamento del numero totale di annunci attivi nel Texas")
summary(months_inventory)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.400 7.800 8.950 9.193 10.950 14.900
La variabile months_inventory rappresenta la quantità di tempo necessaria per vendere tutte le inserzioni correnti, espressa in mesi; è una variabile quantitativa. Assume valori da un massimo di 14.9 a un minimo di 3.4.
Come si può notare dal grafico sottostante, sono più frequenti valori minori della media.
plot(density(months_inventory), main='')+
abline(v=mean(months_inventory),col=2)+
title('Densità per la variabile months_inventory')
## integer(0)
Calcoliamo media, mediana, moda, deviazione standard e varianza, asimmetria e curtosi per le variabili numeriche.
Creiamo una distribuzione di frequenza per le variabili categoriche, come city e month.
#media
mean(sales)
## [1] 192.2917
#mediana
median(sales)
## [1] 175.5
Essendo sales una variabile discreta con tanti valori non se ne calcola la moda.
#deviazione standard
sd(sales)
## [1] 79.65111
#varianza
var(sales)
## [1] 6344.3
#asimmetria
skewness(sales)
## [1] 0.718104
#curtosi
kurtosis(sales)-3
## [1] -0.3131764
Il valore dell’asimmetria è positivo, pertanto la variabile sales è asimmetrica positivamente, ossia sono più frequenti valori bassi. La curtosi è invece negativa, pertanto la distribuzione della variabile risulta essere platicurtica, cioè più appiattita rispetto alla distribuzione normale.
#media
mean(volume)
## [1] 31.00519
#mediana
median(volume)
## [1] 27.0625
Anche per volume, essendo una variabile quantitativa continua, non si calcola la moda.
#deviazione standard
sd(volume)
## [1] 16.65145
#varianza
var(volume)
## [1] 277.2707
#asimmentria
skewness(volume)
## [1] 0.884742
#curtosi
kurtosis(volume)-3
## [1] 0.176987
La variabile è asimmetrica positivamente.
#media
mean(median_price)
## [1] 132665.4
#mediana
median(median_price)
## [1] 134500
Per median_price, essendo una variabile discreta con tanti valori, non si calcola la moda.
#deviazione standard
sd(median_price)
## [1] 22662.15
#varianza
var(median_price)
## [1] 513572983
#asimmetria
skewness(median_price)
## [1] -0.3645529
#curtosi
kurtosis(median_price)-3
## [1] -0.6229618
La variabile median_price è asimmetrica negativamente, quindi sono più frequenti valori alti della variabile.
#media
mean(listings)
## [1] 1738.021
#mediana
median(listings)
## [1] 1618.5
Per listings, essendo una variabile discreta con tanti valori, non si calcola la moda.
#deviazione standard
sd(listings)
## [1] 752.7078
#varianza
var(listings)
## [1] 566569
#asimmetria
skewness(listings)
## [1] 0.6494982
#curtosi
kurtosis(listings)-3
## [1] -0.79179
#media
mean(months_inventory)
## [1] 9.1925
#mediana
median(months_inventory)
## [1] 8.95
Essendo una variabile discreta con tanti valori, non se ne calcola la moda.
#deviazione standard
sd(months_inventory)
## [1] 2.303669
#varianza
var(months_inventory)
## [1] 5.306889
#asimmetria
skewness(months_inventory)
## [1] 0.04097527
#curtosi
kurtosis(months_inventory)-3
## [1] -0.1744475
n=length(city)
freq_ass=table(city)
freq_rel=freq_ass/n
distr_freq=cbind(freq_ass,freq_rel)
distr_freq
## freq_ass freq_rel
## Beaumont 60 0.25
## Bryan-College Station 60 0.25
## Tyler 60 0.25
## Wichita Falls 60 0.25
n=length(month)
freq_ass=table(month)
freq_rel=freq_ass/n
distr_freq=cbind(freq_ass,freq_rel)
distr_freq
## freq_ass freq_rel
## 1 20 0.08333333
## 2 20 0.08333333
## 3 20 0.08333333
## 4 20 0.08333333
## 5 20 0.08333333
## 6 20 0.08333333
## 7 20 0.08333333
## 8 20 0.08333333
## 9 20 0.08333333
## 10 20 0.08333333
## 11 20 0.08333333
## 12 20 0.08333333
n=length(year)
freq_ass=table(year)
freq_rel=freq_ass/n
distr_freq=cbind(freq_ass,freq_rel)
distr_freq
## freq_ass freq_rel
## 2010 48 0.2
## 2011 48 0.2
## 2012 48 0.2
## 2013 48 0.2
## 2014 48 0.2
Come già detto dalle prime analisi, tutte le variabili categoriche (city, month e year) sono omogeneamente distribuite. La singola riga del dataframe corrisponde alle vendite effettuate in una città per un mese di un anno indicato. Volendo fare una indagine su 5 anni e su 4 città del Texas, il dataframe è composto da 240 (5x4x12) osservazioni.
Per identificare le variabili con maggiore variabilità calcoliamo il coefficiente di variazione. In questo modo si riesce a confrontare variabili che hanno ordini di grandezza molto diversi fra loro. Possiamo sfruttare tale coefficiente poiché le variabili sono tutte maggiori di zero.
Il coefficiente di variazione è un rapporto fra la deviazione standard e la media della variabile.
Definiamone la funzione in modo che possa poi essere applicata a tutte le variabili quantitative.
cv<-function(x){
return(sd(x)/mean(x)*100)
}
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
Considerando i valori ottenuti per il coefficiente di variazione sulle varie variabili, median_price è quella che varia meno, mentre volume è quella con la più alta variabilità.
Per studiare la simmetria delle variabili, calcoliamone l’indice di asimmetria.
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
La variabile che presenta meno asimmetria è months_inventory, quella più asimmetrica è volume, e presenta una asimmetria positiva, ossia sono più frequenti valori bassi.
median_price invece è l’unica con asimmetria negativa, cioè sono più frequenti valori alti.
Fissiamo sales come variabile quantitativa e suddividiamola in classi.
max(sales)
## [1] 423
min(sales)
## [1] 79
dati$sales_cl<-cut(dati$sales, breaks=c(75,125,175,225,275,325,375,425))
Le classi sono state costruite utilizzando un passo di 50, da 75 a 425.
Creiamo una distribuzione di frequenze e rappresentiamo i dati con un grafico a barre.
n<-dim(dati)[1]
ni<-table(dati$sales_cl)
fi<-ni/n
Ni<-cumsum(ni)
Fi<-Ni/n
distr_freq_sales_cl<-as.data.frame(cbind(ni,fi,Ni,Fi))
distr_freq_sales_cl
## ni fi Ni Fi
## (75,125] 59 0.24583333 59 0.2458333
## (125,175] 61 0.25416667 120 0.5000000
## (175,225] 46 0.19166667 166 0.6916667
## (225,275] 30 0.12500000 196 0.8166667
## (275,325] 26 0.10833333 222 0.9250000
## (325,375] 13 0.05416667 235 0.9791667
## (375,425] 5 0.02083333 240 1.0000000
ggplot(data=dati)+
geom_bar(aes(x=sales_cl), stat='count', col='black', fill='lightblue')+
labs(title='Distribuzione delle classi del numero di vendite'
,x='Classi del numero di vendite'
,y="Frequenze assolute")+
scale_y_continuous(breaks=seq(0,65,15))+
theme_classic()
Dal grafico delle distribuzioni di frequenza si deduce che nel corso degli anni sono state fatte maggiormente dalle 75 alle 175 vendite al mese. Solo in rarissimi casi si sono riuscite a vendere dalle 375 alle 425 case al mese. Dalla tabella delle distribuzioni di frequenza, notiamo come le frequenze relative più alte sono le prime due, per poi andare diminuendo fino al 0.02 dell’ultima classe.
Calcoliamo l’indice di Gini sulla variabile in classi sales_cl .
gini.index<-function(x){
ni=table(x)
fi=ni/length(x)
fi2=fi^2
J=length(table(x))
gini=1-sum(fi2)
gini.normalizzato=gini/((J-1)/J)
return(gini.normalizzato)
}
gini.index(dati$sales_cl)
## [1] 0.9420833
Dal valore dell’indice di eterogeneità di Gini si deduce che il numero delle vendite è quasi uniformemente distribuito lungo tutti i valori della variabile e non c’è una classe con un valore di frequenza relativa molto più alto delle altre.
Calcoliamo tale probabilità usando la definizione classica. I casi favorevoli sono le case in vendita a Beaumont, i casi possibili sono tutte le case in vendita.
La variabile listings rappresenta il numero totale di annunci attivi, pertanto si può sfruttare il suo contenuto.
casi_possibili=sum(listings)
# casi favorevoli
df_beaumont<-dati %>%
group_by(city) %>%
filter(city=='Beaumont') %>%
summarise(somma_listings=sum(listings))
Quindi la probabilità cercata è:
df_beaumont$somma_listings/casi_possibili
## [1] 0.2415559
La variabile sales rappresenta il numero totale di vendite, la variabile month rappresenta il mese di riferimento.
Anche in questo caso usiamo la definizione classica di probabilità.
casi_possibili=sum(sales)
#casi favorevoli
df_month7<-dati %>%
group_by(month) %>%
filter(month==7) %>%
summarise(somma_sales=sum(sales))
Luglio si può individuare come month=7, pertanto
df_month7$somma_sales/casi_possibili
## [1] 0.1021668
La variabile sales rappresenta il numero totale di vendite, la variabile month rappresenta il mese di riferimento, year rappresenta l’anno di riferimento.
Anche in questo caso usiamo la definizione classica di probabilità.
casi_possibili=sum(sales)
#casi favorevoli
df_2012_12<-dati %>%
group_by(year) %>%
filter(month==12) %>%
filter(year==2012) %>%
summarise(somma_sales=sum(sales))
Pertanto il calcolo finale è:
df_2012_12$somma_sales/casi_possibili
## [1] 0.01393283
Creiamo una nuova colonna che calcoli il prezzo medio degli immobili utilizzando le variabili disponibili.
Il prezzo medio degli immobili può essere calcolato facendo un rapporto fra il valore totale delle vendite (volume) e il numero totale di vendite (sales). Chiamiamo la nuova variabile prezzo_medio.
dati$prezzo_medio<-dati$volume/dati$sales
Creiamo anche una colonna che misuri l’efficacia degli annunci di vendita. Essa può essere calcolata facendo un rapporto fra il numero totale di vendita (sales) e la quantità di tempo necessaria per vendere tutte le inserzioni correnti, espresso in mesi (months_inventory). Sostanzialmente rappresenta quanti annunci vengono venduti in un mese, per cui più alto è, meglio è.
dati$eff_annunci<-dati$sales/dati$months_inventory
Calcoliamo ora una suddivisione in classi per prezzo_medio e per eff_annunci, in modo da studiare come si distribuiscono le osservazioni rispetto a queste informazioni.
min(dati$eff_annunci)
## [1] 8.736842
max(dati$eff_annunci)
## [1] 98.29268
dati$eff_annunci_cl<-cut(dati$eff_annunci, breaks=c(5,20,35,50,65,80,100))
min(dati$prezzo_medio)
## [1] 0.0970102
max(dati$prezzo_medio)
## [1] 0.2132339
dati$prezzo_medio_cl<-cut(dati$prezzo_medio, breaks=c(0.05,0.10,0.15,0.20,0.25))
Vediamo ora come sono distribuiti i valori fra queste due classi.
table(dati$prezzo_medio_cl,dati$eff_annunci_cl)
##
## (5,20] (20,35] (35,50] (50,65] (65,80] (80,100]
## (0.05,0.1] 3 0 0 0 0 0
## (0.1,0.15] 84 16 0 0 0 0
## (0.15,0.2] 50 59 13 4 1 0
## (0.2,0.25] 1 1 1 3 2 2
Dalla distribuzione doppia risulta che più aumenta l’efficacia degli annunci (sull’asse x), più vengono acquistati immobili con prezzo medio sempre maggiore. Pertanto è evidente che una buona efficacia degli annunci di vendita genera un prezzo medio degli immobili più alto.
Vediamo ora come il prezzo medio in classi si distribuisce rispetto alle variabili city e year.
Confrontiamo il prezzo medio per città.
#prezzo medio
table(dati$city,dati$prezzo_medio_cl)
##
## (0.05,0.1] (0.1,0.15] (0.15,0.2] (0.2,0.25]
## Beaumont 0 39 21 0
## Bryan-College Station 0 0 50 10
## Tyler 0 4 56 0
## Wichita Falls 3 57 0 0
Bryan-College Station e Tyler sono le città dove si acquistano immobili con il prezzo medio più alto, a Wichita Falls si acquistano immobili con il prezzo medio più basso, Beaumont si posiziona nelle classi di prezzo medio centrali.
Vediamo come è variato il prezzo medio negli anni.
table(dati$year,dati$prezzo_medio_cl)
##
## (0.05,0.1] (0.1,0.15] (0.15,0.2] (0.2,0.25]
## 2010 0 22 25 1
## 2011 1 22 25 0
## 2012 2 20 26 0
## 2013 0 18 29 1
## 2014 0 18 22 8
Negli anni è aumentata la tendenza ad acquistare immobili con un prezzo medio sempre più alto.
Confrontiamo adesso le classi dell’efficacia degli annunci con le variabili city e year.
#eff_annunci
table(dati$city,dati$eff_annunci_cl)
##
## (5,20] (20,35] (35,50] (50,65] (65,80] (80,100]
## Beaumont 39 20 1 0 0 0
## Bryan-College Station 22 21 5 7 3 2
## Tyler 22 30 8 0 0 0
## Wichita Falls 55 5 0 0 0 0
Bryan-College Station è la città dove l’inserzione degli annunci è maggiormente efficace, infatti per due volte durante gli anni si sono riusciti a vedere dagli 80 ai 100 immobili in un mese. La città con la più bassa efficacia degli annunci è Wichita Falls.
table(dati$year,dati$eff_annunci_cl)
##
## (5,20] (20,35] (35,50] (50,65] (65,80] (80,100]
## 2010 36 12 0 0 0 0
## 2011 42 6 0 0 0 0
## 2012 32 15 1 0 0 0
## 2013 15 27 3 2 1 0
## 2014 13 16 10 5 2 2
Negli anni l’efficacia degli annunci è aumentata.
ggplot(data=dati)+
geom_col(aes(x=city, y=prezzo_medio, fill=eff_annunci_cl), position='dodge')+
labs(x='Città',y='Prezzo medio',
title="Distribuzione dell'efficacia degli annunci per città e prezzo medio",
fill='Efficacia annunci in classi')+
theme_classic()+
theme(legend.position = 'bottom')+
scale_color_manual(name='Legenda')
Da questo grafico risulta ancora più evidente come, in alcune città, all’aumentare dell’efficacia degli annunci, il prezzo medio aumenti. Soprattutto a Bryan-College Station e a Tyler l’effetto dell’efficacia degli annunci di vendita ha un impatto notevote sul prezzo medio degli acquisti.
Lo stesso comportamento non si nota invece a Beaumont e a Wichita Falls, dove all’aumentare dell’efficacia degli annunci il prezzo medio diminuisce.
Usiamo il pacchetto dplyr o il linguaggio base di R per effettuare analisi statistiche condizionate per città, anno e mese. Generiamo dei summary (media, deviazione standard) e rappresentiamo graficamente i risultati.
Iniziamo analizzando la media e la deviazione standard di sales per city.
new_df <- dati %>%
group_by(city) %>%
summarize(mean_sales=mean(sales), dev.st_sales=sd(sales))
ggplot(new_df, aes(x=city, y=mean_sales)) +
geom_bar(stat="identity", fill='lightblue')+
theme_classic()+
labs(title="Media del numero di vendite per città",
x="Città", y="Media del numero di vendite")+
geom_hline(yintercept = mean(new_df$mean_sales), col='red')
Dai grafici a barre si nota che a Tyler si vendono molti immobili, il numero delle vendite supera la media totale delle vendite (segnata di rosso). Di poco viene superata anche da Bryan-College Station.
ggplot(new_df, aes(x=city, y=dev.st_sales)) +
geom_bar(stat="identity", fill='lightblue')+
theme_classic()+
labs(title="Deviazione standard del numero di vendite per città",
x="Città", y="Deviazione standard del numero di vendite")
Dal grafico della deviazione standard si nota che il numero delle case acquistate ogni mese a Bryan-College Station varia molto dal valore medio del numero degli acquisti, mentre a Wichita Falls si acquista più o meno sempre lo stesso numero di immobili.
Analizziamo ora la media e la deviazione standard di sales per year
new_df2 <- dati %>%
group_by(year) %>%
summarize(mean_sales=mean(sales), dev.st_sales=sd(sales))
ggplot(new_df2, aes(x=year, y=mean_sales)) +
geom_bar(stat="identity", fill='lightblue')+
theme_classic()+
labs(title="Media del numero di vendite per anno",
x="Anno", y="Media del numero di vendite")
Ogni anno la media del numero di vendite è andato in definitiva aumentando.
ggplot(new_df2, aes(x=year, y=dev.st_sales)) +
geom_bar(stat="identity", fill='lightblue')+
theme_classic()+
labs(title="Deviazione standard del numero di vendite per anno",
x="Anno", y="Deviazione standard del numero di vendite")
Ma dal 2010 al 2014 il numero di vendite per anno si sta allontanando sempre più dalla media del numero di vendite effettuate.
Analizziamo ora per città (city) come varia il valore totale delle vendite (volume).
new_df <- dati %>%
group_by(city) %>%
summarize(mean_volume=mean(volume), dev.st_volume=sd(volume))
ggplot(new_df, aes(x=city, y=mean_volume)) +
geom_bar(stat="identity", fill='lightblue')+
theme_classic()+
labs(title="Media del valore di vendite per città",
x="Città", y="Media del valore di vendite")+
geom_hline(yintercept = mean(new_df$mean_volume), col='red')
Dal grafico a barre della media risulta che il valore delle case vendute nella città di Tyler è maggiore rispetto alle altre, Wichita Falls è la città dove si comprano case con il prezzo medio più basso. Nella città di Tyler si acquistano case che in media vanno sopra ai 40 milioni di dollari. A Wichita Falls invece di acquistano case che in media superano di poco i 10 milioni di dollari.
ggplot(new_df, aes(x=city, y=dev.st_volume)) +
geom_bar(stat="identity", fill='lightblue')+
theme_classic()+
labs(title="Deviazione standard del valore di vendite per città",
x="Città", y="Deviazione standard del valore di vendite")
Dal grafico della deviazione standard si evince come nella città di Bryan-College Station vengano acquistate case con un valore molto variabile dal valore medio.
Utilizziamo ggplot2 per creare grafici personalizzati.
ggplot(dati)+
geom_boxplot(fill="lightblue", aes(x=city, y=median_price))+
theme_classic()+
labs(title='Confronto del prezzo mediano tra le città',x='Città',
y='Prezzo mediano')
Dai bloxplot si nota come il prezzo mediano a Bryan-College Station sia maggiore rispetto alle altre città, inoltre è la città dove il prezzo mediano è meno variabile. Wichita Falls è la città con il prezzo mediano più basso, ma anche più variabile dato che la sua scatola è quella più grande, ciò significa che il range interquartile è maggiore rispetto alle altre scatole.
ggplot(data=dati)+
geom_col(aes(x=month,y=sales),position='dodge',fill='lightblue')+
labs(title='Distribuzione del numero di vendite per mese',
x='Mesi', y="Numero di vendite")+
theme_classic()+
theme(legend.position = 'bottom')+
scale_color_manual(name='Legenda')+
scale_x_continuous(breaks=seq(1,12,1))
I mesi in cui si comprano il maggior numero di case sono quelli estivi, da maggio a luglio. Ad inizio e fine anno si compra invece tendenzialmente poco.
ggplot(data=dati)+
geom_col(aes(x=city,y=sales),position='dodge',fill='lightblue')+
labs(title='Distribuzione del numero di vendite per città',
x='Città', y="Numero di vendite")+
theme_classic()+
theme(legend.position = 'bottom')
Osservando la distribuzione del numero di vendite per città, si nota che a Wichita Falls si acquistano poche case, poiché in 5 anni non si sono acquistati nemmeno 200 immobili; a Tyler il numero di vendite di case è elevato, poiché in 5 anni si sono acquistati più di 400 immobili. Anche a Bryan-College Station si acquistano molti immobili, poco meno rispetto a Tyler. A Beaumont si acquistano mediamente poche case, ma di più rispetto a Wichita Falls.
Vediamo ora come varia la media del numero di vendita degli immobili nelle quattro città durante l’anno.
new_df_Beaumont <- dati %>%
group_by(month) %>%
filter(city=='Beaumont') %>%
summarize(mean_sales=mean(sales))
new_df_Wichita <- dati %>%
group_by(month) %>%
filter(city=='Wichita Falls') %>%
summarize(mean_sales=mean(sales))
new_df_BCS <- dati %>%
group_by(month) %>%
filter(city=='Bryan-College Station') %>%
summarize(mean_sales=mean(sales))
new_df_Tyler <- dati %>%
group_by(month) %>%
filter(city=='Tyler') %>%
summarize(mean_sales=mean(sales))
ggplot()+
geom_line(data=new_df_Tyler, aes(x=month, y=mean_sales, col='Tyler'),lwd=1)+
scale_x_continuous(breaks = seq(1,12,1))+
geom_line(data=new_df_BCS, aes(x=month, y=mean_sales, col='BCS' ), lwd=1)+
geom_line(data=new_df_Beaumont, aes(x=month, y=mean_sales, col='Beaumont') , lwd=1)+
geom_line(data=new_df_Wichita, aes(x=month, y=mean_sales, col='Wichita') , lwd=1)+
scale_color_manual(name='Legenda', breaks=c('Tyler','BCS','Beaumont','Wichita'),
values=c('green3','red','pink','lightblue'),
labels=c('Tyler','Bryan-College Station','Beaumont','Wichita Falls'))+
labs(x='Mesi',y='Media del numero totale delle vendite',title='Andamento della media del numero delle vendite in Texas')+
theme_classic()
Questo grafico mette insieme le informazioni dei due grafici precedenti, sappiamo infatti in quali mesi si acquista di più e in quale città. La città con meno acquisti è Wichita Falls, la città dove si acquista di più è Tyler, e si acquistano case prevalentemente nei mesi estivi. A Wichita Falls non si va mai oltre i 150 acquisti al mese in media, i mesi in cui si acquista meno sono quelli invernali. A Bryan-College Station gli acquisti vanno migliorando fino ad avere il loro picco a giugno, per poi nuovamente diminuire. I mesi in cui si compra meno sono gennaio e febbraio. A Beaumont si acquista poco, va meglio di Wichita Falls ma anche nei mesi in cui si acquista maggiormente, si superano di poco i 200 acquisti medi al mese.
Vediamo ora come varia negli anni il valore totale delle vendite nelle quattro città.
dati$month_char<-as.character(month)
dati$month_char<-str_pad(dati$month_char,2,pad='0')
dati$year_month<-paste(year,dati$month_char,"01",sep='_')
dati$data_rif=as.Date(dati$year_month, "%Y_%m_%d")
beaumont <- dati %>% filter(city=='Beaumont')
tyler <-dati %>% filter(city=="Tyler")
bcs <-dati %>% filter(city=="Bryan-College Station")
wf<-dati %>% filter(city=='Wichita Falls')
ggplot()+
geom_line(data=tyler, aes(x=data_rif, y=volume, col='Tyler' ), lwd=1)+
geom_line(data=bcs, aes(x=data_rif, y=volume, col='BCS' ), lwd=1)+
geom_line(data=beaumont, aes(x=data_rif, y=volume, col='Beaumont') , lwd=1)+
geom_line(data=wf, aes(x=data_rif, y=volume, col='Wichita') , lwd=1)+
scale_color_manual(name='Legenda', breaks=c('Tyler','BCS','Beaumont','Wichita'),
values=c('green3','red','pink','lightblue'),
labels=c('Tyler','Bryan-College Station','Beaumont','Wichita Falls'))+
labs(x='Periodo storico',y='Valore totale vendite',title='Andamento del valore totale di vendite in Texas')+
theme_classic()+
scale_x_date(date_labels = "%b%y", date_breaks = '1 year')
Infine, vediamo come varia il numero totale di vendite nell’intero periodo di riferimento, nelle quattro città.
ggplot()+
geom_line(data=tyler, aes(x=data_rif, y=sales, col='Tyler' ), lwd=1)+
geom_line(data=bcs, aes(x=data_rif, y=sales, col='BCS' ), lwd=1)+
geom_line(data=beaumont, aes(x=data_rif, y=sales, col='Beaumont') , lwd=1)+
geom_line(data=wf, aes(x=data_rif, y=sales, col='Wichita') , lwd=1)+
scale_color_manual(name='Legenda', breaks=c('Tyler','BCS','Beaumont','Wichita'),
values=c('green3','red','pink','lightblue'),
labels=c('Tyler','Bryan-College Station','Beaumont','Wichita Falls'))+
labs(x='Periodo storico',y='Numero totale di vendite',title='Andamento del numero totale di vendite in Texas')+
theme_classic()+
scale_x_date(date_labels = "%b%y" , date_breaks = '1 year')
Dai grafici si nota che c’è un trend crescente negli anni in tutte le città, esclusa Wichita Falls, che ha un andamento costante durante i vari anni.
Il numero totale e il valore totale di vendite crescono in tutte le città con la stessa tendenza, pertanto si compra sempre più e in media case sempre più costose.
Analizziamo ora come variano la media dei valori di volume e sales nelle varie città negli anni.
Calcoliamo dei summary sugli anni per avere un trend che risente meno delle fluttuazioni dovute agli acquisti mensili.
new_df_Beaumont <- dati %>%
group_by(year) %>%
filter(city=='Beaumont') %>%
summarize(sum_volume=sum(volume), sum_sales=sum(sales), mean_volume=mean(volume),mean_sales=mean(sales),
sd_vol=sd(volume), sd_sales=sd(sales))
new_df_Wichita <- dati %>%
group_by(year) %>%
filter(city=='Wichita Falls') %>%
summarize(sum_volume=sum(volume), sum_sales=sum(sales),mean_volume=mean(volume),mean_sales=mean(sales),
sd_vol=sd(volume), sd_sales=sd(sales))
new_df_BCS <- dati %>%
group_by(year) %>%
filter(city=='Bryan-College Station') %>%
summarize(sum_volume=sum(volume), sum_sales=sum(sales),mean_volume=mean(volume),mean_sales=mean(sales),
sd_vol=sd(volume), sd_sales=sd(sales))
new_df_Tyler <- dati %>%
group_by(year) %>%
filter(city=='Tyler') %>%
summarize(sum_volume=sum(volume), sum_sales=sum(sales), mean_volume=mean(volume),mean_sales=mean(sales),
sd_vol=sd(volume), sd_sales=sd(sales))
ggplot()+
geom_line(data=new_df_Tyler, aes(x=year, y=mean_volume, col='Tyler' ), lwd=1)+
geom_line(data=new_df_BCS, aes(x=year, y=mean_volume, col='BCS' ), lwd=1)+
geom_line(data=new_df_Beaumont, aes(x=year, y=mean_volume, col='Beaumont') , lwd=1)+
geom_line(data=new_df_Wichita, aes(x=year, y=mean_volume, col='Wichita') , lwd=1)+
scale_color_manual(name='Legenda', breaks=c('Tyler','BCS','Beaumont','Wichita'),
values=c('green3','red','pink','lightblue'),
labels=c('Tyler','Bryan-College Station','Beaumont','Wichita Falls'))+
labs(x='Anni',y='Media del valore totale delle vendite',title='Andamento della media del valore delle vendite in Texas')+
theme_classic()
ggplot()+
geom_line(data=new_df_Tyler, aes(x=year, y=mean_sales, col='Tyler' ), lwd=1)+
geom_line(data=new_df_BCS, aes(x=year, y=mean_sales, col='BCS' ), lwd=1)+
geom_line(data=new_df_Beaumont, aes(x=year, y=mean_sales, col='Beaumont') , lwd=1)+
geom_line(data=new_df_Wichita, aes(x=year, y=mean_sales, col='Wichita') , lwd=1)+
scale_color_manual(name='Legenda', breaks=c('Tyler','BCS','Beaumont','Wichita'),
values=c('green3','red','pink','lightblue'),
labels=c('Tyler','Bryan-College Station','Beaumont','Wichita Falls'))+
labs(x='Anni',y='Media del numero totale di vendite',title='Andamento della media del numero totale di vendite in Texas')+
theme_classic()
Analizziamo come variano la deviazione standard dei valori di volume e sales nelle varie città negli anni, continuando a considerare dei summary sugli anni.
ggplot()+
geom_line(data=new_df_Tyler, aes(x=year, y=sd_vol, col='Tyler' ), lwd=1)+
geom_line(data=new_df_BCS, aes(x=year, y=sd_vol, col='BCS' ), lwd=1)+
geom_line(data=new_df_Beaumont, aes(x=year, y=sd_vol, col='Beaumont') , lwd=1)+
geom_line(data=new_df_Wichita, aes(x=year, y=sd_vol, col='Wichita') , lwd=1)+
scale_color_manual(name='Legenda', breaks=c('Tyler','BCS','Beaumont','Wichita'),
values=c('green3','red','pink','lightblue'),
labels=c('Tyler','Bryan-College Station','Beaumont','Wichita Falls'))+
labs(x='Anni',y='Deviazione standard del valore totale delle vendite',title='Andamento della deviazione standard del valore delle vendite in Texas')+
theme_classic()
ggplot()+
geom_line(data=new_df_Tyler, aes(x=year, y=sd_sales, col='Tyler' ), lwd=1)+
geom_line(data=new_df_BCS, aes(x=year, y=sd_sales, col='BCS' ), lwd=1)+
geom_line(data=new_df_Beaumont, aes(x=year, y=sd_sales, col='Beaumont') , lwd=1)+
geom_line(data=new_df_Wichita, aes(x=year, y=sd_sales, col='Wichita') , lwd=1)+
scale_color_manual(name='Legenda', breaks=c('Tyler','BCS','Beaumont','Wichita'),
values=c('green3','red','pink','lightblue'),
labels=c('Tyler','Bryan-College Station','Beaumont','Wichita Falls'))+
labs(x='Anni',y='Deviazione standard del numero totale di vendite',title='Andamento della deviazione standard del numero totale di vendite in Texas')+
theme_classic()
Dalle serie storiche effettuate si nota come a Tyler ci sia un grande mercato di immobili, per lo più molto costosi. A Bryan-College Station c’è un mercato più variegato, dato che la deviazione standard è più alta rispetto alle altre città, quindi si possono acquistare immobili con prezzi diversi. Beaumont è in lenta ripresa, nel 2011 si sono vendute poche case e anche non molto costose, ma dal 2012 il trend è cambiato, sia il valore delle vendite che il numero delle vendite sono aumentati, discostandosi positivamente dalla media. Wichita Falls è rimasta costante negli anni, si sono sempre comprate poche case e dal valore basso.
In generale Bryan-College Station dalle analisi è risultata la città con il mercato più variegato, in cui gli annunci di vendita sono più efficaci e hanno una maggiore risposta, su immobili dal valore variabile e durante tutto l’anno.
A Tyler si acquista molto, è la città dove si acquista di più fra quelle confrontate, ma il mercato è limitato ad immobili dal valore elevato, e si acquista prevalentemente in estate.
A Wichita Falls c’è pochissimo mercato sugli immobili, se ne acquistano per lo più dal valore basso e nei mesi primaverili e estivi.
A Beaumont dal 2012 vi è un trend positivo, sia nel numero di acquisti che sul valore degli immobili, e si acquista per lo più nei mesi estivi.