#ANALISI ESPLORATIVA DEL MERCATO IMMOBILIARE DEL TEXAS

Passaggi preliminari {r lettura_dati} dati <- read.csv("realestate_texas.csv") dim(dati)

{r assegnazione oggetto "N"} N <- dim(dati)[1]

{r uso attach} attach(dati)

##1. ANALISI DELLE VARIABILI Identifica e descrivi il tipo di variabili statistiche presenti nel dataset. Valuta come gestire le variabili che sottintendono una dimensione tempo e commenta sul tipo di analisi che può essere condotta su ciascuna variabile.

NOME VARIABILE SIGNIFICATO TIPO VARIABILE
city città Variabile qualitativa nominale
year anno di riferimento Variabile qualitativa ordinale
month mese di riferimento Variabile qualitativa ordinale
sales numero totale di vendite Variabile quantitativa discreta
volume valore totale delle vendite in milioni di dollari Variabile quantitativa continua
median_price prezzo mediano di vendite in dollari Variabile quantitativa continua
listings numero totale di annunci attivi Variabile quantitativa discreta
months_inventory mesi necessari per vendere tutte le inserzioni correnti e passate Variabile quantitativa continua

Per le variabili quantitative si posso condurre tutte le analisi che riguardano gli indici di posizione, dispersione e forma. Per quanto riguarda le variabili qualitative, non si possono condurre le stesse analisi poiché essere richiedono numeri e non modalità, se non quella dell’individuazione della moda che si basa sull’analisi delle frequenze.

Le variabili city, year e month fondamentalmente ricoprono il ruolo equivalente a quello di una variabile ID. Infatti non c’è la possibilità che la frequenza di una città possa essere minore dell’altra e lo stesso vale per le altre due.

##2.INDICI DI POSIZIONE, VARIABILITÀ E FORMA Calcola Indici di posizione, variabilità e forma per tutte le variabili per le quali ha senso farlo, per le altre crea una distribuzione di frequenza.

Alla luce della considerazione esposta nella risposta alla RICHIESTA (1), le variabili city, year e month hanno frequenze assolute uguali. La varibile che guida la cadenza delle rilevazione è quella dei mesi, perché le rilevazioni sono mensili; ogni città (4 in totale) vede rilevati 12 mesi per ogni anno dal 2010 al 2014; quindi il nome di ogni città verrà ripetuto per 60 righe (12 mesi x 5 anni), di conseguenza persino la moda diventa un indice irrilevante da calcolare, così come un eventuale indice di gini. Di seguito, per completezza, il codice utilizzato per calcolare le frequenze assolute per city, year e month:

```{r calcolo frequenze variabili city, month e sales} #city table(city)

#month table(month)

#year table(year)


**Variabile: sales**
**Nota**: Gli indici di posizione sono stati calcolati per la variabile sales con le formule di riferimento. 
Per le variabili successive mi sono avvalso della funzione summary.

```{r calcolo indici posizione variabile sales}
#Moda
table(sales)

#media
mean(sales)

#mediana
median(sales)

#quartili
quantile(sales)

Indici di variabilità ```{r calcolo indici variabilità variabile sales} summary(sales)

range(sales)

IQR((sales))

var(sales)

sd(sales)

CV <- function(x){ return(sd(x)/mean(x)*100) }

CV(sales)



Indici di forma
**Nota**: gli indici di forma questa volta sono stati calcolati con le formule mostrate nelle videolezioni. Successivamente mi sono avvalso del pacchetto "moments"
```{r calcolo indici forma variabile sales}

plot(density(sales))

#Asimmetria
mu <- mean(sales)
sigma <- sd(sales)

m3_sales <- sum((sales-mu)^3)/N

Asim_Index_Sales <- m3_sales/sigma^3

abline(v=mu, col=2)


#Curtosi
m4_sales <- sum((sales-mu)^4)/N

kurtosi_index_sales <- (m4_sales/sigma^4)-3

Da questo momento in poi gli indici di posizione li ho calcolati usando la funzione summary e quelli di forma usando il pacchetto moments

{r installo pacchetto moments} install.packages("moments") library(moments)

Indici di posizione per tutte le variabili {r Calcolo gli indici di posizione} summary(dati)

Variabile: volume

{r Visualizzo frequenze assolute per individuare moda} #Moda table(volume)

Indici di variabilità ```{r Calcolo indici di variabilità} range(volume)

IQR((volume))

var(volume)

sd(volume)

CV(volume)


Indici di forma
```{r Calcolo indici di forma}
plot(density(volume))

mu_volume = mean(volume)

abline(v=mu_volume, col=2)

skewness(volume)

kurtosis(volume)

Variabile: median_price {r Visualizzo frequenze assolute per individuare moda} #Moda table(median_price)

Indicidi variabilità ```{r Calcolo indici di variabilità} range(median_price)

IQR((median_price))

var(median_price)

sd(median_price)

CV(median_price)


Indici di forma
```{r Calcolo indici di forma}
plot(density(median_price))

mu_median_price = mean(median_price)

abline(v=mu_median_price, col=2)

skewness(median_price)

kurtosis(median_price)

Variabile listings {r Visualizzo frequenze assolute per individuare moda} #Moda table(listings)

Indici di variabilità ```{r Calcolo gli indici di variabilità} range(listings)

IQR((listings))

var(listings)

sd(listings)

CV(listings)


Indici di forma
```{r Calcolo gli indici di forma}
plot(density(listings))

mu_listings = mean(listings)

abline(v=mu_listings, col=2)

skewness(listings)

kurtosis(listings)

Variabile: months_inventory {r Visualizzo frequenze assolute per individuare moda} table(months_inventory)

Indici di variabilità ```{r Calcolo gli indici di variabilità} range(months_inventory)

IQR((months_inventory))

var(months_inventory)

sd(months_inventory)

CV(months_inventory)


Indici di forma
```{r Calcolo gli indici di forma}
plot(density(months_inventory))

mu_months_inventory = mean(months_inventory)

abline(v=mu_months_inventory, col=2)

skewness(months_inventory)

kurtosis(months_inventory)

Nota: Come detto, l’indice di GINI non ha senso che venga calcolato per le variabili “year”, “month” e “city”, ma neanche per le variabili su cui abbiamo condotto l’analisi per l’individuazione dei vari indici. Questo non si calcola poiché non essendo variabili qualitative, i relativi valori nel dataset non sono le modalità di cui conteggiare la frequenza da utilizzare nella formula per calcolarlo, ma i valori quantitativi veri e propri assunti dalla variabile.

Per trovare la moda ho usato la funzione table e individuato a occhio i valori con la frequenza assoluta più alta. La cosa più efficiente (a maggior ragione se il dataset fosse stato ancora più grande) sarebbe stato far emergere per ogni città la moda e poi individuare fra i 4 valori quello con la frequenza più grande. Purtroppo, non sono riuscito ad impostare il codice per fare ciò, però in situazioni del genere a rigor di logica mi sembrerebbe il metodo più efficiente per questo tipo di ricerca.

##3.IDENTIFICAZIONE DELLE VARIABILI CON MAGGIORE VARIABILITA’ E ASIMMETRIA Qual è la variabile con variabilità più elevata? Come ci sei arrivato? E quale quella più asimmetrica?

La variabile con variabilità più elevata è volume. L’ho individuata confrontando i coefficienti di variazione. Quello di volume è: 53,7(%). Questo indica che la variabile volume presenta una deviazione standard che è quasi il 54% della media. Quella più asimmetrica è la variabile volume e l’ho individuata considerando l’indice di asimmetria, che per tale variabile è uguale a 0,88. È un’asimmetria positiva, per la quale quindi sono maggiormente presenti valori bassi della variabile e per la quale quindi media > mediana > moda

##4.CREAZIONE DI CLASSI PER UNA VARIABILE QUANTITATIVA Creazione classi {r Stablisco le classi} dati$sales_cl <- cut(sales, breaks = c(70,130,190,250,310,370,430))

Creazione distribuzione di frequenza {r Distribuzione di frequenze} ni <- table(dati$sales_cl) fi <- table(dati$sales_cl)/N Ni <- cumsum(ni) cbind(ni,fi,Ni,Fi) Fi <- Ni/N

Creazione grafico {r Installo ggplot 2 x grafici, echo = FALSE} install.packages("ggplot2") library(ggplot2)

{r Creo il grafico} ggplot(data=dati)+ geom_bar(aes(x=sales_cl), stat = "count", col = "red", fill = "green")+ labs(title = "Distribuzione delle classi di vendita", x = "N° vendite in classi", y = "Frequenze assolute")+ scale_y_continuous(breaks = seq(0,75,25))

Calcolo Indice di Gini ```{r Indice di Gini} 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) }

table(dati$sales_cl)

gini.index(dati$sales_cl)

Il risulato è quasi 1 (0,93) e quindi c'è quasi la massima eterogeneità


##**5.CALCOLO DELLE PROBABILITA'**
Qual è la probabilità che presa una riga a caso di questo dataset essa riporti la città “Beaumont”?
La probabilità che presa una riga a caso riporti la città “Beaumont” è del 25% (= 60/240).

E la probabilità che riporti il mese di Luglio?
La probabilità del mese di luglio è dell’8,3% (= 20/240: ogni città è considerata per 5 anni --> esistono 5 righe con luglio per ogni città --> 5 righe con luglio x 4 città = 20 righe con luglio).

E la probabilità che riporti il mese di dicembre 2012?
La probabilità che una riga riporti il mese di dicembre 2012 è 4/240 = 1,7% (il 2012 è presente 4 volte, uno per città)


##**6.CREAZIONE DI NUOVE VARIABILI**
**Esiste una colonna col prezzo mediano, creane una che indica invece il prezzo medio, utilizzando le altre variabili che hai a disposizione.**

Creazione colonna prezzo-medio
```{r mean_price}
dati$mean_price <- volume/sales

Boxplot con distribuzione prezzi medi x città {r boxplot mean_price} ggplot(data=dati)+ geom_boxplot(aes(x=city, y=mean_price), color = "red", fill = "blue")+ labs(x="Citta", y="prezzo medio", title="Prezzo medio per città")

Calcolo media dei prezzi medi per città {r average mean_price x city} dati %>% group_by(city) %>% summarise(media_prezzi_medi = mean(mean_price))

Creazione dataframe {r dataframe} dati_media_prz_mediXcitta <- dati %>% group_by(city) %>% summarise(media_prezzi_medi = mean(mean_price))

Grafico media dei prezzi medi per città {r boxplot} ggplot(data=dati_media_prz_mediXcitta) + geom_bar(aes(x=city, y=media_prezzi_medi), stat="identity", col = "red", fill = "blue") + labs(title = "Media dei prezzi medi x città", x = "Città", y = "prezi medi per città")+ scale_y_continuous(breaks = seq(0,1,0.1))

Il prezzo medio più alto è quello di BC Station. Quello più basso di Wichita Falls

Prova a creare un’altra colonna che dia un’idea di “efficacia” degli annunci di vendita. Riesci a fare qualche considerazione? Per dare un’idea dell’efficacia degli annunci di vendita ho pensato di calcolare l’attuale ritmo di vendita dividendo il numero di annunci attivi (listings) per il numero di mesi necessari a smaltire smaltire le inserzioni all’attuale ritmo di vendita (months_inventory). Il risultato sarà rappresentato dalle inserzioni smaltite mensilmente che quindi mi darà una velocità di vendita. Se v=s/t, allora s=listings e t=months inventory.

{r calcolo velocità smaltimento} dati$current_sales_speed <- listings/months_inventory

Un modo per provare a fare qualche considerazione come richiesto, considerando il valore informativo minimo del dato per singola riga, mi è sembrato quello di calcolare una media del ritmo di vendita condizionata alla città con il pacchetto dplyr, in modo da poter comprendere quale sia la città con la maggior velocità media di smaltimento di inserzioni.

Installo dplyr {r installo dplyr} install.packages("dplyr") library(dplyr)

{r media velocità vendite per città} dati %>% group_by(city)%>% summarise(media_velocità_vendite = mean(current_sales_speed)) Quello che emerge è che Wichita Falls è la città con il ritmo medio di vendita più basso, mentre Tyler è la città con il maggior numero di inserzioni smaltite mensilmente.

##7.ANALISI CONDIZIONATA Usa il pacchetto dplyr o il linguaggio base di R per effettuare analisi statistiche condizionate per città, anno e mese. Genera dei summary (media, deviazione standard) e rappresenta graficamente i risultati

Cerco media e dev. st. per le variabili di sales e listings

Condizionamento alla variabile “city” {r media e dev. st. di sales per città} dati %>% group_by(city) %>% summarise(vendite_medie = mean(sales), variabilita_vendite = sd(sales), annunci_medi=mean(listings), variabilita_annunci = sd(listings))

Creazione dataframe {r dataframe} dati_condition_city <- dati %>% group_by(city) %>% summarise(vendite_medie = mean(sales), variabilita_vendite = sd(sales), annunci_medi=mean(listings), variabilita_annunci = sd(listings))

Creazione grafico n° medio di vendite e variabilità n°vendite {r grafico vendite medie e variabilità} ggplot(data=dati_condition_city) + geom_bar(aes(x=city, y=vendite_medie), stat="identity", col = "red", fill = "blue") + geom_errorbar(aes(x=city, ymin = vendite_medie - variabilita_vendite, ymax = vendite_medie + variabilita_vendite), width = 0.2) + labs(title = "N° medio di vendite per città", x = "Città", y = "N° medio di vendite")+ scale_y_continuous(breaks = seq(0,300,50))

Creazione grafico n° medio annunci attivi e variabilità n° annunci {r grafico annunci medi e variabilità annunci} ggplot(data=dati_condition_city) + geom_bar(aes(x=city, y=annunci_medi), stat="identity", col = "blue", fill = "red") + geom_errorbar(aes(x=city, ymin = annunci_medi - variabilita_annunci, ymax = annunci_medi + variabilita_annunci), width = 0.2) + labs(title = "N° medio di annunci per città", x = "Città", y = "N° medio di annunci")+ scale_y_continuous(breaks = seq(0,3000,500))

Questi due grafici suggeriscono una correlazione positiva fra il numero medio di annunci attivi e il numero medio di vendite, con l’unica eccezione costituita da B-C Station. Tyler è la città con maggior n° medio di annunci e maggior n° medio di vendite, mentre Wichita F. quella con i due valori più bassi per entrambe

Condizionamento alla variabile “year” {r media e dev. st. di sales per anno} dati %>% group_by(year) %>% summarise(vendite_medie = mean(sales), variabilita_vendite = sd(sales), annunci_medi=mean(listings), variabilita_annunci = sd(listings))

Creazione dataframe {r dataframe} dati_condition_year <- dati %>% group_by(year) %>% summarise(vendite_medie = mean(sales), variabilita_vendite = sd(sales), annunci_medi=mean(listings), variabilita_annunci = sd(listings))

Creazione grafico n° medio di vendite e variabilità n°vendite {r grafico vendite medie e variabilità} ggplot(data=dati_condition_year) + geom_bar(aes(x=year, y=vendite_medie), stat="identity", col = "red", fill = "blue") + geom_errorbar(aes(x=year, ymin = vendite_medie - variabilita_vendite, ymax = vendite_medie + variabilita_vendite), width = 0.2) + labs(title = "N° medio di vendite per anno", x = "Anno", y = "N° medio di vendite")+ scale_y_continuous(breaks = seq(0,300,50))

Creazione grafico n° medio annunci attivi e variabilità n° annunci {r grafico annunci medi e variabilità annunci} ggplot(data=dati_condition_year) + geom_bar(aes(x=year, y=annunci_medi), stat="identity", col = "blue", fill = "red") + geom_errorbar(aes(x=year, ymin = annunci_medi - variabilita_annunci, ymax = annunci_medi + variabilita_annunci), width = 0.2) + labs(title = "N° medio di annunci per anno", x = "Anno", y = "N° medio di annunci")+ scale_y_continuous(breaks = seq(0,2000,500))

In questo caso i grafici mostrano una correlazione negativa perché ai primi due anni di crescita del numero medio di annunci corrisponde una decrescita del numero medio delle vendite, e per i successivi tre anni, al decrescere del numero medio annunci corrisponde una crescita del numero medio di vendite.

Condizionamento alla variabile “month {r media e dev. st. di sales per anno} dati %>% group_by(month) %>% summarise(vendite_medie = mean(sales), variabilita_vendite = sd(sales), annunci_medi=mean(listings), variabilita_annunci = sd(listings))

Creazione dataframe {r dataframe} dati_condition_month <- dati %>% group_by(month) %>% summarise(vendite_medie = mean(sales), variabilita_vendite = sd(sales), annunci_medi=mean(listings), variabilita_annunci = sd(listings))

Creazione grafico n° medio di vendite e variabilità n°vendite {r grafico vendite medie e variabilità} ggplot(data=dati_condition_month) + geom_bar(aes(x=month, y=vendite_medie), stat="identity", col = "red", fill = "blue") + geom_errorbar(aes(x=month, ymin = vendite_medie - variabilita_vendite, ymax = vendite_medie + variabilita_vendite), width = 0.2) + labs(title = "N° medio di vendite per mese", x = "Mese", y = "N° medio di vendite")+ scale_y_continuous(breaks = seq(0,500,50))+ scale_x_continuous(breaks = seq(0,12,1))

Creazione grafico n° medio annunci attivi e variabilità n° annunci {r grafico annunci medi e variabilità annunci} ggplot(data=dati_condition_month) + geom_bar(aes(x=month, y=annunci_medi), stat="identity", col = "blue", fill = "red") + geom_errorbar(aes(x=month, ymin = annunci_medi - variabilita_annunci, ymax = annunci_medi + variabilita_annunci), width = 0.2) + labs(title = "N° medio di annunci per mese", x = "Mese", y = "N° medio di annunci")+ scale_y_continuous(breaks = seq(0,3000,500))+ scale_x_continuous(breaks = seq(0,12,1))

Da questi grafici emerge una correlazione positiva. All’aumento degli annunci corrisponde un aumento delle vendite e ad una loro diminuzione corrisponde una diminuzione delle vendite.

##8.CREAZIONE DI VISUALIZZAZIONI CON GGPLOT Utilizza ggplot2 per creare grafici personalizzati. Assicurati di esplorare:

Boxplot per confrontare la distribuzione del prezzo mediano tra le città

{r prezzo mediano tra le città} ggplot(data=dati)+ geom_boxplot(aes(x=city, y=median_price), color = "red", fill = "blue")+ labs(x="Citta", y="Prezzo mediano", title="Prezzo mediano per città")

Considerazioni: - Wichita Falls ha dei prezzi mediani tendenzialmente minori (il boxplot è quello nella posizione più bassa) mentre Bryan C.S. quella con i prezzi mediani tendenzialmente maggiori. - W. Falls, per via della grandezza del boxplot è la città con la variabilità di prezzi maggiore. - W.Falls e Bryan C.S. sono quelle che mostrano asimmetrie maggiori (rispettivamente negativa e positiva), alla luce della lunghezza dei baffi. - Tyler è l’unica città senza outlier, ciò vuol dire che non ha valori che vanno oltre i limiti determinati dalla formula: [Q1 – 1.5 x IQR; Q3 + 1.5 x IQR) - La variabilità del corpo centrale dei dati è maggiore per W. Falls e Tyler rispetto alle altre due città. - La città che si avvicina di più alla simmetria perfetta è Tyler. Il grafico rispecchia quanto mostrato calcolando la media dei prezzi medi.

Grafici a barre per confrontare il totale delle vendite per mese e città

Condizionamento alla variabile “month” e calcolo delle vendite totali {r condizionamento e valore totale vendite} dati %>% group_by(month)%>% summarise(volume_totale_vendite_mensili = sum(volume))

Creazione dataframe {r dataframe} dati_total_volumeXmonth <- dati %>% group_by(month)%>% summarise(volume_totale_vendite_mensili = sum(volume))

Creazione grafico a barre {r barplot} ggplot(data=dati_total_volumeXmonth) + geom_col(aes(x=month, y=volume_totale_vendite_mensili), stat="identity", col = "red", fill = "blue") + labs(title = "Volume totale per mese", x = "Mese", y = "Totale vendite")+ scale_y_continuous(breaks = seq(0,1000,200))+ scale_x_continuous(breaks = seq(0,12,1))

Il grafico rispecchia l’andamento del n° medio di vendite calcolato precedentemente sempre condizionandolo ai mesi della richiesta 7, e vede dei picchi nel volume di vendite fra marzo e agosto

Condizionamento alla variabile “city” e calcolo delle vendite totali {r condizionamento e totale vendite} dati %>% group_by(city)%>% summarise(volume_totale_vendite_cittadine = sum(volume))

Creazione dataframe {r dataframe} dati_total_volumeXcity <- dati %>% group_by(city)%>% summarise(volume_totale_vendite_cittadine = sum(volume))

Creazione grafico a barre {r barplot} ggplot(data=dati_total_volumeXcity) + geom_col(aes(x=city, y=volume_totale_vendite_cittadine), stat="identity", col = "blue", fill = "red") + labs(title = "Volume totale per città", x = "Città", y = "Volume totale")+ scale_y_continuous(breaks = seq(0,3000,500))

La città con il volume totale di vendite è Tyler; quella con il minor volume di vendite è Wichita F. Il grafico è in continuità con quello del numero medio di vendite della richiesta 7

Line charts per confrontare l’andamento delle vendite in periodi storici differenti

Condizionamento a year e calcolo del numero totale vendite per ogni anno {r condzionamento a year e totale vendite} dati %>% group_by(year) %>% summarise(yearly_sales = sum(sales))

Creazione dataframe {r dataframe} dati_salesXyear <- dati %>% group_by(year) %>% summarise(yearly_sales = sum(sales))

Creazione line chart {r linechart} ggplot(data = dati_salesXyear)+ geom_line(aes(x=year, y=yearly_sales), col = "red", lwd = 1)+ geom_point(aes(x=year, y=yearly_sales), col = "blue")+ labs(x="Anni", y="Vendite", title="Vendite annuali totali")+ geom_text(aes(x=year, y=yearly_sales+100, label=yearly_sales))

Il grafico mostra lo stesso andamento riscontrato nel grafico a barre recante il numero medio di vendite effettuato annualmente, della richiesta 7. Il grafico mostra un decremento dal 2010 al 2011 e un incremento per gli anni successivi

##10.OSSERVAZIONI OPERATIVE Utilizza i boxplot per confrontare la distribuzione del prezzo mediano delle case tra le varie città Già richiesto nella 1° richiesta della consegna 8

- Utilizza i boxplot o qualche variante per confrontare la distribuzione del valore totale delle vendite tra le varie città ma anche tra i vari anni. Qualche considerazione da fare?

Boxplot valore totale vendite tra città {r boxplot tot vendite tra città} ggplot(data=dati)+ geom_boxplot(aes(x=city, y=volume), color = "red", fill = "blue")+ labs(x="Citta", y="Valore totale di vendita", title="Valore totale per città") Il grafico mostra l’asimmetria massima per Bryan C.S.

Per Baumont e Wichita Falls la posizione è rimasta la stessa rispetto al boxplot dei prezzi mediani, mentre invece per B-C Station e Tyler la posizione si è invertita.

L’andamento di questo boxplot ricalca quello del n° di vendite totali per città (richiesta 8) e del n° medio di vendite per citta (richiesta 7). W.Falls e Beaumont quindi mostrano i volumi di vendita minori fra le 4 città.

Per Tyler il minor prezzo mediano rispetto a BC Station è stato più che compensato dal maggior numero di vendite che l’ha portata ad avere un valore mediano di volumi maggiore rispetto a B-C Station.

B-C Station. mostra la maggiore asimmetria e il box dalle dimensioni maggiori, e ciò significa che c’è molta più variabilità nei volumi di vendite rispetto alle altre città.

Boxplot valore totale vendite tra anni {r boxplot tot vendite tra anni} ggplot(data=dati)+ geom_boxplot(aes(x=factor(year), y=volume, group=year), color = "red", fill = "blue")+ labs(x="Year", y="Valore totale di vendita", title="Valore totale per anno") L’andamento è del grafico è in continuità con quella della line chart della richiesta 8.

Usa un grafico a barre sovrapposte per confrontare il totale delle vendite nei vari mesi, sempre considerando le città. Prova a commentare ciò che viene fuori. Fornire anche versione con il grafico a barre normalizzato.

Condizionamento alle variabili “city” e “month” e calcolo vendite totali mensili {r condizionamento e vendite totali mensili} dati %>% group_by(month, city) %>% summarise(vendite_totali_mensile = sum(sales))

Creo dataframe {r dataframe} dati_vendite_totali_meseXcittà <- dati %>% group_by(month, city) %>% summarise(vendite_totali_mensile = sum(sales))

Grafico a barre sovrapposte {r Grafico a barre sovrapposte} ggplot(data=dati_vendite_totali_meseXcittà)+ geom_col(aes(x=month, y=vendite_totali_mensile, fill=city), position="stack", color="red") + labs(x="Mese", y="Vendite totali mensili", title="vendite totali mensili per ogni città")+ scale_y_continuous(breaks = seq(0,5000,1000))+ scale_x_continuous(breaks = seq(0,12,1))

La barra mensile di ogni singola città è il risultato della somma delle vendite registrate nel medesimo mese considerato per trasversalmente per tutti e 5 gli anni del dataset. Quindi la barra viola per Wichita Falls, ad esempio, per il mese di gennaio, è costituita dalla somma delle vendite di ogni gennaio dal 2010 al 2014.

Quello che emerge dal grafico è che per le città di Tyler e, soprattutto, di B-C Station i mesi centrali dell’anno da marzo ad agosto rappresentano i mesi in cui si effettuano più vendite. Per le altre due città il livello di vendite rimane sempre abbastanza stabile nel corso dell’anno.

Grafico a barre versione normalizzata {r Grafico a barre sovrapposte e normalizzato} ggplot(data=dati_vendite_totali_meseXcittà) + geom_col(aes(x=month, y=vendite_totali_mensile, fill=city), position="fill", color="red") + labs(x="Mese", y="Quota di vendite totali mensili", title="vendite totali mensili normalizzate per ogni città")+ scale_y_continuous(breaks = seq(0,1,0.1))+ scale_x_continuous(breaks = seq(0,12,1))

Grafico a barre con inserimento variabile “year” {r Grafico a barre sovrapposte e normalizzato} ggplot(data = dati_vendite_totali_meseXcittà) + geom_col(aes(x = month, y = vendite_totali_mensile, fill = city), position = "stack", color = "red") + labs(x = "Mese", y = "Vendite totali mensili", title = "Vendite totali mensili per ogni città") + scale_y_continuous(breaks = seq(0, 2000, 500)) + scale_x_continuous(breaks = seq(0, 12, 1)) + facet_wrap(~ city)

In questo grafico è ancora più visibile quanto mostrato nel primo grafico dei tre di questa sezione. Evidenziando che questo trend è meno marcato per Tyler che anche nei mesi successivi ad agosto registra un numero di vendite comunque alti. E’ anche meno marcato per le città meno performanti, ma comunque presente. In particolare è più evidente per Beaumont rispetto a Wichita Falls

Prova a creare un line chart di una variabile a tua scelta per fare confronti commentati fra città e periodi storici Variabile scelta: sales

Condizionamento “sales” rispetto a “city” e “years” {r Condizionamento e calcolo vendite totali} dati %>% group_by(city, year) %>% summarise(vendite_totali_annuali = sum(sales))

Creazione di un dataframe ad hoc, facendo diventare ogni città come una variabile, per creare una linechart con una linea per ognuna di esse {r dataframe per linechart} datixlineachart <- data.frame(Beaumont=c(1874,1728,2063,2414,2564), Bryan_College_Station=c(2011,2009,2361,2854,3123), Tyler=c(2730,2866,3162,3449,3978), Wichita_Falls=c(1481,1275,1349,1455,1404), Anno=c(2010,2011,2012,2013,2014))

Linechart con vendite annuali per ogni città {r linechart vendite annuali per città} ggplot(data=datixlineachart)+ geom_line(aes(x=Anno, y=Beaumont, col="Beaumont"), lwd=1)+ geom_line(aes(x=Anno, y=Bryan_College_Station, col="Bryan_College_Station"),lwd=1)+ geom_line(aes(x=Anno, y=Tyler, col="Tyler"), lwd=1)+ geom_line(aes(x=Anno, y=Wichita_Falls, col="Wichita_Falls"),lwd=1)+ geom_point(aes(x=Anno, y=Beaumont), col="green4",size=3)+ geom_point(aes(x=Anno, y=Bryan_College_Station), col="purple",size=3)+ geom_point(aes(x=Anno, y=Tyler), col="red3",size=3)+ geom_point(aes(x=Anno, y=Wichita_Falls), col="blue4",size=3)+ labs(x="Anni", y="Vendite", title = "Vendite per città")+ scale_color_manual( name = "Città", breaks = c("Beaumont", "Bryan_College_Station", "Tyler", "Wichita_Falls"), values = c("green4", "purple", "red3", "blue4"), labels = c("Beaumont", "Bryan_College_Station", "Tyler", "Wichita_Falls"))+ geom_text(aes(x=Anno, y=Beaumont-70, label=Beaumont))+ geom_text(aes(x=Anno, y=Bryan_College_Station+70, label=Bryan_College_Station))+ geom_text(aes(x=Anno, y=Tyler+70, label=Tyler))+ geom_text(aes(x=Anno, y=Wichita_Falls+70, label=Wichita_Falls))

Nota: Poiché con il semplice condizionamento non riuscivo ad ottenere un dataset che mi permettesse di organizzare un grafico con la struttura che ho ottenuto (che penso sia quella che richiesta dalla consegna), quindi ho creato un dataframe in maniera “artigianale” così da avere sull’asse X gli anni e sulla X le vendite e una linea per ogni città.

##9.CONCLUSIONI Note: ho posizionato le conclusioni dopo la sezioe “Osservazioni operative”, così da poterle completare dopo aver completato tutti i grafici richiesti ed avere una visione complessiva di quello che emerge.

Ritengo che sia possibile analizzare il mercato del Texas sotto due dimensioni, quella temporale (andamento nel corso degli anni con focus sull’andamento nell’anno) e spaziale (confronto fra città):

Dimensione temporale In generale, quello che mostrano le line chart (sia quella complessiva -richiesta 8- che quella disaggregata per città – Osservazioni operative), il grafico dei valori del numero medio di vendite condizionato all’anno (richiesta 7), ed il boxplot del volume totale delle vendite (Osservazioni operative) è una decrescita del giro di affari fra il 2010 e il 2011 (se il dataset è reale, probabilmente come conseguenza della crisi del 2008 che ancora si faceva sentire) con un incremento dal 2012 in poi.

Quello che emerge dai grafici è che i mesi centrali dell’anno da aprile fino ad agosto, sono i mesi in cui il giro d’affari è più intenso, dimostrato dai grafici sul numero di vendite (richiesta 7) e sul volume di vendite (richiesta 8). In particolare, disaggregando per le città (bar plot in Osservazioni operative), si evidenzia che per Tyler e, soprattutto, per B-C Station i mesi centrali dell’anno da marzo ad agosto rappresentano i mesi in cui si effettuano più vendite. Per Tyler nello specifico, anche nei mesi successivi ad agosto si registra un numero di vendite comunque alto.

Quest’andamento è meno marcato per le città meno performanti, ma comunque presente. In particolare, è più evidente per Beaumont rispetto a Wichita Falls.

Dimensione spaziale Tyler è la città che registra: - n° totale di vendite più alto (e quindi anche un n° medio di vendite), - tasso di smaltimento mensile annunci più alto, - un volume di vendite più alto - 2° prezzo mediano (e 2° prezzo medio) dopo BC Station. Tyler sembrerebbe essere una zona più estesa rispetto a tutte le altre guardando al numero medio di annunci attivi, leggermente meno esclusiva di BC Station visto il prezzo mediano più basso. Il quantitativo di vendite, dovuto non solo al maggior numero di annunci ma anche ad un ritmo di vendita maggiore, più che compensa il prezzo mediano (e medio) inferiore rispetto a BC Station.

BC Station mostra - 3° n° medio di annunci attivi, - 2° numero totale di vendite (e 2° numero medio di vendite) - 2° ritmo di smaltimento più alto - prezzo mediano (e medio) più alto di tutti. Questo fa pensare che probabilmente BC Station sia una zona meno estesa per via del 3° valore medio di annunci attivi e più esclusiva per via dei prezzi mediani (e medi) più alti.

WFalls e Beaumont risultano le città meno performanti sotto tutti i punti di vista.