#setting gella WD
#setwd("~/Desktop/P_AI_Stats")
#getwd()
#list.files()

#import del dataset
data <- read.csv("realestate_texas.csv" )

####punto 1 analisi delle variabili####
str(data)
## 'data.frame':    240 obs. of  8 variables:
##  $ city            : chr  "Beaumont" "Beaumont" "Beaumont" "Beaumont" ...
##  $ year            : int  2010 2010 2010 2010 2010 2010 2010 2010 2010 2010 ...
##  $ month           : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ sales           : int  83 108 182 200 202 189 164 174 124 150 ...
##  $ volume          : num  14.2 17.7 28.7 26.8 28.8 ...
##  $ median_price    : num  163800 138200 122400 123200 123100 ...
##  $ listings        : int  1533 1586 1689 1708 1771 1803 1857 1830 1829 1779 ...
##  $ months_inventory: num  9.5 10 10.6 10.6 10.9 11.1 11.7 11.6 11.7 11.5 ...
colSums(is.na(data))
##             city             year            month            sales 
##                0                0                0                0 
##           volume     median_price         listings months_inventory 
##                0                0                0                0
dim(data)
## [1] 240   8
n <- dim(data)[1]
#View(data)
#View(table(data$city))

Sono presenti 8 Variabili, non hanno valori mancanti (NA), tra queste troviamo: city= [chr], troviamo 4 città del Texas, tutte con la stessa frequenza (60): questa sola variabile non è sufficiente per effettuare un’analisi, se considerata insieme ad altre presenti all’interno del dataset, potrebbe essere importante comprendere se varia il numero totale di vendite [sales] e il valore [volume] per ciascuna città nel tempo [years]. questo può essere fatto tramite rappresentazioni grafiche, ad esempio una linechart
year=[int], dal 2010 al 2014 (variabile che ha una dimensione temporale): questa sola variabile non è sufficiente per effettuare un’analisi: possiamo utilizzare un barplot se considerata insieme alla variabile [sales] per esempio: in modo da mostrare l’andamento negli anni del numero totale di vendite (discorso analogo con [volume], [median_price], e le altre variabili numeriche) month=[int] (variabile che ha una dimensione temporale): discorso analogo a [Years] ma in questo caso si potrebbe usare direttamente un grafico a linee che mostri l’andamento nei 12 mesi sales=[int], mostra il numero totale di vendite: possiamo utilizzare un grafico a barre per mostrare la differenza tra il numero totale di vendite rispetto al numero di annunci attivi; oppure possiamo verificare tramite un line chart se esistono dei mesi in cui vi è una tendenza maggiore nel pubblicare annunci volume=[num], valore totale delle vendite: possiamo comparare il volume delle vendite negli anni o nei mesi per le rispettive città median_price=[num] prezzo mediano di vendita: possiamo effettuare un’analisi per verificare se il prezzo mediano di vendità è variato negli anni o se questo differisce tra le rispettive città listings=[int], numero totale di annunci attivi months_inventory=[num], quantità di tempo necessaria per vendere tutte le inserzioni correnti, espresso in mesi: possiamo verificare se il tempo di vendita è cambiato negli anni o mesi, e la differenza nelle rispettive città

#####punto 2: indici di posizione, variabilità e forma####
summary(data) #la maggior parte delle statistiche può essere effettuata usando semplicemente la funzione summary
##      city                year          month           sales      
##  Length:240         Min.   :2010   Min.   : 1.00   Min.   : 79.0  
##  Class :character   1st Qu.:2011   1st Qu.: 3.75   1st Qu.:127.0  
##  Mode  :character   Median :2012   Median : 6.50   Median :175.5  
##                     Mean   :2012   Mean   : 6.50   Mean   :192.3  
##                     3rd Qu.:2013   3rd Qu.: 9.25   3rd Qu.:247.0  
##                     Max.   :2014   Max.   :12.00   Max.   :423.0  
##      volume        median_price       listings    months_inventory
##  Min.   : 8.166   Min.   : 73800   Min.   : 743   Min.   : 3.400  
##  1st Qu.:17.660   1st Qu.:117300   1st Qu.:1026   1st Qu.: 7.800  
##  Median :27.062   Median :134500   Median :1618   Median : 8.950  
##  Mean   :31.005   Mean   :132665   Mean   :1738   Mean   : 9.193  
##  3rd Qu.:40.893   3rd Qu.:150050   3rd Qu.:2056   3rd Qu.:10.950  
##  Max.   :83.547   Max.   :180000   Max.   :3296   Max.   :14.900
#indici di posizione 
#media e mediana delle variabili numeriche
sales <- data$sales
mean_sales=sum(sales)/length(sales)
median_sales=median(sales)

volume <- data$volume
mean_volume=sum(volume)/length(volume)
median_volume=median(volume)

median_price <- data$median_price
mean_median_price=sum(median_price)/length(median_price)
median_median_price=median(median_price)

listings <- data$listings
mean_listings=sum(listings)/length(listings)
median_listings=median(listings)

months_inventory <- data$months_inventory
mean_months_inventory=sum(months_inventory)/length(months_inventory)
median_inventory=median(months_inventory)

#varianza e deviazione standard
variance_sales=var(sales)
dev_std_sales=sqrt(variance_sales)

variance_volume=var(volume)
dev_std_volumes= sqrt(variance_volume)

variance_median_price=var(median_price)
dev_std_median_price= sqrt(variance_median_price)

variance_listings=var(listings)
dev_std_listings= sqrt(variance_listings)

variance_months_inventory=var(months_inventory)
dev_std_months_inventory= sqrt(variance_months_inventory)

#indici di posizione
seq=seq(from=0,to=1,by=0.01)
quantile_sales=quantile(sales)
percentile_sales=quantile(sales,c(seq))

quantile_volume=quantile(volume)
percentile_volume=quantile(volume,c(seq))

quantile_median_price=quantile(median_price)
percentile_median_price=quantile(median_price,c(seq))

quantile_listings=quantile(listings)
percentile_listings=quantile(listings,c(seq))

quantile_months_inventory=quantile(months_inventory)
percentile_months_inventory=quantile(months_inventory,c(seq))

#indici di forma
asimmetria <- function(variabile){
  mu <- mean(variabile)
  len<-length(variabile) 
  sigma<-sd(variabile) 
  m3 <- sum((variabile-mu)^3)/len
  fisher_index <- m3/sigma^3
  hist(variabile, main = "Distribuzione della variabile", col = "lightblue", border = "white")
  abline(v=mu,col="red")
  return(fisher_index)
}
asimmetria(sales)

## [1] 0.7136206
#possiamo notare come la variabile sales abbia una distribuzione asimmetrica, nello specifico vi è una maggiore frequenza di valori nella coda sinistra, è possibile notarlo sia graficamente che dal valore dell'indice di fisher: 0.7136206
asimmetria(volume)

## [1] 0.8792182
#possiamo notare come la variabile volume abbia una distribuzione asimmetrica, nello specifico vi è una maggiore frequenza di valori nella coda sinistra, è possibile notarlo sia graficamente che dal valore dell'indice di fisher: 0.8792182
asimmetria(median_price)

## [1] -0.3622768
#possiamo notare come la variabile volume abbia una distribuzione asimmetrica, nello specifico vi è una maggiore frequenza di valori nella coda destra, è possibile notarlo sia graficamente che dal valore dell'indice di fisher: -0.3622768
asimmetria(listings)

## [1] 0.6454431
#possiamo notare come la variabile volume abbia una distribuzione asimmetrica, nello specifico vi è una maggiore frequenza di valori nella coda sinistra, è possibile notarlo sia graficamente che dal valore dell'indice di fisher: 0.6454431
asimmetria(months_inventory)

## [1] 0.04071944
#la variabile moths_inventory ha un valore dell'indice di fisher pari a 0.04071944, confermando quanto vediamo graficamente: non vi è un'asimmetria così marcarta

curtosi <- function(variabile){
  mu <- mean(variabile)
  len<-length(variabile) 
  sigma<-sd(variabile) 
  m4 <- sum((variabile-mu)^4)/len
  fisher_index <- m4/sigma^4-3
  return(fisher_index)
}
curtosi(sales)
## [1] -0.33552
#il valore dell'indice di fisher relativo alla curtosi è di: -0.33552; questo indica che la distribuzione della variabile sales è più piatta rispetto a una distribuzione normale (meno valori estremi)
curtosi(volume)
## [1] 0.1505673
#il valore dell'indice di fisher relativo alla curtosi è di: 0.1505673; questo indica che la distribuzione della variabile volume è leggermente più appuntita rispetto a una distribuzione normale (tendenzialmente ha più valori estremi, anche se di poco visto il valore dell'indice)
curtosi(median_price)
## [1] -0.6427292
#il valore dell'indice di fisher relativo alla curtosi è di: -0.6427292; questo indica che la distribuzione della variabile median_price è più piatta rispetto a una distribuzione normale (meno valori estremi)
curtosi(listings)
## [1] -0.8101534
#il valore dell'indice di fisher relativo alla curtosi è di: -0.8101534; questo indica che la distribuzione della variabile listings è più piatta rispetto a una distribuzione normale (meno valori estremi)
curtosi(months_inventory)
## [1] -0.1979448
#il valore dell'indice di fisher relativo alla curtosi è di: -0.1979448; questo indica che la distribuzione della variabile months_inventory è più piatta rispetto a una distribuzione normale (meno valori estremi, anche se di poco visto il valore dell'indice)

#distribuzione di frequenza per le variabili city, year e month
distribuzione_frequenza <- function(var,n) {
  ni <- table(var)
  fi <- table(var)/n
  Ni <- cumsum(ni)
  Fi <- Ni/n
  distr <- cbind(ni,fi,Ni,Fi)
  return(distr)
}

city_distr_freq <- distribuzione_frequenza(data$city,n)
year_distr_freq <- distribuzione_frequenza(data$year,n)
month_distr_freq <- distribuzione_frequenza(data$month,n)
#le variabili sono distribuite in modo equo lungo tutte le rispettive classi, nello specifico per la variabile city: 0.25 per ogni classe (60 osservazioni su un totale di 240); year: 0.20 per ogni classe (48 su 240); month: 0.083 per ogni classe (20 su 240)
####punto 3: indentificazione variabili con maggiore variabilità e asimmetria ####
coefficiente_variazione <- function(media,dev){
  coef <- dev/media
  return(coef)
}

sales_coef_var <- coefficiente_variazione(mean_sales,dev_std_sales)
volume_coef_var <- coefficiente_variazione(mean_volume,dev_std_volumes)
median_price_coef_var <- coefficiente_variazione(mean_median_price,dev_std_median_price)
listings_coef_var <- coefficiente_variazione(mean_listings,dev_std_listings)
months_inventory_coef_var <- coefficiente_variazione(mean_months_inventory,dev_std_months_inventory)
#osservando i valori dei coefficienti di variazione delle rispettive variabili possiamo evidenziare come la variabile [volume] sia quella che ha la variabilità maggiore (volume_coef_var= 0.5370536)

#la variabile con la maggiore asimmetria è [volume], nello specifico ha più valori nella coda sinistra della sua distribuzione. risulta quella più asimmetrica perchè ha il valore assoluto dell'indice di fisher più alto: 0.8792182
#### punto 4: creazione di classi per una variabile quantitativa ####
nomi_classi <- c("<=100k","100-120k","120-140k","140-160kg","160-180k")
breaks <- c(0,100000,120000,140000,160000,180001)
new_median_price <- cut(data$median_price, breaks = breaks, label=nomi_classi, right = FALSE)
count_new_median_price <- table(new_median_price)
new_median_price_distr_freq <- distribuzione_frequenza(new_median_price,n)
n_frequenze_median_price <- new_median_price_distr_freq[,1]
barplot(n_frequenze_median_price,
        main="Distribuzione frequenza di Median Price",
        xlab = "Prezzo delle case espresso i migliaia di dollari",
        ylab = "Frequenze assolute",
        col= "lightblue")

gini <- function(var){
  ni <- table(var)
  fi <- ni/length(var)
  fi2 <- fi^2
  j <- length(ni)
  
  gini = 1-sum(fi2)
  gini.normalizzato = gini/((j-1)/j)
  
  return(gini.normalizzato)
}
gini_median_price <- gini(data$median_price)
table(data$median_price)
## 
##  73800  82100  85900  86400  87000  87200  87500  88600  89400  90000  90800 
##      1      1      1      1      1      1      1      1      1      2      1 
##  91200  91700  92200  93000  94000  95000  96000  96700  97500  99300  99600 
##      1      1      1      1      1      1      1      1      2      1      1 
##  1e+05 100700 101400 102300 102500 102900 103800 104700 105000 105200 105800 
##      2      2      1      3      2      1      1      2      1      2      1 
## 106700 108000 108300 109100 109400 110000 111100 112100 113300 113600 114000 
##      1      1      1      1      1      2      2      1      1      1      1 
## 114300 115700 116000 116500 116700 117500 118200 118800 119200 120000 120600 
##      1      1      1      1      1      1      1      2      1      1      1 
## 120700 121100 121200 121300 121800 122400 122800 123100 123200 123800 124200 
##      1      2      1      1      1      1      1      1      1      1      1 
## 124300 126100 126200 127000 128100 128200 128800 129100 129200 129400 129600 
##      2      1      1      1      1      1      1      1      1      1      1 
## 130000 130700 130800 131200 131400 131500 132100 132400 132500 132800 132900 
##      4      2      2      1      1      1      1      1      2      1      1 
## 133200 133300 133600 133800 134100 134200 134300 134400 134500 134700 135000 
##      2      1      1      1      2      2      1      1      2      1      1 
## 135100 135300 135700 136000 136100 136300 136800 137600 138200 138300 138500 
##      1      1      2      1      1      1      1      1      1      1      1 
## 138900 139200 139400 139600 140000 140500 140600 140700 142000 142200 142400 
##      1      1      1      1      2      1      1      1      1      1      2 
## 142700 143100 143600 144000 144100 144600 144800 144900 145000 145800 146700 
##      1      1      1      1      2      2      2      1      1      1      1 
## 146900 147000 147400 147600 147700 147900 148100 148300 148400 148500 148700 
##      1      1      1      1      1      1      1      1      1      2      1 
## 148900 149100 149300 149400 150000 150200 150700 151000 151200 151500 151700 
##      1      1      2      1      1      1      1      1      1      1      1 
## 151900 152000 152100 152200 152300 152600 153100 153300 153900 154300 154400 
##      1      1      2      1      1      1      2      1      1      1      1 
## 155200 155300 155500 155600 155700 156200 156400 156500 156600 157300 158200 
##      2      2      1      2      1      1      1      3      1      1      1 
## 158800 159300 159400 159700 161000 161200 161400 161600 163700 163800 165200 
##      1      1      1      1      2      1      1      1      1      1      1 
## 165300 166100 167300 168500 169500 169600 170000 172200 172600 172800 176100 
##      1      1      1      1      1      1      1      1      1      1      1 
## 177300 180000 
##      1      1
gini_sales <- gini(data$sales)
table(data$sales)
## 
##  79  80  81  83  89  90  91  92  93  94  95  96  97  98 100 101 102 104 105 107 
##   2   1   1   1   3   1   1   1   2   2   1   1   2   1   1   3   2   1   1   1 
## 108 109 110 111 112 113 114 115 116 117 119 121 122 123 124 125 127 128 129 130 
##   3   1   2   2   1   2   2   2   1   1   2   1   1   2   5   2   2   2   1   3 
## 131 132 134 135 137 140 141 143 144 146 147 148 149 150 151 152 155 159 160 162 
##   1   2   1   3   1   2   1   3   1   1   1   2   3   4   1   1   2   3   3   2 
## 163 164 165 166 167 169 170 171 173 174 175 176 177 180 181 182 186 187 188 189 
##   2   2   1   2   1   2   1   1   1   1   1   2   2   1   2   4   3   1   1   2 
## 190 193 196 197 198 200 202 204 206 208 209 210 212 213 218 220 224 225 227 232 
##   1   2   2   2   2   2   3   1   1   2   1   1   2   1   2   1   1   1   2   1 
## 233 234 238 239 241 244 246 250 253 254 255 258 260 262 267 271 272 273 275 278 
##   1   1   3   1   1   2   2   1   3   1   1   1   1   2   1   2   1   1   1   1 
## 281 282 284 286 287 289 292 293 294 295 296 298 300 302 303 313 316 317 322 323 
##   1   3   1   1   1   3   1   1   1   1   1   2   1   1   1   1   1   1   1   1 
## 326 328 332 335 341 347 353 357 361 369 371 377 388 402 403 423 
##   1   1   1   1   1   1   1   2   1   2   1   1   1   1   1   1
#entrambe le variabili mostrano una distribuzione fortemente eterogena, evidenziando valori dell'indice di gini prossimi a 1.
#### punto 5: calcolo delle probabilità ####
#Qual è la probabilità che, presa una riga a caso di questo dataset, essa riporti la città “Beaumont”? la probabilità è del 25%
città<- table(data$city)
n_bea<- as.numeric(città["Beaumont"])
prob_bea <- n_bea/n

#E la probabilità che riporti il mese di Luglio? la probabilità è dell'8,33%
mesi <- table(data$month)
n_luglio <- as.numeric(mesi[7])
prob_luglio <- n_luglio/n

#E la probabilità che riporti il mese di dicembre 2012? la probabilità è pari al 3,33%
anno2012_dicembre <- data[data$year == 2012 & data$month==12,]
n_2012_dicembre <- length(anno2012_dicembre)
prob_2012_dicembre <- n_2012_dicembre/n
#### punto 6: nuove variabili ####
#prezzo medio (sales/volume)
#View(data)
data$prezzo_medio <- (data$volume/data$sales)*1000000
summary(data$prezzo_medio)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   97010  132939  156588  154320  173915  213234
#efficacia annunci di vendita (sales/listings)
data$efficacia_annunci <- data$sales/data$listings
summary(data$efficacia_annunci)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.05014 0.08980 0.10963 0.11874 0.13492 0.38713
#### punto 7: analisi condizionata #### 
#utilizzo la variabile prezzo medio ottenuta precedentemente
library("dplyr")
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library("ggplot2")
#per città
data_bea <- data %>% filter(city=="Beaumont")
data_wichita <- data %>% filter(city=="Wichita Falls")
data_tyler <- data %>% filter(city=="Tyler")
data_bryan <- data %>% filter(city=="Bryan-College Station")

#calcolo media e deviazione stanrdard, rappresentando i valori in migliaia di dollari
mean_prezzo_m_bea <- mean(data_bea$prezzo_medio)/1000
dev_prezzo_m_bea <- sd(data_bea$prezzo_medio)/1000

mean_prezzo_m_wichita <- mean(data_wichita$prezzo_medio)/1000
dev_prezzo_m_wichita <- sd(data_wichita$prezzo_medio)/1000

mean_prezzo_m_tyler <- mean(data_tyler$prezzo_medio)/1000
dev_prezzo_m_tyler <- sd(data_tyler$prezzo_medio)/1000

mean_prezzo_m_bryan <- mean(data_bryan$prezzo_medio)/1000
dev_prezzo_m_bryan <- sd(data_bryan$prezzo_medio)/1000

df_citta <- data.frame(
  citta = c("Beaumont","Wichita Falls","Tyler","Bryan-College Station"),
  media_prezzo_medio = c(mean_prezzo_m_bea,mean_prezzo_m_wichita,mean_prezzo_m_tyler,mean_prezzo_m_bryan),
  dev_prezzo_medio = c(dev_prezzo_m_bea,dev_prezzo_m_wichita,dev_prezzo_m_tyler,dev_prezzo_m_bryan)
  )
ggplot(data=df_citta)+
  geom_bar(aes(x=citta,y=media_prezzo_medio),fill="red3",col="black",stat="identity",lwd=0.5)+
  labs(x="prezzo medio (mean)",y="città",title="prezzo medio per città (in migliaia)")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

ggplot(data=df_citta)+
  geom_bar(aes(x=citta,y=dev_prezzo_medio),fill="blue3",col="black",stat="identity",lwd=0.5)+
  labs(x="deviazione standard",y="città",title="dev std del prezzo per città")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

#per anno
data_2010<- data %>% filter(year=="2010")
data_2011<- data %>% filter(year=="2011")
data_2012<- data %>% filter(year=="2012")
data_2013<- data %>% filter(year=="2013")
data_2014<- data %>% filter(year=="2014")

mean_prezzo_m_2010 <- mean(data_2010$prezzo_medio)/1000
dev_prezzo_m_2010<- sd(data_2010$prezzo_medio)/1000

mean_prezzo_m_2011 <- mean(data_2011$prezzo_medio)/1000
dev_prezzo_m_2011<- sd(data_2011$prezzo_medio)/1000

mean_prezzo_m_2012 <- mean(data_2012$prezzo_medio)/1000
dev_prezzo_m_2012<- sd(data_2012$prezzo_medio)/1000

mean_prezzo_m_2013 <- mean(data_2013$prezzo_medio)/1000
dev_prezzo_m_2013 <- sd(data_2013$prezzo_medio)/1000

mean_prezzo_m_2014 <- mean(data_2014$prezzo_medio)/1000
dev_prezzo_m_2014 <- sd(data_2014$prezzo_medio)/1000

df_anno <- data.frame(
  anno = c("2010","2011","2012","2013","2014"),
  media_prezzo_medio = c(mean_prezzo_m_2010,mean_prezzo_m_2011,mean_prezzo_m_2012,mean_prezzo_m_2013,mean_prezzo_m_2014),
  dev_prezzo_medio = c(dev_prezzo_m_2010,dev_prezzo_m_2011,dev_prezzo_m_2012,dev_prezzo_m_2013,dev_prezzo_m_2014)
)

ggplot(data=df_anno)+
  geom_bar(aes(x=anno,y=media_prezzo_medio),fill="red3",col="black",stat="identity",lwd=0.5)+
  labs(x="prezzo medio",y="anno",title="prezzo medio per anno (in migliaia)")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

ggplot(data=df_anno)+
  geom_bar(aes(x=anno,y=dev_prezzo_medio),fill="blue3",col="black",stat="identity",lwd=0.5)+
  labs(x="deviazione standard",y="anno",title="dev std del prezzo per anno")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

#per quadrimestre
data_first_quart <- data %>% filter(month==c("1","2","3","4"))
data_second_quart <- data %>% filter(month==c("5","6","7","8"))
data_third_quart <- data %>% filter(month==c("9","10","11","12"))

mean_prezzo_m_first_quart <- mean(data_first_quart$prezzo_medio)/1000
dev_prezzo_m_first_quart <- sd(data_first_quart$prezzo_medio)/1000

mean_prezzo_m_second_quart <- mean(data_second_quart$prezzo_medio)/1000
dev_prezzo_m_second_quart <- sd(data_second_quart$prezzo_medio)/1000

mean_prezzo_m_third_quart <- mean(data_third_quart$prezzo_medio)/1000
dev_prezzo_m_third_quart <- sd(data_third_quart$prezzo_medio)/1000

df_quadrimestre <- data.frame(
  quarter = c("first quarter","second quarter","third quarter"),
  media_prezzo_medio = c(mean_prezzo_m_first_quart,mean_prezzo_m_second_quart,mean_prezzo_m_third_quart),
  dev_prezzo_medio = c(dev_prezzo_m_first_quart,dev_prezzo_m_second_quart,dev_prezzo_m_third_quart)
)

ggplot(data=df_quadrimestre)+
  geom_bar(aes(x=quarter,y=media_prezzo_medio),fill="red3",col="black",stat="identity",lwd=0.5)+
  labs(x="prezzo medio",y="anno",title="prezzo medio per quadrimestre (in migliaia)")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

ggplot(data=df_quadrimestre)+
  geom_bar(aes(x=quarter,y=dev_prezzo_medio),fill="blue3",col="black",stat="identity",lwd=0.5)+
  labs(x="deviazione standard",y="anno",title="dev std del prezzo per quadrimestre")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

#### punto 8 ####
#visualizzazioni con ggplot2
ggplot(data=data)+
  geom_boxplot(aes(x=city,y=median_price),fill="green",lwd=0.5)+
  labs(x="città",y="prezzo mediano in $",title="prezzo mediano tra città (in millioni)")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

"possiamo osservare come il prezzo mediano di Bryan-College Station sia il più alto, mentre Wichitia Falls ha il prezzo mediano più basso tra le città analizzate"
## [1] "possiamo osservare come il prezzo mediano di Bryan-College Station sia il più alto, mentre Wichitia Falls ha il prezzo mediano più basso tra le città analizzate"
ggplot(data=data)+
  geom_bar(aes(x=city,y=sales),fill="lightblue3",stat="identity")+
  labs(x="città",y="totale vendite",title="totale vendite per città")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

"possiamo evidenziare che Tyler è la città con il numero più alto di vendite (oltre 15k), mentre la città con il numero di vendite più basso è Wichitia Falls"
## [1] "possiamo evidenziare che Tyler è la città con il numero più alto di vendite (oltre 15k), mentre la città con il numero di vendite più basso è Wichitia Falls"
ggplot(data=data)+
  geom_bar(aes(x=month,y=sales),fill="lightblue3",stat="identity")+
  labs(x="mese",y="totale vendite",title="totale vendite per mese")+
  scale_x_continuous(breaks = seq(1,12,1))+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

"l'intervallo temporale tra aprile e agosto è il periodo in cui si registrano il maggior numero di vendite, mentre gennaio e febbraio sono i mesi in cui abbiamo il numero di vendite più basso"
## [1] "l'intervallo temporale tra aprile e agosto è il periodo in cui si registrano il maggior numero di vendite, mentre gennaio e febbraio sono i mesi in cui abbiamo il numero di vendite più basso"
data$date_string <- paste(data$year,data$month,"01",sep="-")
data$date <- as.Date(data$date_string, format = "%Y-%m-%d")

ggplot(data=data)+
  geom_line(aes(x=date,y=sales),color="blue")+
  labs(x="mese",y="totale vendite",title="totale vendite per mese")+
  scale_x_date(date_breaks = "4 month",date_labels = "%Y-%m")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

#### ulteriori osservazioni operative ####
#1:
ggplot(data=data)+
  geom_boxplot(aes(x=city,y=sales),fill="green",lwd=0.5)+
  labs(x="città",y="vendite",title="numero delle vendite tra le città")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

ggplot(data=data)+
  geom_boxplot(aes(x=factor(year),y=sales),fill="green",lwd=0.5)+
  labs(x="anni",y="vendite",title="numero delle vendite negli anni")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

"possiamo osservare un trend in crescita del numero di vendite negli anni (dal 2012 al 2014)"
## [1] "possiamo osservare un trend in crescita del numero di vendite negli anni (dal 2012 al 2014)"
#2:
ggplot(data = data)+
  geom_bar(aes(x=city,y=sales, fill = factor(month)), 
           stat = "identity", position = "stack")+ 
  labs(title="totale delle vendite per le città e i mesi",
       x = "città",
       y = "vendite",
       fill="mese")+
  theme(legend.position = "bottom")

#3:
ggplot(data = data)+
  geom_bar(aes(x=city,y=sales, fill = factor(month)), 
           stat = "identity", position = "fill")+ 
  labs(title="totale delle vendite per le città e i mesi",
       x = "città",
       y = "vendite",
       fill="mese")+
  scale_y_continuous(labels=scales::percent)+
  theme(legend.position = "bottom")

ggplot(data = data)+
  geom_bar(aes(x=interaction(city,year),y=sales, fill = factor(month)), 
           stat = "identity", position = "fill")+ 
  labs(title="totale delle vendite per le città e i mesi",
       x = "città",
       y = "vendite",
       fill="mese")+
  scale_y_continuous(labels=scales::percent)+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  theme(legend.position = "bottom")

#4:

ggplot(data=data)+
  geom_line(aes(x=date,y=prezzo_medio,color=city))+
  labs(x="mese",y="prezzo medio",title="prezzo medio per mese tra le città")+
  scale_x_date(date_breaks = "4 month",date_labels = "%Y-%m")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

"il grafico mostra dei valori piuttosto volatili durante tutto il periodo preso in cosiderazione, possiamo evidenziare che le città di Bryan-College e Tyler nel 2014 hanno dei valori del prezzo medio più alti rispetto al 2010; mentre le città di Beaumont e Wichita Falls hanno dei valori più bassi rispetto ai dati iniziali"
## [1] "il grafico mostra dei valori piuttosto volatili durante tutto il periodo preso in cosiderazione, possiamo evidenziare che le città di Bryan-College e Tyler nel 2014 hanno dei valori del prezzo medio più alti rispetto al 2010; mentre le città di Beaumont e Wichita Falls hanno dei valori più bassi rispetto ai dati iniziali"
ggplot(data=data)+
  geom_line(aes(x=date,y=efficacia_annunci,color=city))+
  labs(x="mese",y="efficacia annunci",title="efficacia annunci per mese tra le città")+
  scale_x_date(date_breaks = "4 month",date_labels = "%Y-%m")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

"il grafico evidenzia come sia aumentata l'efficacia degli annunci per la città di Bryan-College durante il periodo analizzato: si è arrivati a un tasso di efficacia vicino al 40% nell'ultimo anno, a differenza delle restanti città che hanno avuto dei risultati abbastanza simili senza mai superare il 20%"
## [1] "il grafico evidenzia come sia aumentata l'efficacia degli annunci per la città di Bryan-College durante il periodo analizzato: si è arrivati a un tasso di efficacia vicino al 40% nell'ultimo anno, a differenza delle restanti città che hanno avuto dei risultati abbastanza simili senza mai superare il 20%"
ggplot(data=data)+
  geom_line(aes(x=date,y=median_price,color=city))+
  labs(x="mese",y="prezzo mediano",title="prezzo mediano per mese tra le città")+
  scale_x_date(date_breaks = "4 month",date_labels = "%Y-%m")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

"il grafico evidenzia come si è distribuito nel periodo 2010-2014 il prezzo mediano tra le città: le città di Bryan-College e Tyler mostrano un aumento del prezzo mediano rispetto ai dati iniziali; la città di Beaumont ha mantenuto valori simili o leggermente inferiori durante il periodo; Wichita Falls è la città che ha mostrato l'andamento più volatile, senza mostrare però una crescita"
## [1] "il grafico evidenzia come si è distribuito nel periodo 2010-2014 il prezzo mediano tra le città: le città di Bryan-College e Tyler mostrano un aumento del prezzo mediano rispetto ai dati iniziali; la città di Beaumont ha mantenuto valori simili o leggermente inferiori durante il periodo; Wichita Falls è la città che ha mostrato l'andamento più volatile, senza mostrare però una crescita"
ggplot(data=data)+
  geom_line(aes(x=date,y=sales,color=city))+
  labs(x="mese",y="numero vendite",title="numero vendite per mese tra le città")+
  scale_x_date(date_breaks = "4 month",date_labels = "%Y-%m")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

"il grafico del numero di vendite tra le città mostra che le città di Tyler, Bryan-College e Beaumont sono quelle che hanno aumentato il loro numero di vendite nel tempo, mentre Wichita Falls le ha addirittura ridotte dopo un aumento iniziale"
## [1] "il grafico del numero di vendite tra le città mostra che le città di Tyler, Bryan-College e Beaumont sono quelle che hanno aumentato il loro numero di vendite nel tempo, mentre Wichita Falls le ha addirittura ridotte dopo un aumento iniziale"