library(moments)
library(summarytools)
## Warning: il pacchetto 'summarytools' è stato creato con R versione 4.5.3
library(dplyr)
## Warning: il pacchetto 'dplyr' è stato creato con R versione 4.5.3
## 
## Caricamento pacchetto: 'dplyr'
## I seguenti oggetti sono mascherati da 'package:stats':
## 
##     filter, lag
## I seguenti oggetti sono mascherati da 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
## Warning: il pacchetto 'ggplot2' è stato creato con R versione 4.5.3
dati=read.csv("realestate_texas.csv")
head(dati,5)
##       city year month sales volume median_price listings months_inventory
## 1 Beaumont 2010     1    83 14.162       163800     1533              9.5
## 2 Beaumont 2010     2   108 17.690       138200     1586             10.0
## 3 Beaumont 2010     3   182 28.701       122400     1689             10.6
## 4 Beaumont 2010     4   200 26.819       123200     1708             10.6
## 5 Beaumont 2010     5   202 28.833       123100     1771             10.9
#vediamo da cosa è composto il dataset con il comando str
str(dati)
## '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 ...

#step 1 analisi delle variabili

#Il dataset contiene diverse variabili di natura qualitativa e quantitativa, che permettono di analizzare il mercato immobiliare da più prospettive.

#city: variabile qualitativa nominale, che identifica la città di riferimento. Non è ordinabile e consente analisi tramite distribuzioni di frequenza o confronti tra gruppi. #year: variabile quantitativa discreta che rappresenta la dimensione temporale annuale del dataset. Permette di analizzare l’evoluzione delle vendite nel tempo, identificando trend, anni con valori massimi o minimi e variazioni nel mercato. #month: variabile quantitativa discreta con valori da 1 a 12. Rappresenta una dimensione temporale intra-annuale ed è utile per studiare la stagionalità delle vendite, individuando mesi con maggiore o minore attività. #sales: variabile quantitativa discreta che rappresenta il numero totale di vendite. È una delle variabili principali per l’analisi del mercato, utilizzabile per calcolare medie, variabilità e trend nel tempo. #volume: variabile quantitativa continua che indica il valore totale delle vendite (in milioni di dollari). Permette di analizzare il peso economico delle transazioni immobiliari. #median_price: variabile quantitativa continua che rappresenta il prezzo mediano degli immobili. È utile per studiare la distribuzione dei prezzi e confrontare i livelli tra città e periodi. #listings: variabile quantitativa discreta che indica il numero di annunci attivi. Consente di analizzare l’offerta nel mercato immobiliare. #months_inventory: variabile quantitativa continua che rappresenta il tempo necessario per vendere tutte le inserzioni attive. È un indicatore dell’equilibrio tra domanda e offerta.

#STEP 2 indici di posizone, variabilità e forma e costruzione tabelle di frequenze

#varibile City
N=dim(dati)[1]
table(dati$city)
## 
##              Beaumont Bryan-College Station                 Tyler 
##                    60                    60                    60 
##         Wichita Falls 
##                    60
freq_ass_city=table(dati$city)
freq_rel_city=table(dati$city)/N
distr_freq_city=cbind(freq_ass_city,freq_rel_city)
distr_freq_city
##                       freq_ass_city freq_rel_city
## Beaumont                         60          0.25
## Bryan-College Station            60          0.25
## Tyler                            60          0.25
## Wichita Falls                    60          0.25
# Non si calcolano le frequenze cumulate per la variabile city,
# in quanto si tratta di una variabile qualitativa nominale,
# priva di un ordinamento naturale tra le modalità.
# Di conseguenza, le frequenze cumulate non hanno interpretazione statistica.

#varibaile YEAR
table(dati$year)
## 
## 2010 2011 2012 2013 2014 
##   48   48   48   48   48
freq_ass_year=table(dati$year)
freq_rel_year=table(dati$year)/N
freq_ass_cum_year=cumsum(freq_ass_year)
freq_rel_cum_year=cumsum(freq_rel_year)
distr_freq_year=cbind(freq_ass_year,freq_rel_year,freq_ass_cum_year,freq_rel_cum_year)
distr_freq_year
##      freq_ass_year freq_rel_year freq_ass_cum_year freq_rel_cum_year
## 2010            48           0.2                48               0.2
## 2011            48           0.2                96               0.4
## 2012            48           0.2               144               0.6
## 2013            48           0.2               192               0.8
## 2014            48           0.2               240               1.0
#varibiale month
table(dati$month)
## 
##  1  2  3  4  5  6  7  8  9 10 11 12 
## 20 20 20 20 20 20 20 20 20 20 20 20
freq_ass_month=table(dati$month)
freq_rel_month=table(dati$month)/N
distr_freq_month=cbind(freq_ass_month,freq_rel_month)
distr_freq_month
##    freq_ass_month freq_rel_month
## 1              20     0.08333333
## 2              20     0.08333333
## 3              20     0.08333333
## 4              20     0.08333333
## 5              20     0.08333333
## 6              20     0.08333333
## 7              20     0.08333333
## 8              20     0.08333333
## 9              20     0.08333333
## 10             20     0.08333333
## 11             20     0.08333333
## 12             20     0.08333333
# Le distribuzioni di frequenza delle variabili year e month risultano uniformi.
# In particolare, ogni anno presenta lo stesso numero di osservazioni (48),
# pari al 20% del totale, mentre ogni mese compare con la stessa frequenza (20 osservazioni, 8,33%).
# Questa uniformità indica che il dataset è bilanciato nel tempo,
# consentendo confronti coerenti tra anni e mesi senza distorsioni dovute alla numerosità dei dati.


#iniziamo dalla varibaile sales
mean_sales=mean(dati$sales)
median_sales=median(dati$sales)
quantile_sales=quantile(dati$sales)
quantile_sales
##    0%   25%   50%   75%  100% 
##  79.0 127.0 175.5 247.0 423.0
min(dati$sales)
## [1] 79
max(dati$sales)
## [1] 423
range_sales=range(dati$sales)
iqr_sales=IQR(dati$sales)
var_sales=var(dati$sales)
sd_sales=sd(dati$sales)
skew_sales = skewness(dati$sales)
kurt_sales = kurtosis(dati$sales)

skew_sales
## [1] 0.718104
kurt_sales
## [1] 2.686824
cv=function(x){
  return(sd(x)/mean(x)*100)
}
cv(dati$sales)
## [1] 41.42203
var_sales
## [1] 6344.3
sd_sales
## [1] 79.65111
descr(dati$sales)
## Descriptive Statistics  
## dati$sales  
## N: 240  
## 
##                      sales
## ----------------- --------
##              Mean   192.29
##           Std.Dev    79.65
##               Min    79.00
##                Q1   127.00
##            Median   175.50
##                Q3   248.00
##               Max   423.00
##               MAD    82.28
##               IQR   120.00
##                CV     0.41
##          Skewness     0.71
##       SE.Skewness     0.16
##          Kurtosis    -0.34
##           N.Valid   240.00
##                 N   240.00
##         Pct.Valid   100.00
#La variabile sales presenta una media di 192,3 e una mediana di 175,5, suggerendo una distribuzione leggermente 
#asimmetrica a destra. La deviazione standard pari a 79,65 e il coefficiente di variazione del 41,42% indicano 
#una variabilità piuttosto elevata nelle vendite mensili, che può essere dovuta a diversi fattori esterni.

#variabile volume
# per gli altri indici utilizzero una libreria esterna ad r, cosi da non rendere il codice ridondante
descr(dati$volume)
## Descriptive Statistics  
## dati$volume  
## N: 240  
## 
##                     volume
## ----------------- --------
##              Mean    31.01
##           Std.Dev    16.65
##               Min     8.17
##                Q1    17.63
##            Median    27.06
##                Q3    40.90
##               Max    83.55
##               MAD    16.16
##               IQR    23.23
##                CV     0.54
##          Skewness     0.88
##       SE.Skewness     0.16
##          Kurtosis     0.15
##           N.Valid   240.00
##                 N   240.00
##         Pct.Valid   100.00
# La variabile volume presenta una media superiore alla mediana (31,01 > 27,06),
# indicando una distribuzione leggermente asimmetrica a destra.
# La deviazione standard pari a 16,65 risulta elevata rispetto alla media,
# evidenziando una dispersione significativa dei dati.
# Il coefficiente di variazione pari a circa 54% conferma un’elevata variabilità,
# suggerendo forti differenze nel valore economico delle vendite tra città e periodi.

#VARIABILE MEDIAN_PRICE
descr(dati$median_price)
## Descriptive Statistics  
## dati$median_price  
## N: 240  
## 
##                     median_price
## ----------------- --------------
##              Mean      132665.42
##           Std.Dev       22662.15
##               Min       73800.00
##                Q1      117100.00
##            Median      134500.00
##                Q3      150100.00
##               Max      180000.00
##               MAD       24092.25
##               IQR       32750.00
##                CV           0.17
##          Skewness          -0.36
##       SE.Skewness           0.16
##          Kurtosis          -0.64
##           N.Valid         240.00
##                 N         240.00
##         Pct.Valid         100.00
# La variabile median_price presenta una media (132.665,42) molto vicina alla mediana (134.500),
# indicando una distribuzione sostanzialmente simmetrica e ben centrata.
# La deviazione standard pari a 22.662,15 è moderata rispetto al valore medio,
# mentre il coefficiente di variazione pari a circa 17% evidenzia una bassa variabilità.
# Questo suggerisce una relativa stabilità dei prezzi immobiliari nel periodo analizzato,
# con assenza di forti oscillazioni nel mercato.

#VARIABILE LISTINGS
descr(dati$listings)
## Descriptive Statistics  
## dati$listings  
## N: 240  
## 
##                     listings
## ----------------- ----------
##              Mean    1738.02
##           Std.Dev     752.71
##               Min     743.00
##                Q1    1025.00
##            Median    1618.50
##                Q3    2128.00
##               Max    3296.00
##               MAD     879.92
##               IQR    1029.50
##                CV       0.43
##          Skewness       0.65
##       SE.Skewness       0.16
##          Kurtosis      -0.81
##           N.Valid     240.00
##                 N     240.00
##         Pct.Valid     100.00
# La variabile listings rappresenta il numero di annunci immobiliari attivi.
# La media (1.738,02) è leggermente superiore alla mediana (1.618,50),
# suggerendo una lieve asimmetria positiva dovuta a valori elevati in alcune osservazioni.
# La deviazione standard pari a 752,71 indica una dispersione significativa dei dati,
# mentre il coefficiente di variazione pari a circa 43% evidenzia un’elevata variabilità.
# Questo suggerisce che il mercato immobiliare non è uniforme nel tempo e tra le città,
# con fasi di forte espansione dell’offerta e altre di contrazione.

#VARIABILE MONTH_INVENTORY
descr(dati$months_inventory)
## Descriptive Statistics  
## dati$months_inventory  
## N: 240  
## 
##                     months_inventory
## ----------------- ------------------
##              Mean               9.19
##           Std.Dev               2.30
##               Min               3.40
##                Q1               7.80
##            Median               8.95
##                Q3              11.00
##               Max              14.90
##               MAD               2.15
##               IQR               3.15
##                CV               0.25
##          Skewness               0.04
##       SE.Skewness               0.16
##          Kurtosis              -0.20
##           N.Valid             240.00
##                 N             240.00
##         Pct.Valid             100.00
# La variabile months_inventory rappresenta il tempo medio necessario per vendere le inserzioni immobiliari.
# La media (9,19) è molto vicina alla mediana (8,95), indicando una distribuzione abbastanza simmetrica.
# La deviazione standard pari a 2,30 è relativamente contenuta, mentre il coefficiente di variazione pari a circa 25%
# evidenzia una variabilità moderata.
# Questo suggerisce una certa stabilità nei tempi di vendita degli immobili,
# con differenze presenti ma non eccessivamente marcate tra città e periodi.
#STEP 3 Identificazione delle variabili con maggiore variabilità e asimmetria

#mettiamo a confronto tutti i cv delle variabili
cv_sales=cv(dati$sales)
cv_volume=cv(dati$volume)
cv_median_price=cv(dati$median_price)
cv_listings=cv(dati$listings)
cv_months_invetory=cv(dati$months_inventory)
cv_table=cbind(cv_sales,cv_volume,cv_median_price,cv_listings,cv_months_invetory)
cv_table
##      cv_sales cv_volume cv_median_price cv_listings cv_months_invetory
## [1,] 41.42203  53.70536        17.08218    43.30833           25.06031
# Dall’analisi dei coefficienti di variazione emerge che la variabile con maggiore variabilità è volume,
# seguita da listings e sales.
# Questo indica che il valore economico delle transazioni è la componente più instabile del dataset,
# con forti oscillazioni tra città e periodi temporali.

skew_sales=skewness(dati$sales)
skew_volume=skewness(dati$volume)
skew_median_price=skewness(dati$median_price)
skew_listings=skewness(dati$listings)
skew_months_inventory=skewness(dati$months_inventory)

skew_table=cbind(skew_sales, skew_volume, skew_median_price,
                    skew_listings, skew_months_inventory)

skew_table
##      skew_sales skew_volume skew_median_price skew_listings
## [1,]   0.718104    0.884742        -0.3645529     0.6494982
##      skew_months_inventory
## [1,]            0.04097527
# L’analisi dell’asimmetria evidenzia che la variabile più asimmetrica è volume,
# con una distribuzione fortemente sbilanciata a destra.
# Ciò indica la presenza di valori estremi elevati che influenzano la distribuzione.
#STEP 4, DIVISONI IN CLASSI

dati$sales_cl=cut(dati$sales, breaks=c(30,80,130,180,230,280,330,380,430))
table(dati$sales_cl)
## 
##   (30,80]  (80,130] (130,180] (180,230] (230,280] (280,330] (330,380] (380,430] 
##         3        64        58        43        29        27        12         4
ni_cl=table(dati$sales_cl)
fi_cl=table(dati$sales_cl)/N
Ni_cl=cumsum(ni_cl)
Fi_cl=Ni_cl/N

cbind(ni_cl,fi_cl,Ni_cl,Fi_cl)
##           ni_cl      fi_cl Ni_cl     Fi_cl
## (30,80]       3 0.01250000     3 0.0125000
## (80,130]     64 0.26666667    67 0.2791667
## (130,180]    58 0.24166667   125 0.5208333
## (180,230]    43 0.17916667   168 0.7000000
## (230,280]    29 0.12083333   197 0.8208333
## (280,330]    27 0.11250000   224 0.9333333
## (330,380]    12 0.05000000   236 0.9833333
## (380,430]     4 0.01666667   240 1.0000000
#una volta suddivisa in classe la varibaile possiamo trovare la classe modale,mediana e le classi dei qaurtili che sono:
# classe modale= 80,130 poichè ha la frequenza assoluta più alta
#classe mediana= 130,180 dato che per quella classe FI_ci>0.5
#classe del primo quartile = 80,130 ovvero la classe con Fi_cl > 0.25
#classe del secondo quartile = classe mediana
#classe terzo quartile= 230,280 ovvero la classe con Fi_cl>0.75

#BOX PLOT DISTRIBUZIONI IN CLASSE PER LA VARIBIALE SALES

ggplot(data=dati)+
  geom_bar(aes(x=sales_cl),
           stat="count",
           col="black",
           fill="blue")+
  labs(title="distrubuzione delle classi di lunghezza",
             x="lunghezza in classi, cm",
             y="frequenze assolute")+
  theme_classic()+
  theme(axis.text.x = element_text(angle = 90))

#adesso clacoliamo l'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)
}
gini_index(dati$sales_cl)
## [1] 0.9236508
# La distribuzione delle frequenze mostra una presenza relativamente equilibrata tra le classi centrali,
# con una maggiore concentrazione nelle classi 80–180 e una progressiva diminuzione verso gli estremi.

# L’indice di Gini pari a 0,92 indica un’elevata eterogeneità tra le classi,
# ma tale valore deve essere interpretato tenendo conto della scelta degli intervalli di discretizzazione,
# che può amplificare la disuguaglianza osservata.

# Nel complesso, la distribuzione non appare fortemente concentrata in una sola classe,
# ma piuttosto distribuita su più intervalli centrali
#STEP 5 CALCOLO DELLE PROBAILITà

#Qual è la probabilità che, presa una riga a caso di questo dataset, essa riporti la città “Beaumont”?
prob_beaumont=sum(dati$city=="Beaumont")/nrow(dati)
prob_beaumont
## [1] 0.25
#E la probabilità che riporti il mese di Luglio?
prob_luglio=sum(dati$month==7)/nrow(dati)
prob_luglio
## [1] 0.08333333
#E la probabilità che riporti il mese di dicembre 2012?
prob_dic_2012=sum(dati$month==12 & dati$year==2012)/nrow(dati)
prob_dic_2012
## [1] 0.01666667
# Le probabilità sono state calcolate come frequenze relative sul totale delle osservazioni.
# La città di Beaumont presenta una probabilità pari a 0.25, indicando che rappresenta una quota significativa del dataset.
# Il mese di luglio ha probabilità 0.0833, coerente con una distribuzione uniforme dei mesi nell’anno.
# La probabilità congiunta di dicembre 2012 è bassa (0.0167), come atteso per un evento specifico che combina due condizioni.
# STEP 6. Creazione di nuove variabili
#Crea una nuova colonna che calcoli il prezzo medio degli immobili utilizzando le variabili disponibili.
dati$average_price=(dati$volume/dati$sales)*1000000

#È stata creata la variabile average_price, calcolata come rapporto tra volume (valore totale delle vendite) e 
#sales (numero di immobili venduti). Poiché la variabile volume è espressa in milioni di dollari, il risultato è stato moltiplicato 
#per 1.000.000 per ottenere il prezzo medio degli immobili espresso direttamente in dollari.

#Prova a creare una colonna che misuri l’efficacia degli annunci di vendita. Commenta e discuti i risultati.

dati$efficacia_annunci=dati$sales/dati$listings

#ANDIAMO AD ANALIZZARE I PRIMI 4 MESI E VEDIAMO COME L'FFICACIA AUMENTA
head(dati,4)
##       city year month sales volume median_price listings months_inventory
## 1 Beaumont 2010     1    83 14.162       163800     1533              9.5
## 2 Beaumont 2010     2   108 17.690       138200     1586             10.0
## 3 Beaumont 2010     3   182 28.701       122400     1689             10.6
## 4 Beaumont 2010     4   200 26.819       123200     1708             10.6
##    sales_cl average_price efficacia_annunci
## 1  (80,130]      170626.5        0.05414220
## 2  (80,130]      163796.3        0.06809584
## 3 (180,230]      157697.8        0.10775607
## 4 (180,230]      134095.0        0.11709602
#possiamo notare come:
#Mese 1: efficacia bassa (5%), una piccola quota degli immobili in vendita viene effettivamente venduta.
#Mese 2: leggero aumento dell’efficacia (6,8%), segnale di un primo miglioramento nella capacità del mercato di assorbire l’offerta.
#Mese 3: efficacia quasi raddoppiata (10,8%), il mercato appare più dinamico e una quota maggiore di annunci si trasforma in vendite.
#Mese 4: ulteriore crescita dell’efficacia (11,7%), indicando una buona performance degli annunci e una maggiore attività del mercato immobiliare.
#PUNTO 7 Analisi condizionata

#ANALISI CONDIZIONATA PER CITTà
sales_city=dati %>%
  group_by(city) %>%
  summarise(mean_city_sales=mean(sales),
            dv.city_sales=sd(sales))
#grafico
ggplot(sales_city, aes(x=city,y=mean_city_sales,fill=city))+
  geom_bar(stat="identity")+
  geom_errorbar(aes(ymin = mean_city_sales - dv.city_sales,
                    ymax = mean_city_sales + dv.city_sales),
                width = 0.2)+
  labs(
    title = "Media vendite per città",
    x = "città",
    y = "Media",
    fill = "Città"
  ) +
  theme_minimal()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

#Il grafico mostra la media delle vendite mensili per città, con barre di errore 
#che rappresentano ±1 deviazione standard, indicando la variabilità dei dati. 
#Tyler si distingue come la città con la media più alta di vendite, circa 270 al mese, ma anche con la maggiore variabilità, segnalata da barre di errore più estese. Al contrario, Wichita Falls presenta la media più bassa, intorno a 120 vendite mensili, e una variabilità molto più contenuta, 
#suggerendo una performance più stabile nel tempo.

#ANALISI CONDIZIONATA PER ANNO
sales_year=dati %>%
  group_by(year) %>%
  summarise(mean_sales_year=mean(sales),
            dv.sales_year=sd(sales))
#grafico
ggplot(sales_year, aes(x=factor(year),y=mean_sales_year))+
  geom_bar(stat="identity")+
  geom_errorbar(aes(ymin = mean_sales_year - dv.sales_year,
                    ymax = mean_sales_year + dv.sales_year),
                width = 0.2)+
  labs(
    title = "Media vendite per anno",
    x = "anno",
    y = "Media",
  ) +
  theme_minimal()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

#Il grafico mostra un trend crescente della media delle vendite annuali 
#in Texas tra il 2010 e il 2014, con valori medi che passano da circa 165 a 230 vendite. Questo suggerisce una ripresa progressiva del mercato immobiliare nel periodo considerato. Le barre di errore, corrispondenti a ±1 deviazione standard, indicano una certa variabilità nella distribuzione delle vendite annuali,
#che però non compromette la chiarezza del trend positivo osservato.

#ANALISI CONDIZIONATA PER MESE
sale_month=dati %>%
  group_by(month) %>%
  summarise(mean_sales_month=mean(sales),
            dv.sales_month=sd(sales))
#grafico
ggplot(sale_month,aes(x=factor(month),y=mean_sales_month))+
  geom_bar(stat="identity")+
  geom_errorbar(aes(ymin = mean_sales_month - dv.sales_month,
                 ymax = mean_sales_month + dv.sales_month),
             width = 0.2)+
  labs(
    title = "Media vendite per mese",
    x = "mese",
    y = "Media",
  ) +
  theme_minimal()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

#Si osserva una chiara stagionalità nelle vendite mensili, 
#che crescono da gennaio (~130) fino a un picco in giugno (~250), 
#per poi diminuire gradualmente fino a novembre (~155), indicando una maggiore attività del mercato nei mesi primaverili ed estivi.
#PUNTO 8 Creazione di visualizzazioni con ggplot2

#boxplot per confrontare la distribuzione del prezzo mediano delle case tra le varie città
ggplot(dati, aes(x = city, y = median_price)) +
  geom_boxplot(fill = "lightblue", color = "darkblue") +
  labs(
    title = "Distribuzione dei prezzi delle case per città",
    x = "Città",
    y = "Prezzo degli immobili"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Il boxplot mostra la distribuzione del prezzo mediano degli immobili per città.
# Bryan-College Station ha i prezzi più alti (~158.000$) e la minore variabilità,
# seguita da Tyler (~143.000$) e Beaumont (~130.000$).
# Wichita Falls presenta i prezzi più bassi (~100.000$) e la maggiore dispersione.
# Si notano outlier in Beaumont e Bryan-College Station, con valori superiori alla norma.

#boxplot per confrontare la distribuzione del valore totale delle vendite tra le varie città ma anche tra i vari anni.
ggplot(dati, aes(x = city, y = volume, fill = factor(year))) +
  geom_boxplot() +
  labs(
    title = "Distribuzione del valore totale delle vendite per città e anno",
    x = "Città",
    y = "Valore totale vendite (milioni USD)",
    fill = "Anno" 
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

#Il boxplot mostra la distribuzione del valore totale delle vendite (in milioni di USD) 
#per città e anno dal 2010 al 2014. In tutte le città si osserva un trend crescente nel valore delle vendite. Tyler e Bryan-College Station registrano i valori più alti e la più marcata crescita nel periodo, mentre Wichita Falls mantiene valori più bassi e volumi relativamente stabili. 
#Beaumont presenta una crescita moderata, con qualche outlier negli anni iniziali.

#Grafici a barre per confrontare il totale delle vendite per mese e città.
sum_sales_city_month=dati %>%
  group_by(month,city) %>%
  summarise(total_sales = sum(sales))
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by month and city.
## ℹ Output is grouped by month.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(month, city))` for per-operation grouping
##   (`?dplyr::dplyr_by`) instead.
ggplot(sum_sales_city_month,aes(x=factor(month),y=total_sales,fill=city))+
  geom_bar(stat = "identity", position="dodge")+
  labs(
    title = "Vendite totali per mese e città",
    x = "mese",
    y = "somma delle vendite",
  ) +
  theme_minimal()+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Il grafico mostra la somma delle vendite per mese e città.
# In tutte le città si conferma la stagionalità estiva, con il picco tra maggio e luglio
# e i valori minimi nei mesi invernali. Tyler domina in quasi tutti i mesi,
# seguita da Bryan-College Station, mentre Wichita Falls rimane costantemente la più bassa.

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

ggplot(dati, aes(x =month, y = sales, color = factor(year))) +
  geom_line(size = 1) +
  facet_wrap(~city)+ #creo grafici separati per vedere l'andamento nel tempo di ogni città
  scale_x_continuous(
    breaks = 1:12)+
  labs(
    title = "Andamento delle vendite nel tempo per città e anno",
    x = "Mese",
    y = "Numero di vendite",
    color = "Anno"
  ) +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

  # Il grafico mostra l'andamento mensile delle vendite per città e anno.
  # In tutte le città si conferma la stagionalità estiva con picco tra maggio e luglio.
  # Il 2014 (rosa) tende ad essere l'anno con i valori più alti, mentre il 2010-2011
  # mostrano i valori più bassi, confermando il trend crescente già osservato in precedenza.
  # Wichita Falls rimane la città con i volumi più contenuti e stabili nel tempo.
#STEP 9, COMMENTO FINALE
# CONCLUSIONI

# L’analisi del dataset ha evidenziato diverse caratteristiche rilevanti del mercato immobiliare in Texas.

# In primo luogo, emerge una forte eterogeneità tra le città considerate: alcune, come Tyler e Bryan-College Station,
# presentano livelli più elevati sia in termini di numero di vendite che di valore economico delle transazioni,
# mentre altre, come Wichita Falls, mostrano valori più contenuti e una maggiore stabilità nel tempo.

# Dal punto di vista temporale, si osserva un trend crescente delle vendite nel periodo analizzato (2010–2014),
# che suggerisce una fase di espansione del mercato immobiliare. Inoltre, è evidente una componente stagionale:
# le vendite tendono ad aumentare nei mesi primaverili ed estivi e a diminuire nei mesi invernali.

# L’analisi della variabilità e dell’asimmetria ha evidenziato come la variabile volume sia la più instabile e
# caratterizzata da valori estremi, indicando forti differenze nel valore economico delle vendite tra città e periodi.
# Al contrario, il prezzo mediano degli immobili risulta relativamente stabile, con una distribuzione più simmetrica.

# Le nuove variabili introdotte hanno fornito ulteriori insight: il prezzo medio degli immobili conferma i livelli osservati
# nella distribuzione dei prezzi, mentre l’efficacia degli annunci evidenzia che solo una parte delle inserzioni si traduce
# effettivamente in vendite, suggerendo possibili margini di miglioramento nelle strategie di marketing.

# Dal punto di vista operativo, i risultati suggeriscono che l’azienda dovrebbe:
# - focalizzarsi maggiormente sulle città con maggiore crescita e volume di vendite;
# - sfruttare la stagionalità del mercato per pianificare le strategie commerciali nei periodi più favorevoli;
# - migliorare l’efficacia degli annunci, ottimizzando la gestione delle inserzioni immobiliari.

# In conclusione, l’analisi conferma la presenza di differenze strutturali tra le città e dinamiche temporali rilevanti,
# fornendo una base informativa utile per supportare decisioni strategiche nel mercato immobiliare.