Punto 1: Analisi delle variabili

setwd(“C:/Users/Marce/OneDrive/Desktop/Cartella_R”) #Impostare cartella di lavoro

dati <- read.csv(“realestate_texas.csv”, sep=“,”) head(dati,5)

Sono tutte variabili quantitative, eccetto il nome della citta che è qualitativa e gli anni

che è può essere considerata quallitativa. Anche mesi è da considerare qualitativa

Le variabili che indentificano il tempo posso essere relazionate con le atre variabili,

come le vendite, i valori mediani, ecc. in modo tale da poter generare gli andamenti nel

corso del tempoe di conseguenza fornire degli insight. Possono essere compinate anche con

la variabile citta in grafci a barre sovrapposte, in modo tale da avere una rappresentazione

grafica semplice e efficace.

Avendo già parlate delle variabili temporali e di come esse sono relazionabili alle altre

variabili; per le variabile vendite (sales) e volume si può ricavare l’andamento temporale

delle numero di vendite e del volume in milioni di dollari riferito per città–> possibili

analisi includono calcolo degli indici di posizione e varibilità, nonchè visualizzare la

distribuzione con un grafico per vedere se segue una distribuzione normale o asimmetrica..

Dall’analisi del volume e del totale valore di vendità, si può vedere si discosta rispetto al

valore mediano e fare confronti tra i prezzi mediani delle avrie città in diversi momenti

temporali (mesi o anni9)

Per listing discorso simile a volume e sales.

months_inventory fornisce informazisce su come varia il mercato nel tempo e quindi confronti

con città e le altre varibili sono possibili, oltre che le distribuzioni.

Punto 2: Indici di posizione, variabilità e forma

attach(dati) summary(sales) summary(volume) summary(median_price) summary(listings) summary(months_inventory) sd(sales) sd(volume) sd(median_price) sd(listings) sd(months_inventory) CV<- function(x){ return(sd(x)/mean(x)*100) } CV(sales) CV(volume) CV(median_price) CV(listings) CV(months_inventory) IQR(sales) IQR(volume) IQR(median_price) IQR(listings) IQR(months_inventory)

install.packages(“moments”) library(moments)

skewness(sales) skewness(volume) skewness(median_price) skewness(listings) skewness(months_inventory) kurtosis(sales)-3 kurtosis(volume)-3 kurtosis(median_price)-3 kurtosis(listings)-3 kurtosis(months_inventory)-3

N<- dim(dati)[1]

sales_CL <- cut(dati$sales, breaks= c(79,127, 175.5,247,423))

table(dati\(city, dati\)sales_CL) table(dati\(city, dati\)sales_CL)/N table(dati\(year, dati\)sales_CL) table(dati\(year, dati\)sales_CL)/N table(dati\(month, dati\)sales_CL) table(dati\(month, dati\)sales_CL)/N

Come primo step: summary su sales, volume, median_price, listings e months_inventory

in modo da avere subito minimo, massimo, primo e terzo quartile, media e mediana

Poi deviazione standard (non ho messo la varianza, ma è il quadrato), coefficiente di

variazione (con relativa funzione), e range interquartile. Per indici di forma si sono

calcolati asimmetria e kurtosi. Sono uscite 3 asimmetrie positive(sales, volume, listings),

una negativa (median_price) e ua prossima allozero, quindi distribuizione normale

(months_inventory). Per la kurtosi: 4 platicurtiche e una leptocurtica (volume).

Infine distribuizione di frequenze assolute reltative sono state fatte su city, year e months

in questo caso su sales, si sarebbe pototuto fare anche per altre variabili. Con tutti questi

step si ha un idea abbastanza chiara della situazione dei dati e della loro distribuizione.

Punto 3: Identificazione delle variabili con maggiore variabilità e asimmetria

sd(sales) sd(volume) sd(median_price) sd(listings) sd(months_inventory) CV(sales) CV(volume) CV(median_price) CV(listings) CV(months_inventory)

Per individuare la variabile con piu variabilità si può utilizzare l’analisi della deviazione

standard unita all’analisi del coefficient di variabilità. si trova che la la SD piu alta è

median_price, il che indica una maggiore dispersione dei dati. il Cv piu alto è quello di volume

che indica una variabilità maggiore rispetto la media

skewness(sales) skewness(volume) skewness(median_price) skewness(listings) skewness(months_inventory)

Per l’asimmetria si puo usare l’indici di asimmetria di fisher, che riporta la variabili volume

come la piu asimmetrica, positiva in questo caso.

Punto 4. Creazione di classi per una variabile quantitativa

sales_CL <- cut(dati$sales, breaks= c(79,150, 220,290,380, 423)) N<- dim(dati)[1] ni <- table(sales_CL)
fi <- ni/N
Ni <- cumsum(ni)
Fi <- Ni/N

distr_freq<- as.data.frame(cbind(ni,fi,Ni,Fi))

barplot(distr_freq$ni, main = “Distribuizione delle classi di vendite”, xlab = “Classi di vendite”, ylab = “Frequenze assolute”, ylim = c(0,100), col = “green”, names.arg = rownames(distr_freq))

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(sales_CL)

Punto 5. Calcolo delle probabilità

f_city <- table(dati$city) probabilità1 <- f_city/N p_Beaumont <- probabilità1[“Beaumont”]

f_month <-table(dati$month) probabilità2 <- f_month/N p_Luglio <- probabilità2[“7”]

f_year <-table(dati$year) probabilità3 <- f_year/N p_2012 <- probabilità3[“2012”]

P_dicembre2012 <- p_2012/12

Punto6. Creazione di nuove variabili

dati\(mean_price <- dati\)volume/dati$sales

conversion_rate<- dati\(sales/dati\)listings norm_time <- 1/dati\(months_inventory dati\)efficacia_annunci <- conversion_rate*norm_time

Primo comando, ho aggiunto la colonna del prezzo mezzo, facendo valore totale vendite diviso

numero vendite, cioè la media, risultato espresso in milioni di dollari, corenete con il prezzo

mediano. Per il secondo punto ho ragionato creando due variabili, ovvero il rate di conversione

definito come il rapporto delle vendite sugli annunci attivi e sul tempo normalizzato, calcolato

come il reciproco del tempo (in mesi) degli annunci per vendere le inserzioni.

Infine ho aggiunto la colonna dell’efficacia calcolata come il prodotto tra i due. valori alti # indicano buona efficacia, in quanto si ha ato rate e alto il reciproco dei mesi, valori bassi # indicno bassa efficacia.

Punto 7. Analisi condizionata

install.packages(“dplyr”) library(dplyr)

analisi_condizionata1<-dati %>% group_by(city,year) %>% summarise( media=mean(sales), dev.st=sd(sales) )

ggplot(data=analisi_condizionata1)+ (aes(x = year, y = media, color = city)) + geom_line() + geom_point() + facet_wrap(~city) + # Crea un grafico separato per ogni città labs(title = “Media delle Vendite per Anno e Città”, x = “Anno”, y = “Media Vendite”, color = “Città”) + theme_bw()

analisi_condizionata2<-dati %>% group_by(city,month) %>% summarise( media=mean(sales), dev.st=sd(sales) )

ggplot(data=analisi_condizionata2)+ (aes(x = month, y = media, color = city)) + geom_line() + geom_point() + facet_wrap(~city) + # Crea un grafico separato per ogni città labs(title = “Media delle Vendite per mese e Città”, x = “Mese”, y = “Media Vendite”, color = “Città”) + theme_bw()

Ho generato le due analisi condizionate con le variabili anno e città e mese e citta

rispetto alle vendite usando il pacchetto dplyr. Non ho fatto un summary in quanto

non ne capisco il senso a questo punto. con due ggplot ho creato deu grafici a linee

punti , creando dei grafici ad hoc per città. Diverse prove per trovare le combinazioni

che mi soddisfacevano,

Punto 8. Creazione di visualizzazioni con ggplot2

per i grafici personalizzati, basta vedere quelli sopra.

install.packages(“ggplot2”) library(ggplot2)

boxplot(median_price~city)

ggplot(data=dati)+ geom_bar(aes(x=month, y=sales, fill=city),
position = “fill”,
stat = “summary”, fun=“mean”, col =“black”)+
labs(title= “Distribuizione delle vendite per mese e città”, x = “Mesi”,
y = “Vendite”)+
scale_y_continuous(breaks = seq(0,450,5))+ theme_classic()

dati\(date <- as.Date(paste(dati\)year, dati$month, “01”, sep = “-”))

ggplot(data=dati, aes(x = date, y = sales)) + geom_line() + facet_wrap(~city) + scale_x_date(date_breaks = “1 year”, date_labels = “%Y”) + labs( title = “Andamento nel tempo”, x = “Tempo”, y = “Vendite” ) + theme_minimal()

Punto9. Conclusioni

Sicuramente si può dire che gli anni 2013 e 2014 sono stati anni con piu vendite e che i mesi

migliori risultano essere Maggio, Giugno e Luglio. Per quanto riguarda le città, la cittadine

Tyler risulta essere quella dove si vendono piu immobili, mentre Wichita Falls dove se ne

vendono meno

analisi_condizionata3<-dati %>% group_by(city,listings) %>% summarise( media=mean(sales), dev.st=sd(sales) )

ggplot(data=analisi_condizionata3)+ (aes(x = listings, y = media, color = city)) + geom_line() + geom_point() + facet_wrap(~city) + labs(title = “Media delle Vendite per Città, basato sul numero delle inserzioni”, x = “Numero Inserzioni”, y = “Media Vendite”, color = “Città”) + theme_bw()

Con questa analisi condizionata, si vede come la media delle vendite delle città varia in

base al numero di annunci attivi, Per Tyler si hanno tanti annunci e tante vendite, per

Wichita Falls, pochi annunci e poche vendite, situazioni intermedie per Beaumont e

Bryan College Station. Per quest’ ultima il numero di annunci è relatiamente basso, ma

con un buon quantitativo di vendite, quindi il rapporto annunci/vendite è il migliore.

boxplot(median_price~city)

Dal boxplot del prezzo mediano si vede come Bryan College Station ha il prezzo mediano

piu alto. DAll’altra parte Wichita Falls riporta il prezzo mediano piu basso.

BCS riporta anche riquadro centrale piu ampio, il che significa che ha il IQR piu ampio

rispetto alle altre città.Sono presenti degli outliers per Beaumont e Wichina Falls.

Beaumont e Tyler hanno prezzi mediani simili. Tuttavia, il riquadro di Beaumont è più corto

di quello di Tyler, indicando una minore variabilità nel 50% centrale dei prezzi di vendita

delle case.

boxplot(volume~city)

Da questo boxplot si nota come il valore totale delle vendite per BCS Bryan-Colleil il più alto,

mentre WF il piu basso.BCS rivela anche la maggiore variabilità di valore totale delle vendite

Si nota come il baffo superiore di BCS è considerevolmente più lungo di quello inferiore,

il che indica un’asimmetria positiva. Ciò suggerisce che, sebbene la mediana sia più alta,

ci sono anche periodi con volumi di vendita totali eccezionalmente elevati che spingono

ulteriormente l’estremità superiore della distribuzione. Sono presenti delgi outliner in Tyler.

boxplot(volume~year)

In questo altro boxplot si nota un andamento crescente del volume delle vendite all’aumentare

degli ann, con il valore mediano che gradualmente sale, cosi come la variabilità, indicando

un aumento del mercato immobiare col tempo.

ggplot(data=dati)+ geom_col(aes(x=month, y=sales, fill=city),
position = “fill”,
col =“black”)+
labs(title= “Distribuizione delle vendite per mese e città”, x = “Mesi”,
y = “Vendite”)+
scale_y_continuous(breaks = seq(0,450,25))+ theme_classic()

Il grafico normalizzato conferma tutte le osservazioni fatte prima sulle città e sui periodi

migliori e peggiori per le vendite.