Analisi del mercato immobiliare del Texas
Versione integrata nel sito senza iframe. Il notebook ricostruito resta disponibile come file .ipynb.
Analisi del mercato immobiliare del Texas
Gabriele Iocco
2024-05-24
Tipo di variabili contenute nel dataframe
Setto la cartella di lavoro, leggo il file csv e calcolo le dimensioni del dataframe assegnandolo all’oggetto N
Codice
setwd("D:/R/mercato immobiliare del Texas")
dati <- read.csv("D:/R/mercato immobiliare del Texas/Real Estate Texas.csv",sep = ",",encoding = "latin1")
dim(dati)## [1] 240 8Codice
N<-dim(dati)[1]Con la funzione save.image salvo gli oggetti presenti
nell’ambiente virtuale in un file RData da richiamare
all’occorrenza
Codice
save.image(file = "global_environment_texas.RData")Con la funzione load carico gli oggetti nell’ambiente
virtuale
Codice
load("D:/R/mercato immobiliare del Texas/global_environment_texas.RData")Con la funzione attach rendo visibili i componenti di
una lista come se fossero variabili definite indipendentemente
Codice
attach(dati)Tramite il comando typeof determino che tipo di
variabili popolano il dataframe
Codice
type = sapply(dati, typeof)
type## city year month sales
## "character" "integer" "integer" "integer"
## volume median_price listings months_inventory
## "double" "double" "integer" "double"Variabile city - qualitativa nominale
Distribuzione di frequenze
Con la funzione table costruisco le frequenze assolute
e le assegno all’etichetta freq_ass
Costruisco le frequenze relative freq_rel
Costruisco la distribuzione di frequenze distr_freq_city
Codice
freq_ass<-table(dati["city"])
freq_rel<-freq_ass/N
distr_freq_city<-cbind(freq_ass,freq_rel)
distr_freq_city## freq_ass freq_rel
## Beaumont 60 0.25
## Bryan-College Station 60 0.25
## Tyler 60 0.25
## Wichita Falls 60 0.25## La variabile city ha una distribuzione quadrimodale.Variabile year - qualitativa ordinale
Numero di modalità
Frequenza assoluta
Codice
levels(as.factor(year))## [1] "2010" "2011" "2012" "2013" "2014"Codice
table(year)## year
## 2010 2011 2012 2013 2014
## 48 48 48 48 48## La variabile year ha cinque modalità e ogni modalità ha la stessa frequenza assolutaSuddivido in classi la variabile per poi calcolare le frequenze assolute della variabile qualitativa ordinale ciclica month per ogni classe e per ogni città
Codice
year_cl<-cut(year,seq(2009,2014,1))
freq_ass_month <- table(year_cl, city)
freq_ass_month## city
## year_cl Beaumont Bryan-College Station Tyler Wichita Falls
## (2009,2010] 12 12 12 12
## (2010,2011] 12 12 12 12
## (2011,2012] 12 12 12 12
## (2012,2013] 12 12 12 12
## (2013,2014] 12 12 12 12## Per ogni città ogni anno sono stati osservati 12 mesiVariabile sales - quantitativa discreta
Indici di posizione
Codice
summary(sales)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 79.0 127.0 175.5 192.3 247.0 423.0Quantili
Codice
quantile(sales,seq(0,1,0.1))## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 79.0 101.9 120.6 135.0 155.0 175.5 197.0 228.5 271.0 302.1 423.0Range interquartile
Codice
IQR(sales)## [1] 120Calcolo la varianza sigma2 e la deviazione standard sigma
Codice
mean_sales=mean(sales)
sigma2_sales=sum((sales-mean_sales)^2)/N
sigma_sales=sqrt(sigma2_sales)
sigma2_sales## [1] 6317.865Codice
sigma_sales## [1] 79.485Indice di asimmetria di Fischer e Curtosi
Codice
library(moments)
skewness(sales)## [1] 0.718104Codice
kurtosis(sales)-3## [1] -0.3131764## L'asimmetria è positiva, la maggior parte dei dati si trova sulla sinistra della distribuzione## Il valore della curtosi indica una distribuzione platicurticaVariabile volume - quantitativa continua
Indici di posizione
Codice
summary(volume)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8.166 17.660 27.062 31.005 40.893 83.547Quantili
Codice
quantile(volume,seq(0,1,0.1))## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90%
## 8.1660 13.0967 16.1206 19.0344 23.9976 27.0625 31.8436 36.9307 45.5920 53.7391
## 100%
## 83.5470Range interquartile
Codice
IQR(volume)## [1] 23.2335Calcolo la varianza sigma2 e la deviazione standard sigma
Codice
mean_volume=mean(volume)
sigma2_volume=sum((volume-mean_volume)^2)/N
sigma_volume=sqrt(sigma2_volume)
sigma2_volume## [1] 276.1154Codice
sigma_volume## [1] 16.61672Indice di asimmetria di Fischer e Curtosi
Codice
skewness(volume)## [1] 0.884742Codice
kurtosis(volume)-3## [1] 0.176987## L'asimmetria è positiva, la maggior parte dei dati si trova sulla sinistra della distribuzione## Il valore della curtosi indica una distribuzione leptocurticaVariabile median_price - quantitativa continua
Indici di posizione
Codice
summary(median_price)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 73800 117300 134500 132665 150050 180000Quantili
Codice
quantile(median_price,seq(0,1,0.1))## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 73800 99960 110000 121650 130700 134500 141220 147960 152360 158850 180000Range interquartile
Codice
IQR(median_price)## [1] 32750Calcolo la varianza sigma2 e la deviazione standard sigma
Codice
mean_median_price=mean(median_price)
sigma2_median_price=sum((median_price-mean_median_price)^2)/N
sigma_median_price=sqrt(sigma2_median_price)
sigma2_median_price## [1] 511433096Codice
sigma_median_price## [1] 22614.89Indice di asimmetria di Fischer e Curtosi
Codice
skewness(median_price)## [1] -0.3645529Codice
kurtosis(median_price)-3## [1] -0.6229618## L'asimmetria è negativa, buona parte dei dati si trova sulla destra della distribuzione## Il valore della curtosi indica una distribuzione platicurticaVariabile listings - quantitativa discreta
Indici di posizione
Codice
summary(listings)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 743 1026 1618 1738 2056 3296Quantili
Codice
quantile(listings,seq(0,1,0.1))## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 743.0 899.9 968.0 1208.7 1525.2 1618.5 1687.8 1796.0 2721.4 2946.7 3296.0Range interquartile
Codice
IQR(listings)## [1] 1029.5Calcolo la varianza sigma2 e la deviazione standard sigma
Codice
mean_listings=mean(listings)
sigma2_listings=sum((listings-mean_listings)^2)/N
sigma_listings=sqrt(sigma2_listings)
sigma2_listings## [1] 564208.3Codice
sigma_listings## [1] 751.138Indice di asimmetria di Fischer e Curtosi
Codice
skewness(listings)## [1] 0.6494982Codice
kurtosis(listings)-3## [1] -0.79179## L'asimmetria è positiva, buona parte dei dati si trova sulla sinistra della distribuzione## Il valore della curtosi indica una distribuzione platicurticaVariabile months_inventory - quantitativa continua
Indici di posizione
Codice
summary(months_inventory)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.400 7.800 8.950 9.193 10.950 14.900Quantili
Codice
quantile(months_inventory,seq(0,1,0.1))## 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
## 3.40 6.69 7.50 7.97 8.40 8.95 9.40 10.53 11.40 12.21 14.90Range interquartile
Codice
IQR(months_inventory)## [1] 3.15Calcolo la varianza sigma2 e la deviazione standard sigma
Codice
mean_months_inventory=mean(months_inventory)
sigma2_months_inventory=sum((months_inventory-mean_months_inventory)^2)/N
sigma_months_inventory=sqrt(sigma2_months_inventory)
sigma2_months_inventory## [1] 5.284777Codice
sigma_months_inventory## [1] 2.298864Indice di asimmetria di Fischer e Curtosi
Codice
skewness(months_inventory)## [1] 0.04097527Codice
kurtosis(months_inventory)-3## [1] -0.1744475## L’asimmetria è leggermente positiva, indicando che ci sono alcuni dati che si trovano leggermente a destra della distribuzione## Il valore della curtosi indica una distribuzione platicurticaCalcolo il coefficiente di variazione CV per determinare la variabile con variabilità più elevata
Codice
mean <- c(mean_sales, mean_volume, mean_median_price, mean_listings, mean_months_inventory)
sd <- c(sigma_sales, sigma_volume, sigma_median_price, sigma_listings, sigma_months_inventory)
variables <- c('sales', 'volume', 'median_price', 'listings', 'months_inventory')
data_cv <- data.frame()
for (i in 1:length(variables)) {
cv <- (sd[i] / mean[i]) * 100
data_cv <- rbind(data_cv, data.frame(Variable = variables[i], CV = round(cv, 2), "Percentage" = "%"))
}
cv_ordered <- data_cv[order(-data_cv$CV), ]
cv_ordered## Variable CV Percentage
## 2 volume 53.59 %
## 4 listings 43.22 %
## 1 sales 41.34 %
## 5 months_inventory 25.01 %
## 3 median_price 17.05 %## La variabile con la variabilità più elevata è la variabile volume con un coefficiente di variazione di 53.59 , vuol dire che presenta una deviazione standard che è il 53.59 % della rispettiva mediaCalcolo la variabile con asimmetria più elevata
Codice
asim <- c(skewness(sales), skewness(volume), skewness(median_price), skewness(listings), skewness(months_inventory))
variables <- c('sales', 'volume', 'median_price', 'listings', 'months_inventory')
data_asim <- data.frame()
for (i in 1:length(variables)) {
data_asim <- rbind(data_asim, data.frame(Variable = variables[i], Asim = round(asim[i], 2)))
}
asim_ordered <- data_asim[order(-data_asim$Asim), ]
asim_ordered## Variable Asim
## 2 volume 0.88
## 1 sales 0.72
## 4 listings 0.65
## 5 months_inventory 0.04
## 3 median_price -0.36## La variabile più asimmetrica è la variabile volume con una asimmetria di 0.88Divido la variabile sales in classi, creo la colonna sales_cl nel dataframe e calcolo la distribuzione di frequenze
Codice
dati$sales_cl <- cut(dati$sales,
breaks=c(50,100,150,200,250,300,350,400,450))Codice
distr_freq_sales <- as.data.frame(
cbind(
ni=table(dati$sales_cl),
fi=table(dati$sales_cl)/N,
Ni=cumsum(table(dati$sales_cl)),
Fi=cumsum(table(dati$sales_cl)/N)
)
)
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.0000000Codice
library(ggplot2)
ggplot(data = dati)+
geom_bar(aes(x=sales_cl),
stat = "count",
fill = "yellow3")+
labs(title = "Suddivisione in classi della variabile sales",
x="Sales in classi ",
y="Frequenze assolute")+
scale_y_continuous(breaks = seq(0,80,5))+
theme_minimal() +
theme(
plot.title = element_text(size = 23, hjust = 0.5),
axis.title.x = element_text(size = 17, vjust = 0),
axis.title.y = element_text(size = 17),
axis.text.x = element_text(size=12),
axis.text.y = element_text(size=12)
)Indice di Gini
Codice
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)##
## (50,100] (100,150] (150,200] (200,250] (250,300] (300,350] (350,400] (400,450]
## 21 72 56 32 34 13 9 3Codice
gini.index(dati$sales_cl)## [1] 0.9206349## La distribuzione della variabile sales_cl è abbastanza eterogenea, le unità statistiche si distribuiscono lungo tutte le modalitàIndice di Gini per la variabile city
Codice
gini.index(city)## [1] 1Probabilità di selezionare la città di Beaumont selezionando una riga a caso del dataframe
Codice
unique_cities_num <- length(unique(city))
unique_cities_num## [1] 4Codice
probability <- (1/unique_cities_num)*100
probability## [1] 25## Le città sono 4 e le modalità della variabile city hanno la stessa frequenza assoluta, quindi la probabilità di selezionare una città tra quattro è 1/4, il 25%Probabilità di selezionare il mese di Luglio selezionando una riga a caso del dataframe
Le modalità di month hanno le stesse frequenze assolute
Moltiplico le frequenze assolute per il numero di città
Codice
freq_ass_cities <- max(freq_ass_month*unique_cities_num)
freq_ass_cities## [1] 48Codice
probability=(unique_cities_num/freq_ass_cities)*100
probability## [1] 8.333333## La probabilità di selezionare il mese di Luglio è pari all'8.3%Probabilità di selezionare il mese di Dicembre 2012 selezionando una riga a caso del dataframe
Sommo le frequenze assolute di month per ottenere il numero di righe del dataframe
Codice
total_freq <- sum(freq_ass_month)
total_freq## [1] 240Codice
probability <- (1 / total_freq) * 100
probability## [1] 0.4166667## La probabilità è pari allo 0.41%Creo la colonna mean_price
Codice
dati=data.frame(dati,mean_price=(volume/sales)*1000)## Ho diviso il volume di affari di ogni mese per il numero di vendite di quel mese e ho moltiplicato *1000 perchè la variabile volume esprime il suo valore in milioni di dollariCreo una colonna che esprima l’efficacia degli annunci
Codice
dati=data.frame(dati,effectiveness_ads=sales/listings)## Ho diviso il numero di vendite mensili per il numero degli annunci attivi ogni mese ricavando così un valore che esprima la validità degli annunci. Più il valore di questo rapporto è alto più gli annunci hanno avuto efficacia generando un numero maggiore di venditeSummary della variabile sales condizionatamente a city, year e month
Codice
library(dplyr)
dati%>%
group_by(city,month)%>%
summarise(media_sales=mean(sales),
stand_dev_sales=sd(sales))## # A tibble: 48 × 4
## # Groups: city [4]
## city month media_sales stand_dev_sales
## <chr> <int> <dbl> <dbl>
## 1 Beaumont 1 122. 31.2
## 2 Beaumont 2 135. 31.9
## 3 Beaumont 3 171 14.9
## 4 Beaumont 4 190. 17.7
## 5 Beaumont 5 207. 42.6
## 6 Beaumont 6 205 36.0
## 7 Beaumont 7 185. 22.9
## 8 Beaumont 8 217. 50.6
## 9 Beaumont 9 174 46.9
## 10 Beaumont 10 189. 44.0
## # ℹ 38 more rowsCodice
dati%>%
group_by(year)%>%
summarise(media_sales=mean(sales),
stand_dev_sales=sd(sales))## # A tibble: 5 × 3
## year media_sales stand_dev_sales
## <int> <dbl> <dbl>
## 1 2010 169. 60.5
## 2 2011 164. 63.9
## 3 2012 186. 70.9
## 4 2013 212. 84.0
## 5 2014 231. 95.5Distribuzione del volume degli affari negli anni e nelle varie città
Codice
ggplot(data=dati)+
geom_boxplot(aes(x=year_cl,
y=median_price,
fill=city))+
labs(title = "Distribuzione del volume degli affari",
x = "Year in classi",
y = "Volume",
fill = "")+
theme_minimal() +
theme(
plot.title = element_text(size = 23, hjust = 0.5),
axis.title.x = element_text(size = 17, vjust = 0),
axis.title.y = element_text(size = 17),
axis.text.x = element_text(size=12),
axis.text.y = element_text(size=12),
strip.background = element_blank(),
legend.title = element_text(size = 10),
legend.text = element_text(size = 10),
legend.key.size = unit(1, "cm"),
legend.position = "bottom"
)## Wichita Falls e Beaumont hanno aumentato di poco il loro volume degli affari nel corso degli anni presi in esame, mentre le città di Tyler e Bryan-College Station hanno avuto un incremento maggiore nel 2013 e nel 2014.
## La mediana del volume degli affari a Wichita Falls nel 2011 è notevolmente più alta rispetto ad altre città e ad altri anni. Questo suggerisce la possibilità che ci sia stato un incremento delle vendite con un focus su immobili di valore superiore.
## Gli outliers superiori indicano che c'è stato un aumento significativo del volume degli affari in alcuni mesi. Al contrario gli outliers inferiori indicano un sostanziale calo degli affariDistribuzione delle vendite tra le varie città negli anni
Codice
ggplot(data=dati)+
geom_boxplot(aes(x=year_cl,
y=sales,
fill=city))+
labs(title = "Distribuzione delle vendite",
x = "Year in classi",
y = "Sales",
fill = "")+
theme_minimal() +
theme(
plot.title = element_text(size = 23, hjust = 0.5),
axis.title.x = element_text(size = 17, vjust = 0),
axis.title.y = element_text(size = 17),
axis.text.x = element_text(size=12),
axis.text.y = element_text(size=12),
strip.background = element_blank(),
legend.title = element_text(size = 10),
legend.text = element_text(size = 10),
legend.key.size = unit(1, "cm"),
legend.position = "bottom"
)## Le vendite a Whichita Falls si mantengono pressocchè costanti nel corso degli anni mentre nelle altre città c'è un aumento. Nel 2012 il valore della mediana a Bryan-College Station è molto basso, questo vuol dire che sono stati venduti pochi immobili nella maggior parte dei mesi . Sempre nel 2012 la città di Tyler ha venduto parecchi immobili durante l'arco dell'anno.Totale delle vendite nei vari mesi considerando le città
Calcolo il totale delle vendite per ogni mese dello stesso anno e città
Creo il grafico
Codice
library(RColorBrewer)
colori <- brewer.pal(6, "Set3")
sales_somma <- dati %>%
group_by(month,city) %>%
summarise(sales = sum(sales))
ggplot(sales_somma, aes(x = month, y = sales, fill = city)) +
geom_bar(stat = "identity") +
geom_text(aes(label = sales), size=4, vjust = 0.5, hjust = 0.5,
position = position_stack(vjust = 0.5),
color = "black")+
labs(title = "Vendite Mensili: Panoramica 2010-2014",
x = "Mesi",
y = "Sales") +
scale_x_discrete(limits = c("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno",
"Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre")) +
scale_y_continuous(breaks = seq(0,5000,200))+
theme_classic()+
scale_fill_manual(values=colori)+
theme(
plot.title = element_text(size = 23, hjust = 0.5),
axis.title.x = element_text(size = 17, vjust = 0),
axis.title.y = element_text(size = 17),
axis.text.x = element_text(size=9),
axis.text.y = element_text(size=9),
strip.background = element_blank(),
legend.text = element_text(size = 10),
legend.key.size = unit(1, "cm"),
legend.position = "bottom"
)+
labs( fill = toupper(""))## La città di Wichita Falls è la città ad aver venduto meno immobili e nel corso dei mesi e degli anni e le sue vendite si sono mostrate pressocchè costanti. Le altre città hanno aumentato le vendite dall'inizio della primavera fino al mese di Agosto per poi diminuire agli inizi dell'autunno. Le città che vendono di più nei mesi estivi sono Tyler e Bryan-College StationCalcolo il totale delle vendite per ogni mese
Calcolo la percentuale di vendite
Creo il grafico
Codice
sales_somma_per_month <- dati %>%
group_by(month) %>%
summarise(total_sales = sum(sales))
sales_somma_normalized <- sales_somma %>%
left_join(sales_somma_per_month, by = "month") %>%
mutate(sales_normalized = sales / total_sales * 100)
ggplot(sales_somma_normalized, aes(x = month, y = sales_normalized, fill = city)) +
geom_bar(stat = "identity") +
geom_text(aes(label = round(sales_normalized, 2)), size = 4, vjust = 0.5, hjust = 0.5,
position = position_stack(vjust = 0.5), color = "black") +
labs(title = "Vendite Mensili: Panoramica 2010-2014",
x = "Mesi",
y = "Vendite (%)") +
scale_x_discrete(limits = c("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno",
"Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre")) +
scale_y_continuous(labels = scales::percent_format(scale = 1), expand = expansion(mult = c(0, 0.05))) +
theme_classic() +
scale_fill_manual(values = colori) +
theme(
plot.title = element_text(size = 23, hjust = 0.5),
axis.title.x = element_text(size = 17, vjust = 0),
axis.title.y = element_text(size = 17),
axis.text.x = element_text(size = 8),
axis.text.y = element_text(size = 8),
strip.background = element_blank(),
legend.text = element_text(size = 10),
legend.key.size = unit(1, "cm"),
legend.position = "bottom"
) +
labs(fill = toupper(""))Totale delle vendite nei vari mesi e nei vari anni considerando le città
Calcolo il totale delle vendite per ogni mese e città
Calcolo la percentuale di vendite
Creo il grafico
Codice
sales_somma_per_month_city <- dati %>%
group_by(month, city) %>%
summarise(total_sales = sum(sales), .groups = "drop")
dati_somma_perc <- dati %>%
group_by(year, city, month) %>%
summarise(sales = sum(sales), .groups = "drop") %>%
ungroup() %>%
left_join(sales_somma_per_month_city, by = c("month", "city")) %>%
mutate(sales_percent = sales / total_sales * 100)
ggplot(dati_somma_perc, aes(x = month, y = sales/total_sales, fill = as.factor(year))
) +
geom_bar(position="fill", stat = "identity") +
geom_text(aes(label = round(sales_percent, 2)), position = position_fill(vjust = 0.5), size = 4.5, color = "black")+
facet_wrap(~city, ncol=1) +
labs(title = "Percentuale delle Vendite Mensili",
x = "Mesi",
y = "Sales %",
fill = ""
) +
scale_x_discrete(limits = c("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno",
"Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre")
) +
scale_y_continuous(labels = scales::percent,
sec.axis = sec_axis(~. * 100, name = "Sales %", labels = function(x) paste0(x, "%"))) +
scale_fill_manual(values=colori)+
theme_classic()+
theme(
plot.title = element_text(size = 23, hjust = 0.5),
axis.title.x = element_text(size = 17, vjust = 0),
axis.title.y = element_text(size = 17),
axis.text.x = element_text(size=10),
axis.text.y = element_text(size=10),
strip.background = element_blank(),
strip.text = element_text(size = 17),
legend.text = element_text(size = 10),
legend.key.size = unit(1, "cm"),
legend.position = "bottom"
)Line chart con la variabile sales per fare confronti fra città e periodi storici
Raggruppo le vendite per anno e città con il pacchetto dplyr e creo il grafico
Codice
sales_by_year_city <- dati %>%
group_by(year, city) %>%
summarise(sales = sum(sales))
ggplot(sales_by_year_city) +
geom_line(aes(x=year, y=sales, col=city, group=city), lwd=1) +
geom_text(aes(x=year, y=sales+70, label = sales), size = 3.8)+
scale_x_continuous(breaks = seq(2010,2014,1)) +
scale_y_continuous(breaks = seq(0,4000,200))+
labs(x="Anni", y="Numero di vendite", color="", title = "Storico annuale delle vendite") +
scale_fill_manual(values=colori)+
theme_minimal() +
theme(
plot.title = element_text(size = 23, hjust = 0.5),
axis.title.x = element_text(size = 17, vjust = 0),
axis.title.y = element_text(size = 17),
axis.text.x = element_text(size=10),
axis.text.y = element_text(size=10),
strip.background = element_blank(),
legend.text = element_text(size = 12),
legend.key.size = unit(1.5, "cm"),
legend.position = "bottom"
)## Possiamo notare che c'è stata un'impennata nelle vendite a Beaumont, Brian College Station e Tyler a partire dal 2011. La città di Tyler ha iniziato ad incrementarle già nel 2010. Wichita Falls nel 2011 ha avuto un lieve aumento delle vendite fino al 2013 per poi avere un sensibile calo.