#Importo il CSV
dati <- read.csv("realestate_texas.csv", sep = ",", fileEncoding = "ISO-8859-1")
# Funzione per il caloclo della moda:
calculate_mode = function(x) {
freq <- table(x)
mode <- names(freq[freq == max(freq)])
return(mode)
}
# Funzione per il calcolo dell'indice di Gini
gini.index = function(x){
ni= table(x)
fi= table(x)/length(x)
fi2 = fi^2
J = length(table(x))
gini = 1-sum(fi2)
gini.normalizzato = gini/((J-1)/J)
return(gini.normalizzato)
}
cat("
# Variabile Tipo Descrizione
# ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# city Categoriale nominale Nome della città di riferimento per i dati sulle vendite immobiliari.
# year Categoriale nominale Anno in cui sono stati registrati i dati.
# month Categoriale nominale Mese in cui sono stati registrati i dati.
# sales Quantitativa discreta Numero totale di vendite immobiliari registrate.
# volume Quantitativa continua Valore totale delle vendite, espresso in milioni di dollari.
# median_price Quantitativa continua Prezzo mediano di vendita degli immobili, espresso in dollari.
# listings Quantitativa discreta Numero totale di annunci immobiliari attivi.
# months_inventory Quantitativa continua Quantità di tempo necessaria per vendere tutte le inserzioni attuali, espressa in mesi.
# ====================================================================================================================================================================================================
#Gestione delle variabili temporali:
#Le variabili year e month forniscono un contesto temporale utile per valutare variazioni temporali, trend e andamenti ciclici delle altre variabili. Potrebbe essere utile combinarle insieme e ottenere un unica variabile data.
# Commento sul tipo di analisi che può essere condotta su ciascuna variabile:
# - VARIABILI CATEGORIALI (city, month year):
# Nonosotante esplorando il dataset sia facilmente constatabile che queste variabili sono omogeneamente distribuite, vale la pena verificare il numero di osservazioni con il calcolo delle frequenze.
# Queste variabili possono essere usate per ragruppare e definire i range temporale delle analisi per le altre variabili.
# - VARIABILI QUANTITATIVE (sales, volume, median_price, listings, months_inventory):
# Queste variabili possono essere usate per calcolare:
# 1. Statistiche descrittive come indici di posizione, variabilità e di forma
# 2. Fare confronti combinandole con le variabili categoriali per verificare trend e stagionalità su specifici raggruppamenti
# 3. Correlazioni con altre variabili quantitative e rapporti per creare nuove variabili.
")
##
##
##
##
## # Variabile Tipo Descrizione
## # ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
## # city Categoriale nominale Nome della città di riferimento per i dati sulle vendite immobiliari.
## # year Categoriale nominale Anno in cui sono stati registrati i dati.
## # month Categoriale nominale Mese in cui sono stati registrati i dati.
## # sales Quantitativa discreta Numero totale di vendite immobiliari registrate.
## # volume Quantitativa continua Valore totale delle vendite, espresso in milioni di dollari.
## # median_price Quantitativa continua Prezzo mediano di vendita degli immobili, espresso in dollari.
## # listings Quantitativa discreta Numero totale di annunci immobiliari attivi.
## # months_inventory Quantitativa continua Quantità di tempo necessaria per vendere tutte le inserzioni attuali, espressa in mesi.
## # ====================================================================================================================================================================================================
##
## #Gestione delle variabili temporali:
##
## #Le variabili year e month forniscono un contesto temporale utile per valutare variazioni temporali, trend e andamenti ciclici delle altre variabili. Potrebbe essere utile combinarle insieme e ottenere un unica variabile data.
##
## # Commento sul tipo di analisi che può essere condotta su ciascuna variabile:
##
## # - VARIABILI CATEGORIALI (city, month year):
## # Nonosotante esplorando il dataset sia facilmente constatabile che queste variabili sono omogeneamente distribuite, vale la pena verificare il numero di osservazioni con il calcolo delle frequenze.
## # Queste variabili possono essere usate per ragruppare e definire i range temporale delle analisi per le altre variabili.
##
##
## # - VARIABILI QUANTITATIVE (sales, volume, median_price, listings, months_inventory):
## # Queste variabili possono essere usate per calcolare:
##
## # 1. Statistiche descrittive come indici di posizione, variabilità e di forma
## # 2. Fare confronti combinandole con le variabili categoriali per verificare trend e stagionalità su specifici raggruppamenti
## # 3. Correlazioni con altre variabili quantitative e rapporti per creare nuove variabili.
##
##
# Le distribuzioni di frequenza calcolate di seguito sulle variabili city, year, month confermano che sono variabili uniformi e non introducono distorsioni dovuti a mancanza di dati (stesso numero di osservazioni per ogni città, mese e anno nel range temporale 2010 - 2014).
# Distribuzione di freqeunza per city:
dist_freq_city = as.data.frame(
cbind(
ni = table(dati$city),
fi = table(dati$city) / sum(table(dati$city)),
Ni = cumsum(table(dati$city)),
Fi = cumsum(table(dati$city) / sum(table(dati$city)))
)
)
# Distribuzione di freqeunza per year:
dist_freq_year = as.data.frame(
cbind(
ni = table(dati$year),
fi = table(dati$year) / sum(table(dati$city)),
Ni = cumsum(table(dati$year)),
Fi = cumsum(table(dati$year) / sum(table(dati$year)))
)
)
# Distribuzione di freqeunza per month:
dist_freq_month = as.data.frame(
cbind(
ni = table(dati$month),
fi = table(dati$month) / sum(table(dati$city)),
Ni = cumsum(table(dati$month)),
Fi = cumsum(table(dati$month) / sum(table(dati$month)))
)
)
# Distribuzione di freqeunza per sales:
dist_freq_sales = as.data.frame(
cbind(
ni = table(dati$sales),
fi = table(dati$sales) / sum(table(dati$sales)),
Ni = cumsum(table(dati$sales)),
Fi = cumsum(table(dati$sales) / sum(table(dati$sales)))
)
)
# ANALISI DELLA VARIABILE sales:
me_sales = median(dati$sales)
mu_sales = mean(dati$sales)
mode_sales = calculate_mode(dati$sales)
min_sales = min(dati$sales)
max_sales = max(dati$sales)
range_sales = max_sales - min_sales
q_sales = quantile(dati$sales)
IQR_sales = IQR(dati$sales)
sd_sales = sd(dati$sales)
sd2_sales = sd_sales^2
CV_sales = sd_sales/mu_sales*100
#grafico della distribuzione di sales in ggplot2
ggplot(data = dati, aes(x = sales)) +
geom_density(fill = "lightblue", color = "black", alpha = 0.7) +
labs(title = "Distribuzione della variabile Sales",
x = "Sales (numero totale di vendite)",
y = "Densità") +
theme_minimal()
# Caloclo gli indici di asimmetria e curtosi per sales
skewness_sales = skewness(dati$sales)
kurtosis_sales = kurtosis(dati$sales) - 3
# Riassunto degli indici per la variabile sales:
sales_summary = data.frame(
Minimum = min_sales,
Maximum = max_sales,
Range = range_sales,
Mean = mu_sales,
Median = me_sales,
Mode = mode_sales,
Variance = sd2_sales,
Standard_Deviation = sd_sales,
Coefficient_of_Variation = CV_sales,
Interquartile_Range = IQR_sales,
Skewness = skewness_sales,
Kurtosis = kurtosis_sales
)
print(sales_summary)
## Minimum Maximum Range Mean Median Mode Variance Standard_Deviation
## 1 79 423 344 192.2917 175.5 124 6344.3 79.65111
## Coefficient_of_Variation Interquartile_Range Skewness Kurtosis
## 1 41.42203 120 0.718104 -0.3131764
cat("
#Considerazioni per sales:
# ----------------------------------------
# Index Value
# ----------------------------------------
# Minimum 79
# Maximum 423
# Range 344
# Mean 192.2917
# Median 175.5
# Mode 124
# Variance 6344.3
# Standard Deviation 79.65111
# Coefficient of Variation 41.42203
# Interquartile Range 120
# Skewness 0.718104
# Kurtosis -0.3131764
# ----------------------------------------
# Distribuzione asimmetrica positiva
# Distribuzione platicurtica
")
##
## #Considerazioni per sales:
## # ----------------------------------------
## # Index Value
## # ----------------------------------------
## # Minimum 79
## # Maximum 423
## # Range 344
## # Mean 192.2917
## # Median 175.5
## # Mode 124
## # Variance 6344.3
## # Standard Deviation 79.65111
## # Coefficient of Variation 41.42203
## # Interquartile Range 120
## # Skewness 0.718104
## # Kurtosis -0.3131764
## # ----------------------------------------
## # Distribuzione asimmetrica positiva
## # Distribuzione platicurtica
# ANALISI DELLA VARIABILE volume:
me_volume = median(dati$volume)
mu_volume = mean(dati$volume)
mode_volume = calculate_mode(dati$volume)
min_volume = min(dati$volume)
max_volume = max(dati$volume)
range_volume = max_volume - min_volume
q_volume = quantile(dati$volume)
IQR_volume = IQR(dati$volume)
sd_volume = sd(dati$volume)
sd2_volume = sd_volume^2
CV_volume = sd_volume/mu_volume*100
#grafico della distribuzione di volume in ggplot2
ggplot(data = dati, aes(x = volume)) +
geom_density(fill = "lightblue", color = "black", alpha = 0.7) +
labs(title = "Distribuzione della variabile Volume",
x = "Volume (in milioni di dollari)",
y = "Densità") +
theme_minimal()
# Caloclo gli indici di asimmetria e curtosi per volume
skewness_volume = skewness(dati$volume)
kurtosis_volume = kurtosis(dati$volume) - 3
# Riassunto con gli indici per la variabile volume:
volume_summary = data.frame(
Minimum = min_volume,
Maximum = max_volume,
Range = range_volume,
Mean = mu_volume,
Median = me_volume,
Mode = mode_volume,
Variance = sd2_volume,
Standard_Deviation = sd_volume,
Coefficient_of_Variation = CV_volume,
Interquartile_Range = IQR_volume,
Skewness = skewness_volume,
Kurtosis = kurtosis_volume
)
print(volume_summary)
## Minimum Maximum Range Mean Median Mode Variance Standard_Deviation
## 1 8.166 83.547 75.381 31.00519 27.0625 14.003 277.2707 16.65145
## 2 8.166 83.547 75.381 31.00519 27.0625 35.335 277.2707 16.65145
## 3 8.166 83.547 75.381 31.00519 27.0625 42.553 277.2707 16.65145
## Coefficient_of_Variation Interquartile_Range Skewness Kurtosis
## 1 53.70536 23.2335 0.884742 0.176987
## 2 53.70536 23.2335 0.884742 0.176987
## 3 53.70536 23.2335 0.884742 0.176987
cat("
#Considerazioni per volume
# ----------------------------------------
# Index Value
# ----------------------------------------
# Minimum 8.166
# Maximum 83.547
# Range 75.381
# Mean 31.00519
# Median 27.0625
# Mode 1 14.003
# Mode 2 35.335
# Mode 3 42.553
# Variance 277.2707
# Standard Deviation 16.65145
# Coefficient of Variation 53.70536
# Interquartile Range 23.2335
# Skewness 0.884742
# Kurtosis 0.176987
# ----------------------------------------
# Distribuzione assimetrica positiva
# Distribuzione leptocurtica
")
##
##
## #Considerazioni per volume
## # ----------------------------------------
## # Index Value
## # ----------------------------------------
## # Minimum 8.166
## # Maximum 83.547
## # Range 75.381
## # Mean 31.00519
## # Median 27.0625
## # Mode 1 14.003
## # Mode 2 35.335
## # Mode 3 42.553
## # Variance 277.2707
## # Standard Deviation 16.65145
## # Coefficient of Variation 53.70536
## # Interquartile Range 23.2335
## # Skewness 0.884742
## # Kurtosis 0.176987
## # ----------------------------------------
## # Distribuzione assimetrica positiva
## # Distribuzione leptocurtica
##
##
##
##
##
# ANALISI DELLA VARIABILE median_price:
me_median_price = median(dati$median_price)
mu_median_price = mean(dati$median_price)
mode_median_price = calculate_mode(dati$median_price)
min_median_price = min(dati$median_price)
max_median_price = max(dati$median_price)
range_median_price = max_median_price - min_median_price
q_median_price = quantile(dati$median_price)
IQR_median_price = IQR(dati$median_price)
sd_median_price = sd(dati$median_price)
sd2_median_price = sd_median_price^2
CV_median_price = sd_median_price/mu_median_price*100
#Grafico della distribuzione di median_price in ggplot2
ggplot(data = dati, aes(x = median_price)) +
geom_density(fill = "lightblue", color = "black", alpha = 0.7) +
labs(title = "Distribuzione della variabile Median Price",
x = "Median Price (in dollari)",
y = "Densità") +
theme_minimal()
# Caloclo gli indici di asimmetria e curtosi per median_price
skewness_median_price = skewness(dati$median_price)
kurtosis_median_price = kurtosis(dati$median_price) - 3
# Riassunto con gli indici per la variabile median_price:
median_price_summary = data.frame(
Minimum = min_median_price,
Maximum = max_median_price,
Range = range_median_price,
Mean = mu_median_price,
Median = me_median_price,
Mode = mode_median_price,
Variance = sd2_median_price,
Standard_Deviation = sd_median_price,
Coefficient_of_Variation = CV_median_price,
Interquartile_Range = IQR_median_price,
Skewness = skewness_median_price,
Kurtosis = kurtosis_median_price
)
print(median_price_summary)
## Minimum Maximum Range Mean Median Mode Variance Standard_Deviation
## 1 73800 180000 106200 132665.4 134500 130000 513572983 22662.15
## Coefficient_of_Variation Interquartile_Range Skewness Kurtosis
## 1 17.08218 32750 -0.3645529 -0.6229618
cat("
# Considerazioni per median price
## ----------------------------------------
# Indice Valore
# ----------------------------------------
# Minimum 73800
# Maximum 180000
# Range 106200
# Mean 132665.4
# Median 134500
# Mode 130000
# Variance 513572983
# Standard Deviation 22662.15
# Coefficient of Variation 17.08218
# Interquartile Range 32750
# Skewness -0.3645529
# Kurtosis -0.6229618
# ----------------------------------------
# Distribuzione assimmetrica negativa
# Distribuzione platicurtica
")
##
##
## # Considerazioni per median price
## ## ----------------------------------------
## # Indice Valore
## # ----------------------------------------
## # Minimum 73800
## # Maximum 180000
## # Range 106200
## # Mean 132665.4
## # Median 134500
## # Mode 130000
## # Variance 513572983
## # Standard Deviation 22662.15
## # Coefficient of Variation 17.08218
## # Interquartile Range 32750
## # Skewness -0.3645529
## # Kurtosis -0.6229618
## # ----------------------------------------
## # Distribuzione assimmetrica negativa
## # Distribuzione platicurtica
# ANALISI DELLA VARIABILE listings:
me_listings = median(dati$listings)
mu_listings = mean(dati$listings)
mode_listings = calculate_mode(dati$listings)
min_listings = min(dati$listings)
max_listings = max(dati$listings)
range_listings = max_listings - min_listings
q_listings = quantile(dati$listings)
IQR_listings = IQR(dati$listings)
sd_listings = sd(dati$listings)
sd2_listings = sd_listings^2
CV_listings = sd_listings/mu_listings*100
#grafico della distribuzione di listings in ggplot2
ggplot(data = dati, aes(x = listings)) +
geom_density(fill = "lightblue", color = "black", alpha = 0.7) +
labs(title = "Distribuzione della variabile Listings",
x = "Listings (numero totale di annunci attivi)",
y = "Densità") +
theme_minimal()
# Caloclo gli indici di asimmetria e curtosi per listings
skewness_listings = skewness(dati$listings)
kurtosis_listings = kurtosis(dati$listings) - 3
# Riassunto degli indici per la variabile listings:
listings_summary = data.frame(
Minimum = min_listings,
Maximum = max_listings,
Range = range_listings,
Mean = mu_listings,
Median = me_listings,
Mode = mode_listings,
Variance = sd2_listings,
Standard_Deviation = sd_listings,
Coefficient_of_Variation = CV_listings,
Interquartile_Range = IQR_listings,
Skewness = skewness_listings,
Kurtosis = kurtosis_listings
)
print(listings_summary)
## Minimum Maximum Range Mean Median Mode Variance Standard_Deviation
## 1 743 3296 2553 1738.021 1618.5 1581 566569 752.7078
## Coefficient_of_Variation Interquartile_Range Skewness Kurtosis
## 1 43.30833 1029.5 0.6494982 -0.79179
cat("
#Considerazioni su listings_summary
# ----------------------------------------
# Indice Valore
# ----------------------------------------
# Minimum: 743
# Maximum: 3296
# Range: 2553
# Mean: 1738.021
# Median: 1618.5
# Mode: 1581
# Variance: 566569
# Standard Deviation: 752.7078
# Coefficient of Variation: 43.30833
# Interquartile Range: 1029.5
# Skewness: 0.6494982
# Kurtosis: -0.79179
# ---------------------------------------
# Distribuzione assimmetrica positiva, media > mediana > moda.
# Distribuzione platicurtica
")
##
##
## #Considerazioni su listings_summary
##
## # ----------------------------------------
## # Indice Valore
## # ----------------------------------------
## # Minimum: 743
## # Maximum: 3296
## # Range: 2553
## # Mean: 1738.021
## # Median: 1618.5
## # Mode: 1581
## # Variance: 566569
## # Standard Deviation: 752.7078
## # Coefficient of Variation: 43.30833
## # Interquartile Range: 1029.5
## # Skewness: 0.6494982
## # Kurtosis: -0.79179
## # ---------------------------------------
## # Distribuzione assimmetrica positiva, media > mediana > moda.
## # Distribuzione platicurtica
##
##
##
# ANALISI DELLA VARIABILE months_inventory:
me_months_inventory = median(dati$months_inventory)
mu_months_inventory = mean(dati$months_inventory)
mode_months_inventory = calculate_mode(dati$months_inventory)
min_months_inventory = min(dati$months_inventory)
max_months_inventory = max(dati$months_inventory)
range_months_inventory = max_months_inventory - min_months_inventory
q_months_inventory = quantile(dati$months_inventory)
IQR_months_inventory = IQR(dati$months_inventory)
sd_months_inventory = sd(dati$months_inventory)
sd2_months_inventory = sd_months_inventory^2
CV_months_inventory = sd_months_inventory/mu_months_inventory*100
#grafico della distribuzione di months_inventory in ggplot2
ggplot(data = dati, aes(x = months_inventory)) +
geom_density(fill = "lightblue", color = "black", alpha = 0.7) +
labs(title = "Distribuzione della variabile Months Inventory",
x = "Months Inventory in mesi(tempo necessario per vendere tutte le inserzioni)",
y = "Densità") +
theme_minimal()
# Caloclo gli indici di asimmetria e curtosi per months_inventory
skewness_months_inventory = skewness(dati$months_inventory)
kurtosis_months_inventory = kurtosis(dati$months_inventory) - 3
# Riassunto degli indici per la variabile months_inventory:
months_inventory_summary = data.frame(
Minimum = min_months_inventory,
Maximum = max_months_inventory,
Range = range_months_inventory,
Mean = mu_months_inventory,
Median = me_months_inventory,
Mode = mode_months_inventory,
Variance = sd2_months_inventory,
Standard_Deviation = sd_months_inventory,
Coefficient_of_Variation = CV_months_inventory,
Interquartile_Range = IQR_months_inventory,
Skewness = skewness_months_inventory,
Kurtosis = kurtosis_months_inventory
)
print(months_inventory_summary)
## Minimum Maximum Range Mean Median Mode Variance Standard_Deviation
## 1 3.4 14.9 11.5 9.1925 8.95 8.1 5.306889 2.303669
## Coefficient_of_Variation Interquartile_Range Skewness Kurtosis
## 1 25.06031 3.15 0.04097527 -0.1744475
cat("
#Considerazioni su months_inventory
# ----------------------------------------
# Indice Valore
# ------------------------------------
# Minimum 3.4
# Maximum 14.9
# Range 11.5
# Mean 9.1925
# Median 8.95
# Mode 8.1
# Variance 5.306889
# Standard Deviation 2.303669
# Coefficient of Variation 25.06031
# Interquartile Range 3.15
# Skewness 0.04097527
# Kurtosis -0.1744475
# ----------------------------------------
# Distribuzione leggermente assimmetrica positiva, media > mediana > moda.
# Distribuzione platicurtica
")
##
##
## #Considerazioni su months_inventory
## # ----------------------------------------
## # Indice Valore
## # ------------------------------------
## # Minimum 3.4
## # Maximum 14.9
## # Range 11.5
## # Mean 9.1925
## # Median 8.95
## # Mode 8.1
## # Variance 5.306889
## # Standard Deviation 2.303669
## # Coefficient of Variation 25.06031
## # Interquartile Range 3.15
## # Skewness 0.04097527
## # Kurtosis -0.1744475
## # ----------------------------------------
## # Distribuzione leggermente assimmetrica positiva, media > mediana > moda.
## # Distribuzione platicurtica
##
##
##
cat("
#Variabilità: volume, con il suo coefficiente di variazione del 53.71%, sembra essere la variabile con la maggiore variabilità e maggior dispersione dei dati.
#Il coefficiente di variazione, che misura la variabilità riscalata per la media, è un numero puro senza unità di misura, ed è quindi l'indice più indicato per confronti di variabilità per variabili misurate su scale diverse.
#Assimetria: con il caloclo della Skewness pari a 0.88, volume sembra essere anche la variabile che possiede la maggiore assimmetria.
")
##
##
## #Variabilità: volume, con il suo coefficiente di variazione del 53.71%, sembra essere la variabile con la maggiore variabilità e maggior dispersione dei dati.
##
## #Il coefficiente di variazione, che misura la variabilità riscalata per la media, è un numero puro senza unità di misura, ed è quindi l'indice più indicato per confronti di variabilità per variabili misurate su scale diverse.
##
##
## #Assimetria: con il caloclo della Skewness pari a 0.88, volume sembra essere anche la variabile che possiede la maggiore assimmetria.
##
##
##
dati$sales_CL = cut(dati$sales,
breaks = c(79, 165, 251, 337, max(dati$sales)),
include.lowest = TRUE)
# Tabella delle frequenze
ni = table(dati$sales_CL)
fi = ni / sum(ni)
Ni = cumsum(ni)
Fi = Ni / sum(ni)
# Tabella riassuntiva
dist_freq_sales_CL = as.data.frame(cbind(ni, fi, Ni, Fi))
median(dati$sales)
## [1] 175.5
mean(dati$sales)
## [1] 192.2917
# Grafico a barre che mostra la distribuzione di sales divisa in classi
barplot(dist_freq_sales_CL$ni,
main = "Distribuzione delle vendite (sales)",
xlab = "Classi di vendite",
ylab = "Frequenze assolute",
col = "skyblue",
names.arg = rownames(dist_freq_sales_CL),
ylim = c(0, max(dist_freq_sales_CL$ni) * 1.2),
las = 1,
border = "black")
# Coefficiente di Gini (funzione creata nella sezione dedicata ad inizio progetto)
table(dati$sales_CL)
##
## [79,165] (165,251] (251,337] (337,423]
## 110 71 45 14
gini_sales_CL = gini.index(dati$sales_CL)
print(gini_sales_CL)
## [1] 0.8851389
cat("
# L'indice di gini riscalato varia tra 0 (tutte le unità concentrate in una unica modalità) e 1 (unità equamente distribuite tra le modalità).
# Per quanto riguarda la variabile sales suddivisa in classi, l'indice di gini misurato possiede un valore di eterogenità intermedio pari a 0.885.
")
##
##
## # L'indice di gini riscalato varia tra 0 (tutte le unità concentrate in una unica modalità) e 1 (unità equamente distribuite tra le modalità).
##
## # Per quanto riguarda la variabile sales suddivisa in classi, l'indice di gini misurato possiede un valore di eterogenità intermedio pari a 0.885.
##
##
##
cat("
# 1. La probabilità che, presa una riga a caso del dataset, essa riporti la città “Beaumont”:
# Essendo il dataset omogeneamente distribuito fra le città, è pari a 1 diviso il numero di città, ovvero di 1/4 = 0.25 quindi il 25%
# 2. La probabilità che, presa una riga a caso del dataset, essa riporti il mese di Luglio:
# La probabilià risulta pari al numero di occorrenze del mese di luglio nei 5 anni, moltiplicato per le rispettive 4 città, tutto diviso il numero di osservazioni, ovvero di 20/240 = 0.083 quindi il 8.3% 3
# 3.La probabilità che, presa una riga a caso del dataset, essa riporti il mese di dicembre 2012:
# La probabilità è risulta pari alla singola occorrenza del mese di dicembre dell'anno 2012, moltiplicato per le rispettive 4 città del dataset, ovvero 4/240 = 0.0167 quindi il 1.67%
")
##
##
## # 1. La probabilità che, presa una riga a caso del dataset, essa riporti la città “Beaumont”:
## # Essendo il dataset omogeneamente distribuito fra le città, è pari a 1 diviso il numero di città, ovvero di 1/4 = 0.25 quindi il 25%
##
## # 2. La probabilità che, presa una riga a caso del dataset, essa riporti il mese di Luglio:
## # La probabilià risulta pari al numero di occorrenze del mese di luglio nei 5 anni, moltiplicato per le rispettive 4 città, tutto diviso il numero di osservazioni, ovvero di 20/240 = 0.083 quindi il 8.3% 3
##
## # 3.La probabilità che, presa una riga a caso del dataset, essa riporti il mese di dicembre 2012:
## # La probabilità è risulta pari alla singola occorrenza del mese di dicembre dell'anno 2012, moltiplicato per le rispettive 4 città del dataset, ovvero 4/240 = 0.0167 quindi il 1.67%
##
##
##
##
# Creazione di una nuova colonna che calcola il prezzo medio della vendita
dati$average_price = round((dati$volume * 10^6) / dati$sales)
# Grafico che mostra l'andamento del prezzo medio per mesi, anni e città
ggplot(dati, aes(x = factor(month), y = average_price, color = city, group = city)) +
geom_line(linewidth = 1) +
geom_point(size = 3) +
facet_wrap(~ year, scales = "free", strip.position = "top") +
labs(
title = "Prezzo medio per Città e Anno",
x = "Mese",
y = "Prezzo medio ($)"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
strip.text = element_text(size = 12, face = "bold"),
panel.spacing = unit(1, "lines")
) +
scale_color_brewer(palette = "Set3")
cat("
# Creazione di 2 colonne che cercano di misurare l’efficacia degli annunci di vendita (AdClosureRate e ListingSuccessRate):
#Premessa sulla definizione di efficacia:
#Bisogna innanzitutto definire cosa si intende per efficacia di un annuncio, in quanto un annuncio potrebbe essere considerato efficace se:
# 1. vende velocemente (alta velocità di chiusura dell'inserzione).
# 2. chiude una vendita ad un prezzo elevato.
# 3. Attrae un pubblico mirato (nel dataset non possediamo elementi per valutare questa variabile).
#Inoltre l'efficacia degli annunci può essere influenzata da fattori esterni il cui contributo è difficilmente eliminabile:
# la velocità di vendita e il prezzo sono influenzati da molti fattori oltre la qualità dell'annuncio stesso, come la domanda del mercato, la stagionalità, le condizioni economiche generali, ecc.
")
##
##
## # Creazione di 2 colonne che cercano di misurare l’efficacia degli annunci di vendita (AdClosureRate e ListingSuccessRate):
##
## #Premessa sulla definizione di efficacia:
##
## #Bisogna innanzitutto definire cosa si intende per efficacia di un annuncio, in quanto un annuncio potrebbe essere considerato efficace se:
##
## # 1. vende velocemente (alta velocità di chiusura dell'inserzione).
##
## # 2. chiude una vendita ad un prezzo elevato.
##
## # 3. Attrae un pubblico mirato (nel dataset non possediamo elementi per valutare questa variabile).
##
## #Inoltre l'efficacia degli annunci può essere influenzata da fattori esterni il cui contributo è difficilmente eliminabile:
## # la velocità di vendita e il prezzo sono influenzati da molti fattori oltre la qualità dell'annuncio stesso, come la domanda del mercato, la stagionalità, le condizioni economiche generali, ecc.
##
##
##
##
##
dati$AdClosureRate = (dati$listings / dati$months_inventory)
cat("
#AdClosureRate indica la velocità media con cui gli annunci vengono chiusi(venduti).
# da solo questo indice non riesce a misurare la qualità dell'annuncio, infatti una maggior velocità potrebbe essere dovuta totalmente o in parte ad un mercato più caldo, tuttavia la qualità media degli annunci potrebbe essere correlata o addirittura influenzare positivamente il rate medio di chiusura di quest'ultimi.
")
##
##
## #AdClosureRate indica la velocità media con cui gli annunci vengono chiusi(venduti).
## # da solo questo indice non riesce a misurare la qualità dell'annuncio, infatti una maggior velocità potrebbe essere dovuta totalmente o in parte ad un mercato più caldo, tuttavia la qualità media degli annunci potrebbe essere correlata o addirittura influenzare positivamente il rate medio di chiusura di quest'ultimi.
##
##
##
ggplot(dati, aes(x = factor(month), y = AdClosureRate, color = city, group = city)) +
geom_line(size = 1) +
geom_point(size = 3) +
facet_wrap(~ year, scales = "fixed", strip.position = "top") +
labs(
title = "Advertising Closure Rate per Città e Anno",
x = "Mese",
y = "Advertising Closure Rate"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
strip.text = element_text(size = 12, face = "bold"),
panel.spacing = unit(1, "lines")
) +
scale_color_brewer(palette = "Set3")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
cat("
#Considerazioni sul grafico:
# Anno 2010 a parte, la velocità di chiusura degli annunci risulta più marcata nel secondo semestre.
# Tyler è la città con un AdClosureRate maggiore, mentre Wichita Falls possiede un rate sensibilmente più basso e soprattutto costante o addirittura decrescete.
")
##
##
## #Considerazioni sul grafico:
## # Anno 2010 a parte, la velocità di chiusura degli annunci risulta più marcata nel secondo semestre.
## # Tyler è la città con un AdClosureRate maggiore, mentre Wichita Falls possiede un rate sensibilmente più basso e soprattutto costante o addirittura decrescete.
##
##
##
# Creazione di una colonna che misuri ListingSuccessRate (efficacia degli annunci):
dati$ListingSuccessRate = (dati$sales / dati$listings)
#Grafico dell'andamento di Listing Success rate per mese anno e città
ggplot(dati, aes(x = factor(month), y = ListingSuccessRate, color = city, group = city)) +
geom_line(size = 1) + # Linea che collega i punti
geom_point(size = 3) + # Aggiunge i punti per ogni valore
facet_wrap(~ year, scales = "fixed", strip.position = "top") +
labs(
title = "Listing Success Rate per Città e Anno",
x = "Mese",
y = "Listing Success Rate (%)"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
strip.text = element_text(size = 12, face = "bold"),
panel.spacing = unit(1, "lines")
) +
scale_color_brewer(palette = "Set3")+
scale_y_continuous(labels = scales::percent)
cat("
# Considerazioni:
# Bryan-College Station presenta il Listing Success rate migliore, con un trend molto positivo che raggiunge il 30% e il 40% rispettivamente nel 2013 2014.
# Possiamo notare come anche questo grafico sia figlio di sales e quindi possieda le medesime caratteristiche di stagionalità e il generale trend positivo negli anni
# Si evidenzia che Wichita Falls, nonostante abbia un minor nummero di vendite (dovuto probabilmente ad una domanda più depressa), comparato alle città di Tyler e Beaumont possieda comunque un Listing Success rate mediamente migliore.
# Questa evidenza potrebbe suggerire una qualità degli annunci di Wichita Falls migliore nonostante il suo mercato sembri più depresso.
")
##
##
## # Considerazioni:
## # Bryan-College Station presenta il Listing Success rate migliore, con un trend molto positivo che raggiunge il 30% e il 40% rispettivamente nel 2013 2014.
## # Possiamo notare come anche questo grafico sia figlio di sales e quindi possieda le medesime caratteristiche di stagionalità e il generale trend positivo negli anni
## # Si evidenzia che Wichita Falls, nonostante abbia un minor nummero di vendite (dovuto probabilmente ad una domanda più depressa), comparato alle città di Tyler e Beaumont possieda comunque un Listing Success rate mediamente migliore.
## # Questa evidenza potrebbe suggerire una qualità degli annunci di Wichita Falls migliore nonostante il suo mercato sembri più depresso.
##
##
##
#Grafico che mostra la relazione fra ListingSuccessRate e average_price
ggplot(dati, aes(x = ListingSuccessRate, y = average_price, fill = city)) +
geom_point(shape = 21, color = "black", size = 4, stroke = 1) + # Contorno nero
geom_smooth(method = "lm", se = FALSE, linetype = "dashed", color = "black") + # Linea di tendenza nera
labs(
title = "Relazione fra prezzo medio delle vendite e rate di successo degli annunci",
x = "Rate di successo della chiusura di annunci (%)",
y = "Prezzo medio ($)"
) +
theme_minimal() +
scale_fill_brewer(palette = "Set3") +
scale_color_brewer(palette = "Set3") +
scale_x_continuous(labels = scales::percent)
## `geom_smooth()` using formula = 'y ~ x'
cat("
# Considerazioni sul grafico:
# Il grafico mirava ad indagare una relazione che potesse legare la qualità degli annunci al prezzo di vendita. L'idea era che le agenzie, spinte dalla ricerca di un maggior profitto, mettessero più effort nella preparazione di annunci a maggior qualità per vendere le proprietà più costose.
# Il grafico mostra una correlazione positiva tra prezzo medio e rate di successo degli annunci, che sembra molto simile per le città di Wichita Falls, Beaumont, Bryan-College Station.
# Ciò significa che mediamente un tasso di successo più alto è accompagnato da un prezzo medio più elevato.
# Per Tyler la relazione positiva tra le variabili sembra essere più forte.
# Bryan-College Station: Mostra i prezzi medi più alti e un range più ampio nel tasso di successo.
# Le altre città mostrano una minor variabilità dei prezzi e un rate di successo degli annunci comparabile, in particolare come detto sopra, Wichita Falls nonostnte i prezzi più bassi possiede un rate di successo migliore di Beaumont e Tyler.
#È importante ricordare che il grafico mostra una correlazione, non necessariamente una causalità.
# Pertanto non mi sento di affermare che un tasso di successo più alto sia causato da prezzi più alti, e soprattutto che sia determinato da una maggior qualità di annunci.
")
##
##
## # Considerazioni sul grafico:
##
## # Il grafico mirava ad indagare una relazione che potesse legare la qualità degli annunci al prezzo di vendita. L'idea era che le agenzie, spinte dalla ricerca di un maggior profitto, mettessero più effort nella preparazione di annunci a maggior qualità per vendere le proprietà più costose.
## # Il grafico mostra una correlazione positiva tra prezzo medio e rate di successo degli annunci, che sembra molto simile per le città di Wichita Falls, Beaumont, Bryan-College Station.
## # Ciò significa che mediamente un tasso di successo più alto è accompagnato da un prezzo medio più elevato.
## # Per Tyler la relazione positiva tra le variabili sembra essere più forte.
##
## # Bryan-College Station: Mostra i prezzi medi più alti e un range più ampio nel tasso di successo.
## # Le altre città mostrano una minor variabilità dei prezzi e un rate di successo degli annunci comparabile, in particolare come detto sopra, Wichita Falls nonostnte i prezzi più bassi possiede un rate di successo migliore di Beaumont e Tyler.
##
## #È importante ricordare che il grafico mostra una correlazione, non necessariamente una causalità.
## # Pertanto non mi sento di affermare che un tasso di successo più alto sia causato da prezzi più alti, e soprattutto che sia determinato da una maggior qualità di annunci.
##
##
##
# Raggruppa i dati per città e anno e calcola media e deviazione standard per 'median_price'
summary_stats_annual_median_price = dati %>%
group_by(city, year) %>%
summarise(
mean_median_price = mean(median_price),
sd_median_price = sd(median_price)
)
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.
# Visualizza il risultato
print(summary_stats_annual_median_price)
## # A tibble: 20 × 4
## # Groups: city [4]
## city year mean_median_price sd_median_price
## <chr> <int> <dbl> <dbl>
## 1 Beaumont 2010 133117. 13354.
## 2 Beaumont 2011 125642. 9603.
## 3 Beaumont 2012 126533. 7973.
## 4 Beaumont 2013 132400 7785.
## 5 Beaumont 2014 132250 9835.
## 6 Bryan-College Station 2010 153533. 5474.
## 7 Bryan-College Station 2011 151417. 3709.
## 8 Bryan-College Station 2012 153567. 7096.
## 9 Bryan-College Station 2013 159392. 5429.
## 10 Bryan-College Station 2014 169533. 7776.
## 11 Tyler 2010 135175 4782.
## 12 Tyler 2011 136217. 8505.
## 13 Tyler 2012 139250 7983.
## 14 Tyler 2013 146100 6726.
## 15 Tyler 2014 150467. 8543.
## 16 Wichita Falls 2010 98942. 10361.
## 17 Wichita Falls 2011 98142. 10632.
## 18 Wichita Falls 2012 100958. 12347.
## 19 Wichita Falls 2013 105000 10383.
## 20 Wichita Falls 2014 105675 12444.
# Andamento della deviazione standard di median_price
ggplot(summary_stats_annual_median_price, aes(x = factor(year), y = sd_median_price, color = city, group = city)) +
geom_line(size = 1) +
geom_point(size = 3) +
labs(
title = "Deviazione Standard del prezzo per Città e Anno",
x = "Anno",
y = "Deviazione Standard ($)"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
strip.text = element_text(size = 12, face = "bold"),
panel.spacing = unit(1, "lines")
) +
scale_color_brewer(palette = "Set3") +
scale_y_continuous(labels = scales::label_comma())
cat("
#Considerazioni:
# Wichita Falls risuta essere la città con la maggiore variabilità del prezzo mediano (negli anni possiede la deviazione standard maggiore).
# Bryan-College Station sembra possedere la variabilità più contenuta nel tempo.
# Beaumont nel 2010 possedeva la variabilità maggiore, che però è diminuita gradualmente fino al 2013, per poi attestarsi a valori vicini a quelli di Tyler e Bryan-College Station nel 2014.
")
##
## #Considerazioni:
## # Wichita Falls risuta essere la città con la maggiore variabilità del prezzo mediano (negli anni possiede la deviazione standard maggiore).
## # Bryan-College Station sembra possedere la variabilità più contenuta nel tempo.
## # Beaumont nel 2010 possedeva la variabilità maggiore, che però è diminuita gradualmente fino al 2013, per poi attestarsi a valori vicini a quelli di Tyler e Bryan-College Station nel 2014.
# Grafico aggregato per Media e Deviazione Standard di median_price
ggplot(summary_stats_annual_median_price, aes(x = factor(year), y = mean_median_price, color = city, group = city)) +
geom_line(size = 1) +
geom_point(size = 3) +
geom_errorbar(aes(ymin = mean_median_price - sd_median_price,
ymax = mean_median_price + sd_median_price),
width = 0.2, size = 0.8) +
labs(
title = "Media e Deviazione Standard del Prezzo Mediano per Città e Anno",
x = "Anno",
y = "Prezzo Mediano Medio ($)"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
legend.title = element_blank()
) +
scale_color_brewer(palette = "Set3")
#Indiago la relazione fra median_price e monthly_inventory
# Raggruppa i dati per città, mese e anno e calcola media per 'median_price'
summary_stats_monthly_median_price = dati %>%
group_by(city, month, year) %>%
summarise(
mean_median_price = mean(median_price),
sd_median_price = sd(median_price)
)
## `summarise()` has grouped output by 'city', 'month'. You can override using the
## `.groups` argument.
# Visualizza il risultato
print(summary_stats_monthly_median_price)
## # A tibble: 240 × 5
## # Groups: city, month [48]
## city month year mean_median_price sd_median_price
## <chr> <int> <int> <dbl> <dbl>
## 1 Beaumont 1 2010 163800 NA
## 2 Beaumont 1 2011 130700 NA
## 3 Beaumont 1 2012 110000 NA
## 4 Beaumont 1 2013 126100 NA
## 5 Beaumont 1 2014 106700 NA
## 6 Beaumont 2 2010 138200 NA
## 7 Beaumont 2 2011 116700 NA
## 8 Beaumont 2 2012 117500 NA
## 9 Beaumont 2 2013 130000 NA
## 10 Beaumont 2 2014 132500 NA
## # ℹ 230 more rows
# Noto che la deviziano standard è NA, questo accade perchè per lo specifico mese, è presente solamente un unico valore di median_price con cui calcolare media e deviazione standard.
# Raggruppa i dati per città, mese e anno e calcola media per 'months_inventory'
summary_stats_monthly_inventory = dati %>%
group_by(city, month, year) %>%
summarise(
mean_months_inventory = mean(months_inventory),
sd_months_inventory = sd(months_inventory)
)
## `summarise()` has grouped output by 'city', 'month'. You can override using the
## `.groups` argument.
print(summary_stats_monthly_inventory)
## # A tibble: 240 × 5
## # Groups: city, month [48]
## city month year mean_months_inventory sd_months_inventory
## <chr> <int> <int> <dbl> <dbl>
## 1 Beaumont 1 2010 9.5 NA
## 2 Beaumont 1 2011 10.6 NA
## 3 Beaumont 1 2012 11.4 NA
## 4 Beaumont 1 2013 9 NA
## 5 Beaumont 1 2014 7.9 NA
## 6 Beaumont 2 2010 10 NA
## 7 Beaumont 2 2011 10.7 NA
## 8 Beaumont 2 2012 11.4 NA
## 9 Beaumont 2 2013 9.2 NA
## 10 Beaumont 2 2014 8 NA
## # ℹ 230 more rows
# Noto che la deviziano standard è NA, questo accade perchè per lo specifico mese, è presente solamente un unico valore di summary_stats_monthly_inventory con cui calcolare media e deviazione standard.
combined_data = inner_join(summary_stats_monthly_median_price, summary_stats_monthly_inventory, by = c("city", "month", "year")) # Unisco i due dataset relativi ai summary di median_price e monthly_inventory per creare un unico grafico risultatente.
# Crea il grafico con il dataset unito
ggplot(combined_data, aes(x = mean_median_price, y = mean_months_inventory, fill = city)) +
geom_point(shape = 21, color = "black", size = 4, stroke = 1) +
geom_smooth(method = "lm", se = FALSE, linetype = "dashed", color = "black") + # Linea di tendenza nera
labs(
title = "Media del Prezzo Mediano vs Media Turnover delle Offerte",
x = "Media del Prezzo Mediano ($)",
y = "Media di Months Inventory"
) +
theme_minimal() +
scale_fill_brewer(palette = "Set3") +
scale_color_brewer(palette = "Set3")
## `geom_smooth()` using formula = 'y ~ x'
cat("# Considerazioni:
# La media del prezzo mediano smussa ulteriormente le fluttuazioni, fornendo una misura più stabile e rappresentativa dell'andamento generale dei prezzi nel periodo considerato (2010-2014).
# La media del prezzo mediano viene confrontata con months inventory e si può notare una relazione negativa tra il prezzo medio e il tempo di esaurimento delle inserzioni correnti.
# Wichita Falss possiede una tendenza quasi piatta: Per le altre città invece si evidenzia una correlazione tra la velocità di chiusura delle inserzioni e l'aumentare del prezzo, sopratutto per Bryan-College Station.
# Questo comportamente potrebbe evidenziare un mercato caldo, in cui la velocita e i prezzi sono sostenuti da una domanda crescente.
")
## # Considerazioni:
## # La media del prezzo mediano smussa ulteriormente le fluttuazioni, fornendo una misura più stabile e rappresentativa dell'andamento generale dei prezzi nel periodo considerato (2010-2014).
## # La media del prezzo mediano viene confrontata con months inventory e si può notare una relazione negativa tra il prezzo medio e il tempo di esaurimento delle inserzioni correnti.
## # Wichita Falss possiede una tendenza quasi piatta: Per le altre città invece si evidenzia una correlazione tra la velocità di chiusura delle inserzioni e l'aumentare del prezzo, sopratutto per Bryan-College Station.
## # Questo comportamente potrebbe evidenziare un mercato caldo, in cui la velocita e i prezzi sono sostenuti da una domanda crescente.
# Boxplot: Distribuzione del prezzo mediano tra le città
ggplot(dati)+
geom_boxplot(aes(x=city,
y=median_price,
fill = city))+
labs(
title = "Distribuzione del prezzo mediano tra le città",
x = "Città",
y = "Prezzo Mediano ($)"
) +
theme_minimal() +
theme(legend.position = "none")+
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_brewer(palette = "Set3")
cat("
# Dal boxplot emerge che Wichita Falls ha tendenzialmente prezzi più bassi rispetto alle altre città. Mentre per Bryan-College Station i prezzi sono tendenzialmente più alti.
# Beaumont, Tyler e Wichita Falls sembrano possedere una assimmetria negativa, in particolare Beaumont è la città che presenta una assimetria più pronunciata. Bryan-College Station invece presenta una assimetria positiva.
# I punti neri nel grafico rappresentano gli outliers, che si sono presentati per valori più grandi del 3°quartile + una volta emmezzo il range interquartile.
")
##
## # Dal boxplot emerge che Wichita Falls ha tendenzialmente prezzi più bassi rispetto alle altre città. Mentre per Bryan-College Station i prezzi sono tendenzialmente più alti.
## # Beaumont, Tyler e Wichita Falls sembrano possedere una assimmetria negativa, in particolare Beaumont è la città che presenta una assimetria più pronunciata. Bryan-College Station invece presenta una assimetria positiva.
## # I punti neri nel grafico rappresentano gli outliers, che si sono presentati per valori più grandi del 3°quartile + una volta emmezzo il range interquartile.
##
##
# Boxplot: Distribuzione del valore totale delle vendite tra le varie città ma anche tra i vari anni
ggplot(dati)+
geom_boxplot(aes(x= factor(year),
y=sales,
fill = city))+
labs(
title = "Distribuzione del valore totale delle vendite tra le città",
x = "Anno",
y = "Vendite"
)+
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_brewer(palette = "Set3")
cat("
# Considerazioni:
# Il trend delle vendite è complessivamente positivi e in crescita negli anni, l'unica eccezzione riguarda Wichita Falls che semba avere un andamento costante se non leggermente in calo.
# Tyler e Bryan-College Station possiedono il maggior numero di vendite. Le distribuzioni per queste due città sono più ampie, indicando una maggiore variabilità nelle vendite.
# Beaumont mostra una mediana inferiore rispetto a Tyler e Bryan-College Station, ma possiede una distribuzione con minor variabilità nelle vendite.
")
##
##
## # Considerazioni:
## # Il trend delle vendite è complessivamente positivi e in crescita negli anni, l'unica eccezzione riguarda Wichita Falls che semba avere un andamento costante se non leggermente in calo.
## # Tyler e Bryan-College Station possiedono il maggior numero di vendite. Le distribuzioni per queste due città sono più ampie, indicando una maggiore variabilità nelle vendite.
## # Beaumont mostra una mediana inferiore rispetto a Tyler e Bryan-College Station, ma possiede una distribuzione con minor variabilità nelle vendite.
##
##
##
# Grafico a Barre: Totale delle Vendite per Mese e Città
ggplot(dati) +
geom_bar(aes(x = factor(month),
y = sales,
fill = city),
stat = "identity",
position = "dodge") +
labs(
title = "Distribuzione del valore totale delle vendite tra le città",
x = "Mese",
y = "Totale Vendite"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_brewer(palette = "Set3")
#Grafico a Barre Normalizzato: Totale delle Vendite per Mese e Città
ggplot(dati) +
geom_bar(aes(x = factor(month),
y = sales,
fill = city),
stat = "identity",
position = "fill") +
labs(
title = "Distribuzione del valore totale delle vendite tra le città",
x = "Mese",
y = "Totale Vendite"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_brewer(palette = "Set3")
#Grafico a Barre Normalizzato: Totale delle Vendite per mese e città per ogni anno.
ggplot(dati, aes(x = factor(month), fill = city)) +
geom_bar(aes(y = sales), stat = "identity", position = "fill") +
facet_wrap(~ year, nrow = 1) +
labs(
title = "Distribuzione normalizzata delle vendite per città e mese",
x = "Mese",
y = "Vendite Normalizzate"
) +
scale_y_continuous(labels = scales::percent) +
theme_minimal() +
theme(
strip.text = element_text(size = 12)
) +
scale_fill_brewer(palette = "Set3")
cat("
# Considerazioni grafici:
#Si evidenzia come Tyler contribuisca con il maggior numero di vendite, mentre Wichita Falls contribuisca con il minor numero.
#Bryan-College Station possiede un numero di vendite maggiore rispetto a Breaumont ma con anche una maggior variabilità fra i diversi mesi.
# Considerazioni Totale delle Vendite per Mese e Città:
# Dai grafici emerge una stagionalità che porta i mesi estivi (in particolare Maggio, Giugno, Luglio) ad avere un maggior numero di vendite, con il picco massimo nel mese di Giugno.
")
##
##
## # Considerazioni grafici:
## #Si evidenzia come Tyler contribuisca con il maggior numero di vendite, mentre Wichita Falls contribuisca con il minor numero.
##
## #Bryan-College Station possiede un numero di vendite maggiore rispetto a Breaumont ma con anche una maggior variabilità fra i diversi mesi.
##
## # Considerazioni Totale delle Vendite per Mese e Città:
## # Dai grafici emerge una stagionalità che porta i mesi estivi (in particolare Maggio, Giugno, Luglio) ad avere un maggior numero di vendite, con il picco massimo nel mese di Giugno.
##
##
##
# Line Chart per Vendite in Periodi Storici Differenti:
dati$date = as.Date(paste(dati$year, dati$month, "01", sep = "-"), format = "%Y-%m-%d") # Creazione della variabile date
ggplot(dati) +
geom_line(aes(x = date,
y = sales,
color = city,
group = city),
size = 1) +
labs(title = "Andamento delle vendite nel tempo per città",
x = "Data (mese/anno)",
y = "Totale delle vendite",
color = "Città") +
theme_minimal() +
scale_x_date(date_labels = "%b %Y", date_breaks = "6 months") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
scale_fill_brewer(palette = "Set3") +
scale_color_brewer(palette = "Set3")
cat("# Considerazioni: il grafico conferma quanto osservato nei grafici precedenti, ovvero un trend positivo per le vendite trainato prevalentemente da Tyler e Bryan-College.
")
## # Considerazioni: il grafico conferma quanto osservato nei grafici precedenti, ovvero un trend positivo per le vendite trainato prevalentemente da Tyler e Bryan-College.
# Line Chart che descrive il Turnover delle inserzioni
ggplot(dati) +
geom_line(aes(x = date,
y = months_inventory,
color = city,
group = city),
size = 1) +
labs(title = "Turnover delle inserzioni",
x = "Data (mese/anno)",
y = "Mesi necessari a vendere tutte le inserzioni correnti",
color = "Città") +
theme_minimal() +
scale_x_date(date_labels = "%b %Y", date_breaks = "6 months") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))+
scale_fill_brewer(palette = "Set3") +
scale_color_brewer(palette = "Set3")
cat("
# Considerazioni grafico:
#In questo caso sembra esserci un trend negativo. Il grafico mostra che il tempo necessario a vendere tutte le inserzioni correnti diminuisce nel tempo.
#Probabilmente esiste una relazione inversa tra months_inventory e sales. Possiamo vedere ad esempio che ad Aprile 2011 era stato registrato un picco per months_inventory che era stato preceduto da un picco negativo di sales.
#Al netto di Bryan-College Station che ha incrementa il suo divario, le restati città tendono ad avere un valore di turnover sempre più simile tra loro nel tempo.
")
##
## # Considerazioni grafico:
## #In questo caso sembra esserci un trend negativo. Il grafico mostra che il tempo necessario a vendere tutte le inserzioni correnti diminuisce nel tempo.
## #Probabilmente esiste una relazione inversa tra months_inventory e sales. Possiamo vedere ad esempio che ad Aprile 2011 era stato registrato un picco per months_inventory che era stato preceduto da un picco negativo di sales.
## #Al netto di Bryan-College Station che ha incrementa il suo divario, le restati città tendono ad avere un valore di turnover sempre più simile tra loro nel tempo.
cat("
# 1. Efficacia degli Annunci:
# Tyler ha l'AdClosureRate (velocità media di chiusura degli annunci) più alto.
# Bryan-College Station possiede il ListingSuccessRate (rate di successo degli annunci) più alto, ma Wichita Falls, nonostante un mercato depresso, sembra possedere un tasso di successo degli annunci superiore a Beaumont e Tyler, suggerendo che gli annunci potrebbero essere di migliore qualità.
# Sebbene il tentativo di valutare la qualità degli annunci tramite il ListingSuccessRate e l'AdClosureRate abbia evidenziato alcune correlazioni, in particolare tra prezzo e tasso di successo,risulta però difficile distinguere l'influenza della qualità degli annunci da quella di fattori esterni.
# 3. Prezzo e Tasso di Successo:
# Esiste una correlazione positiva tra prezzi medi e rate di successo degli annunci, più marcata a Tyler, indicando che probabilmente il mercato premia abitazioni premium.
# 3. Variabilità e Prezzi:
# Bryan-College Station mostra prezzi medi più alti e stabili, mentre Wichita Falls ha prezzi più bassi con maggiore variabilità.
# 4. Trend delle Vendite:
# Le vendite sono generalmente in crescita, trainate da Tyler e Bryan-College Station, con una forte stagionalità che porta la presenza di picchi in estate.
# 5. Turnover:
# Months Inventory (il tempo di esaurimento delle inserzioni) è diminuito negli anni, evidenziando un mercato più dinamico, specialmente a Bryan-College Station.
")
##
##
## # 1. Efficacia degli Annunci:
## # Tyler ha l'AdClosureRate (velocità media di chiusura degli annunci) più alto.
## # Bryan-College Station possiede il ListingSuccessRate (rate di successo degli annunci) più alto, ma Wichita Falls, nonostante un mercato depresso, sembra possedere un tasso di successo degli annunci superiore a Beaumont e Tyler, suggerendo che gli annunci potrebbero essere di migliore qualità.
## # Sebbene il tentativo di valutare la qualità degli annunci tramite il ListingSuccessRate e l'AdClosureRate abbia evidenziato alcune correlazioni, in particolare tra prezzo e tasso di successo,risulta però difficile distinguere l'influenza della qualità degli annunci da quella di fattori esterni.
##
##
##
## # 3. Prezzo e Tasso di Successo:
## # Esiste una correlazione positiva tra prezzi medi e rate di successo degli annunci, più marcata a Tyler, indicando che probabilmente il mercato premia abitazioni premium.
##
## # 3. Variabilità e Prezzi:
## # Bryan-College Station mostra prezzi medi più alti e stabili, mentre Wichita Falls ha prezzi più bassi con maggiore variabilità.
##
## # 4. Trend delle Vendite:
## # Le vendite sono generalmente in crescita, trainate da Tyler e Bryan-College Station, con una forte stagionalità che porta la presenza di picchi in estate.
##
## # 5. Turnover:
## # Months Inventory (il tempo di esaurimento delle inserzioni) è diminuito negli anni, evidenziando un mercato più dinamico, specialmente a Bryan-College Station.
##
##
##