texas = read.csv(“realestate_texas.csv”, sep = “,”, encoding = “utf-8”) str(texas)
attach(texas)
library(dplyr) library(moments) library(ggplot2)
#1) ANALISI DELLE VARIABILI
dim(texas) #dataset con 8 variabili e 240 osservazioni #variabile city table(city) #varaibile categorica nominale equidistribuita tra le 4 modalità
#variabile year table(year) #variabile temporale equidistribuita tra le sue 5 modalità
#varaibile month table(month) #variabile temporale inerente i 12 mesi dell’anno. L’analisi delle frequenze #assolute denota anche qui una equidistribuzione
#varaibile sales summary(sales) #variabile quantitativa discreta inerente al numero delle vendite effettuate
#variabile volume summary(volume) #variabile quantitativa discreta inerente al volume delle vendite effettuate #in milioni di dollari
#variabile median price summary(median_price) #variabile quantitativa discreta che descrive il prezzo mediano delle vendite
#variabile listings summary(listings) #varaibile quantitativa discreta inerente al numero di annunci attivi di #vendita
#variabile months_inventory summary(months_inventory) #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 righe saranno gli indici calcolati #Per le varibili categoriche invece verrà creata una distribuzione di frequenza
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)
#variabili categoriche #city
N_city = length(city) ni_city = table(city) fi_city = ni_city / N_city
ni_city fi_city
#year N_year = length(year) ni_year = table(year) fi_year = ni_year / N_year
ni_year fi_year
#3) IDENTIFICAZIONE DELLE VARAIBILI CON MAGGIOR ASIMMETRIA E VARABILITÀ #3.1) MAGGIOR ASIMMETRIA
skweness_data = indexes_data[“skweness”,]
#dal dataset, la variabile con maggior asimmetria è volume con il più #alto valore positivo, mentre solo median_price presenta un’asimmetria negativa
#3.2) MAGGIOR VARIABILITÀ #per un confronto tra le variabilità delle variabili 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”) #la variabile volume risutla avere la maggior variabbilità
#4) CREAZIONE DI CLASSI PER UNA VARIABILE QUANTITATIVA #SALES
#verifichiamo i valori minimi e massimi per decidere con quali classi #suddividere le osservazioni della variabile
min(sales) max(sales)
texas\(sales_cl = cut(texas\)sales, breaks = c(50, 100, 150, 200, 250, 300, 350, 400, 450))
#tabella di distribuzione 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))
#la distribuzione ci permette di verificare che di norma nel mese il numero di #vendite effettuate rientrano nella classe 100-150. Inoltre, oltre la metà #delle osservazioni rientrano nella classe successiva. #Solo in rare occasioni si sono riusciti ad eseguire vendite rientranti nelle #classi più alte
ggplot(texas)+ geom_bar(aes(x = texas$sales_cl), stat = “count”, col = “black”, fill = “darkorange”)+ labs(title = “Distribuzione di frequenze assolte di sales_cl”, x = “Classi di sales”, y = “Frequenza assolute”) + theme_light()
#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
#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
#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
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_jul prob_sale_dec12
#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
#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 cosstanti negli anni in #quanto presenta una dev std più bassa di tutte, mentre la città di Tyler ha #registrato un alto valore di questo indice lasciando presupporre che non vi #sia stata un numero di vendite regolari negli anni. Stesso discorso vale per #Brian-College Station che si classifica seconda in quanto a numero di vendite, #ma presenta la più alta variabilità tra le 4 città.
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”)
#come per la variabile sales anche per volume si presenta una medesima #situazione. È logico pensare ad un’elevata correlazione tra le due variabili
#andamento delle vendite medie durante l’anno nelle singole città
#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 quanot 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 devioazione standard che #denota la possibilità di acquistare diverse tipoogie di immobili a differenti #prezzi
#WICHITA FALLS #’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à.