texas = read.csv("realestate_texas.csv", sep = ",", encoding = "utf-8")
head(texas, 5)
## 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
attach(texas)
library(dplyr)
##
## Caricamento pacchetto: 'dplyr'
## I seguenti oggetti sono mascherati da 'package:stats':
##
## filter, lag
## I seguenti oggetti sono mascherati da 'package:base':
##
## intersect, setdiff, setequal, union
library(moments)
library(ggplot2)
1) ANALISI DELLE VARIABILI
dim(texas)
## [1] 240 8
dataset con 8 variabili e 240 osservazioni
VARIABILE CITY
table(city)
## city
## Beaumont Bryan-College Station Tyler
## 60 60 60
## Wichita Falls
## 60
varaibile categorica nominale equidistribuita tra le 4 modalità
VARIABILE YEAR
table(year)
## year
## 2010 2011 2012 2013 2014
## 48 48 48 48 48
variabile temporale equidistribuita tra le sue 5 modalità
VARIABILE MONTH
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
variabile temporale inerente i 12 mesi dell’anno. L’analisi delle frequenze assolute denota anche qui una equidistribuzione
VARIABILE SALES
summary(sales)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 79.0 127.0 175.5 192.3 247.0 423.0
variabile quantitativa discreta inerente al numero delle vendite effettuate. I valori oscillano in un range rientrante nell’intervallo 79 - 423
VARIABILE VOLUME
summary(volume)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8.166 17.660 27.062 31.005 40.893 83.547
variabile quantitativa discreta inerente al volume delle vendite effettuate in milioni di dollari il cui range va da un minimo di 8.166 milioni di usd ad un massimo di 83.547 milioni usd
VARIABILE MEDIAN PRICE
summary(median_price)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 73800 117300 134500 132665 150050 180000
variabile quantitativa discreta che descrive il valore mediano del prezzo delle vendite
VARIABILE LISTINGS
summary(listings)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 743 1026 1618 1738 2056 3296
varaibile quantitativa discreta inerente al numero di annunci attivi di vendita
VARAIBILE MONTH INVENTORY
summary(months_inventory)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.400 7.800 8.950 9.193 10.950 14.900
varaibile quantitatvi espressa in mesi ed inerente al tempo necessario per effettiva una vendita una volta pubblicato il relativo annuncio
2) INDICI DI POSIZIONE, VARIABILITÀ E FORMA per le variabili categoriche verrà calcolata media,mediana, varianza, dev std, indice di asimmetria e curtosi. Gli indici verrano riuniti in un datafame, in cui le colonne saranno i nomi delle variabili del dataset texas, mentre le osservazioni saranno rappresentate dagli indici calcolati. Per le varibili categoriche invece verrà creata una distribuzione di frequenza assoluta e relativa.
indexes = function(x){
return(c(mean(x),
median(x),
var(x),
sd(x),
skewness(x),
kurtosis(x)-3))
}
indexes_sales = indexes(sales)
indexes_volume = indexes(volume)
indexes_median_price = indexes(median_price)
indexes_listings = indexes(listings)
indexes_months_inventory = indexes(months_inventory)
row_names = c("mean", "median","variance", "standard deviation", "skweness",
"kurtosis")
indexes_data = data.frame(indexes_sales,
indexes_volume,
indexes_median_price,
indexes_listings,
indexes_months_inventory,
row.names = row_names)
indexes_data
## indexes_sales indexes_volume indexes_median_price
## mean 192.2916667 31.005188 1.326654e+05
## median 175.5000000 27.062500 1.345000e+05
## variance 6344.2995119 277.270692 5.135730e+08
## standard deviation 79.6511112 16.651447 2.266215e+04
## skweness 0.7181040 0.884742 -3.645529e-01
## kurtosis -0.3131764 0.176987 -6.229618e-01
## indexes_listings indexes_months_inventory
## mean 1.738021e+03 9.19250000
## median 1.618500e+03 8.95000000
## variance 5.665690e+05 5.30688912
## standard deviation 7.527078e+02 2.30366862
## skweness 6.494982e-01 0.04097527
## kurtosis -7.917900e-01 -0.17444754
VARIABILI CARìTEGORICHE CITY
N_city = length(city)
ni_city = table(city)
fi_city = ni_city / N_city
ni_city
## city
## Beaumont Bryan-College Station Tyler
## 60 60 60
## Wichita Falls
## 60
fi_city
## city
## Beaumont Bryan-College Station Tyler
## 0.25 0.25 0.25
## Wichita Falls
## 0.25
YEAR
N_year = length(year)
ni_year = table(year)
fi_year = ni_year / N_year
ni_year
## year
## 2010 2011 2012 2013 2014
## 48 48 48 48 48
fi_year
## year
## 2010 2011 2012 2013 2014
## 0.2 0.2 0.2 0.2 0.2
3) IDENTIFICAZIONE DELLE VARAIBILI CON MAGGIOR ASIMMETRIA E VARABILITÀ 3.1) ASIMMETRIA
skweness_data = indexes_data["skweness",]
skweness_data
## indexes_sales indexes_volume indexes_median_price indexes_listings
## skweness 0.718104 0.884742 -0.3645529 0.6494982
## indexes_months_inventory
## skweness 0.04097527
La variabile con la maggior asimmetria risulta essere “volume”. Essa presenta il più alto valoe positivo determinando pertanto un’asimmetria negativa ovvero la distribuzione dela variabile tende a concentrarsi verso i valori più bassi e a sinisra della media, come è possibile osservare dal grafico sottostante:
plot(density(volume), main = "")+
abline(v = mean(volume), col = "blue")+
title("Distribuzione della variabile volume")
## integer(0)
l’unica varabile ad avere una skewness negaiva è la variabile median_price, facendo si che la sua distribuzione concentri le osservazioni verso valori più alti e a destra della media
plot(density(median_price), main = "")+
abline(v = mean(median_price), col = "blue")+
title("Distribuzione della variabile median price")
## integer(0)
3.2) MAGGIOR VARIABILITA’ Per calcolare la variabilità tra variabili di diversa grandezza, applico il coefficiente di variazione
CV = function(x){
return((sd(x) / mean(x)*100))
}
CV_sales = CV(sales)
CV_volume = CV(volume)
CV_median_price = CV(median_price)
CV_listing = CV(listings)
CV_months_inventory = CV(months_inventory)
cv_data = data.frame(CV_sales, CV_volume, CV_median_price, CV_listing,
CV_months_inventory,
row.names = "CV")
cv_data
## CV_sales CV_volume CV_median_price CV_listing CV_months_inventory
## CV 41.42203 53.70536 17.08218 43.30833 25.06031
come può essere osservato dal dataset sopra riportato, la variabile volume presenta la maggior variabilità grazie ad un coefficiente di variazione pari a 53,70, mentre la variabile median_price presenta la minor variabilità con coefficiente di variaizone di 17,08
4) CREAZIONE DI CLASSI PER UNA VARIABILE QUANTITATIVA VARAIBILE SALES
verifichiamo i valori minimi e massimi per decidere con quali classi suddividere le osservazioni della variabile
min(sales)
## [1] 79
max(sales)
## [1] 423
suddividiamo la distribuzione della variabile in classi di ampiezza 50 partendeo da 50 e terminando con 450
texas$sales_cl = cut(texas$sales,
breaks = c(50, 100, 150, 200, 250, 300, 350, 400, 450))
tabella di distribuzione di frequenza
N = length(texas$sales_cl)
ni = table(texas$sales_cl)
fi = ni / N
Ni = cumsum(ni)
Fi = Ni / N
distr_freq_sales = data.frame(cbind(ni,fi,Ni, Fi))
distr_freq_sales
## ni fi Ni Fi
## (50,100] 21 0.08750000 21 0.0875000
## (100,150] 72 0.30000000 93 0.3875000
## (150,200] 56 0.23333333 149 0.6208333
## (200,250] 32 0.13333333 181 0.7541667
## (250,300] 34 0.14166667 215 0.8958333
## (300,350] 13 0.05416667 228 0.9500000
## (350,400] 9 0.03750000 237 0.9875000
## (400,450] 3 0.01250000 240 1.0000000
La tabella ci permette di osservare come nel mercato immobiliare la maggior frequenza di vendite rientri nella classe 100-150. Inoltre è interessante osservare come l’89% delle valori rientri nel range 50-300. Ciò ci permette di affermare che nel mercato immobiliare del texas risulti difficile superare un numero di vendite di immobili superiore a 300.
ggplot(texas)+
geom_bar(aes(x = texas$sales_cl),
stat = "count",
col = "black",
fill = "darkorange")+
labs(title = "Distribuzione di frequenze assolute di sales_cl",
x = "Classi di sales",
y = "Frequenza assolute") +
theme_light()
## Warning: Use of `texas$sales_cl` is discouraged.
## ℹ Use `sales_cl` instead.
5) CALCOLO DELLE PROBABILITÀ *#5.1) Probabilità che una vendita sia effettuata nella città di Beaumont
casi_tot = sum(listings)
casi_fav_beaumont = texas %>%
group_by(city) %>%
filter(city == "Beaumont") %>%
summarise(casi_favorevoli = sum(listings))
prob_Beaumont = casi_fav_beaumont$casi_favorevoli / casi_tot
prob_Beaumont
## [1] 0.2415559
5.2) Probabilità che la vendita sia stata effettuata a luglio
casi_possibili_jul = sum(sales)
casi_favorevoli_jul = texas %>%
group_by(month) %>%
filter(month == 7) %>%
summarise(sum_sales_july =sum(sales))
prob_sale_july = casi_favorevoli_jul$sum_sales_july / casi_possibili_jul
prob_sale_july
## [1] 0.1021668
5.3) Probabilità che una casa sia stata venduta nel mese di dicembre 2012
casi possibili uguale al punto di sopra pertanto non procedo nuovamente al calcolo ma la inizializzo in un nuovo oggetto
casi_possibili_dec12 = casi_possibili_jul
casi_fav_dec12 = texas %>%
group_by(year) %>%
filter(year == 2012)%>%
filter(month == 12) %>%
summarise(sum_sales_dec12 = sum(sales))
prob_sale_dec12 = casi_fav_dec12$sum_sales_dec12 / casi_possibili_dec12
prob_sale_dec12
## [1] 0.01393283
6)CREAZIONE NUOVE VARIABILI Nuova colonna prezzo medio a partire dalle variaibli disponibili Prezzo medio ricavato da volume su sales per ogni mese in percentuale
avarage_selling_price = c((volume/sales)*100)
texas$avarage_selling_price = avarage_selling_price
Indice di penterazione del mercato con rapprto in % tra sales e listings
mkt_penetration_rate_index = c((sales / listings)*100)
texas$mkt_penetration_rate_index = mkt_penetration_rate_index
head(texas, 10)
## 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
## 6 Beaumont 2010 6 189 27.219 122800 1803 11.1
## 7 Beaumont 2010 7 164 22.706 124300 1857 11.7
## 8 Beaumont 2010 8 174 25.237 136800 1830 11.6
## 9 Beaumont 2010 9 124 17.233 121100 1829 11.7
## 10 Beaumont 2010 10 150 23.904 138500 1779 11.5
## sales_cl avarage_selling_price mkt_penetration_rate_index
## 1 (50,100] 17.06265 5.414220
## 2 (100,150] 16.37963 6.809584
## 3 (150,200] 15.76978 10.775607
## 4 (150,200] 13.40950 11.709602
## 5 (200,250] 14.27376 11.405985
## 6 (150,200] 14.40159 10.482529
## 7 (150,200] 13.84512 8.831449
## 8 (150,200] 14.50402 9.508197
## 9 (100,150] 13.89758 6.779661
## 10 (100,150] 15.93600 8.431703
7) ANALISI CONDIZIONATA
cities = texas %>%
group_by(city) %>%
summarise(mean_sales = mean(sales),
dev_std_sales = sd(sales))
ggplot(cities)+
geom_bar(aes(x = city,
y = mean_sales),
stat = "identity",
col = "black",
fill = "lightblue")+
labs(title = "Media delle vendite nelle città",
x = "Città",
y ="Media delle vendite")
ggplot(cities)+
geom_bar(aes(x = city,
y = dev_std_sales),
stat = "identity",
col = "black",
fill = "blue")+
labs(title = "Deviazione standard delle vendite nelle città",
x = "Città",
y ="Deviazione standard")
La città di Tyler è quella in cui mediamente negli anni sono state
eseguite il maggior numero di vendite, mentre Wichita Falls è la città
che ha registrato il minor numero di vendite. Analizzando la dev_std è
possibile veriifcare come a Wichita Falls le vendite sono state
piuttosto costanti negli anni in quanto presenta una dev std più bassa
di tutte; considerando sempre l’indice della deviazione standard, esso
presenta i maggiori valori nelle città di Bryan-College Station in
primis e Tyler a seguire, presupponendo pertanto che vi sia un mercato
piuttosto instabile e costituito da periodi cd “morti” ad altri con alta
frequenza di vendite.
cities2 = texas %>%
group_by(city) %>%
summarise(mean_volume = mean(volume),
dev_std_volume = sd(volume))
ggplot(cities2) +
geom_bar(aes(x = city,
y = mean_volume),
stat = "identity",
col = "black",
fill = "green")+
labs(title = "Volumi medi di vendita espressi in milioni di $",
x = "Città",
y = "Volumi medi di vendita")
ggplot(cities2) +
geom_bar(aes(x = city,
y = dev_std_volume),
stat = "identity",
col = "black",
fill = "darkgreen")+
labs(title = "Deviazione std dei volumi vendita espressi in milioni di $",
x = "Città",
y = "Dev Std volumi di vendita")
L’andamento della variabile volume segue la falsa riga di sales. Anche
in questo caso i maggiori profitti si hanno nella città di Tyler e a
seguire in quella di Bryan-College Station, solo che quest’ultima
presenta un’alta variabilità anche nei volumi di vendita, ppresupponendo
che il mercato sia molto variegato anche a livello di prezzo.
ANDAMENTO DELLE VENDITE MEDIE DURANTE L’ANNO NELLE CITTA’
BEAUMONT
years_beaumont = texas %>%
group_by(month) %>%
filter(city == "Beaumont") %>%
summarise(mean_sales = mean(sales))
BRYAN-COLLEGE STATION
years_Bryan_College_Station = texas %>%
group_by(month) %>%
filter(city == "Bryan-College Station") %>%
summarise(mean_sales = mean(sales))
TYLER
years_tyler = texas %>%
group_by(month) %>%
filter(city == "Tyler") %>%
summarise(mean_sales = mean(sales))
WICHITA FALLS
years_wichita_falls = texas %>%
group_by(month) %>%
filter(city == "Wichita Falls") %>%
summarise(mean_sales = mean(sales))
ggplot()+
geom_line(data = years_beaumont, aes(x = month, y = mean_sales, col = "Beaumont"))+
geom_line(data = years_Bryan_College_Station,
aes(x = month, y = mean_sales, col = "Bryan-College Station"))+
geom_line(data = years_tyler, aes(x = month, y = mean_sales, col = "Tyler"))+
geom_line(data = years_wichita_falls,
aes(x = month, y = mean_sales, col = "Wichita Falls"))+
scale_x_continuous(breaks = seq(1,12,1))+
scale_color_manual(name = "Legenda",
breaks = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls"),
values = c("blue", "green", "red", "orange"),
labels = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls")) +
labs(title = "Andamento medio del numero di vendite nei mesi",
x ="Mesi", y ="Numero totale delle vendite") +
theme_get()
VALORE DELLE VENDITE NEGLI ANNI
years = texas %>% group_by(year)
ggplot(years,
aes(x = year, y= sales, fill = city))+
geom_bar(stat = "identity",
position = "dodge")+
labs(title = "Confronto vendite negli anni tra le città",
x = "Anni",
y = "Totale vendite")
ggplot(years,
aes(x = year, y= volume, fill = city))+
geom_bar(stat = "identity",
position = "dodge")+
labs(title = "Confronto volumi di vendite in milioni di $ negli anni tra le città",
x = "Anni",
y = "Totale volumi di vendita")
8) CREAZIONE DI VISUALIZZAZIONI CON
GGPLOT2
Boxplot prezzo mediano
ggplot(texas)+
geom_boxplot(aes(x = city, y = median_price))+
labs(title = "Confronto del prezzo mediano tra città",
x ="Città",
y = "Prezzo mediano")
beaumont = texas %>%
group_by(year) %>%
filter(city == "Beaumont") %>%
summarise(mean_sales = mean(sales),
tot_sales = sum(sales),
mean_volume = mean(volume),
tot_volume = sum(volume))
bcs = texas %>%
group_by(year) %>%
filter(city == "Bryan-College Station") %>%
summarise(mean_sales = mean(sales),
tot_sales = sum(sales),
mean_volume = mean(volume),
tot_volume = sum(volume))
tyler = texas %>%
group_by(year) %>%
filter(city == "Tyler") %>%
summarise(mean_sales = mean(sales),
tot_sales = sum(sales),
mean_volume = mean(volume),
tot_volume = sum(volume))
wichita = texas %>%
group_by(year) %>%
filter(city == "Wichita Falls") %>%
summarise(mean_sales = mean(sales),
tot_sales = sum(sales),
mean_volume = mean(volume),
tot_volume = sum(volume))
andamento medio delle vendite negli anni divisi per città
ggplot()+
geom_line(data = beaumont,
aes(x = year, y = mean_sales, col = "Beaumont"))+
geom_line(data = bcs,
aes(x = year, y = mean_sales, col = "Bryan-College Station"))+
geom_line(data = tyler,
aes(x = year, y=mean_sales, col = "Tyler"))+
geom_line(data = wichita,
aes(x = year, y = mean_sales, col = "Wichita Falls")) +
scale_color_manual(name = "Legenda",
breaks = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls"),
values = c("blue", "green", "red", "orange"),
labels = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls")) +
labs(title = "Andamento medio del numero di vendite negli anni",
x ="Anni", y ="Medie delle vendite") +
theme_get()
vendite totali negli anni nelle diverse città
ggplot()+
geom_line(data = beaumont,
aes(x = year, y = tot_sales, col = "Beaumont"))+
geom_line(data = bcs,
aes(x = year, y = tot_sales, col = "Bryan-College Station"))+
geom_line(data = tyler,
aes(x = year, y=tot_sales, col = "Tyler"))+
geom_line(data = wichita,
aes(x = year, y = tot_sales, col = "Wichita Falls")) +
scale_color_manual(name = "Legenda",
breaks = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls"),
values = c("blue", "green", "red", "orange"),
labels = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls")) +
labs(title = "Numero di vendite totali negli anni",
x ="Anni", y ="Totale delle vendite") +
theme_get()
andamento delle medie dei volumi di vendita negli anni
ggplot()+
geom_line(data = beaumont,
aes(x = year, y = mean_volume, col = "Beaumont"))+
geom_line(data = bcs,
aes(x = year, y = mean_volume, col = "Bryan-College Station"))+
geom_line(data = tyler,
aes(x = year, y=mean_volume, col = "Tyler"))+
geom_line(data = wichita,
aes(x = year, y = mean_volume, col = "Wichita Falls")) +
scale_color_manual(name = "Legenda",
breaks = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls"),
values = c("blue", "green", "red", "orange"),
labels = c("Beaumont", "Bryan-College Station",
"Tyler", "Wichita Falls")) +
labs(title = "Andamento medio dei volumi di vendita negli anni",
x ="Anni", y ="Media dei volumi di vendita") +
theme_get()
*CONSIDERAZIONI FINALI
BEUAMONT la città dopo un iniziale trend negativo, ha ripreso in positivo l’attività immobiliare sia per quanto concerne il numero di vendite che i suoi volumi.
TYLER Tyler si dimostra essere la città con il più alto valore aggiunto del settore. Infatti non solo registra negli anni il più alto numero di vendite ma anche i più alti volumi di vendita, dimostrando che in questa città vengono vendute molti immobilie e ad un alto prezzo.
BRYAN-COLLEGE STATION I dati riscontrati sono secondi solo alla città di Tyler, ma il mercato risulta essere più variegato: infatti essa denota un’alta deviazione standard che denota la possibilità di acquistare diverse tipoogie di immobili a differenti prezzi
WICHITA FALLS L’unica città in cui sia il numero che i volumi di vendita sono rimasti sempre bassi. Gli immobili hanno scarso appeal e il loro prezzo riuslta essere netta- mente inferiore rispetto alle altre città.