<<Identifica e descrivi il tipo di variabili statistiche presenti nel dataset. Valuta come gestire le variabili che sottintendono una dimensione tempo e commenta sul tipo di analisi che può essere condotta su ciascuna variabile.>>
Per prima cosa carico il dataset e analizzo il tipo di variabili contenute nel file.
# Caricamento del dataset realestate_texas.csv e visualizzazione delle prime righe
data <- read.csv("C:/Users/giuli/OneDrive/Desktop/MasterAI/realestate_texas.csv")
head(data)
## 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
## 6 Beaumont 2010 6 189 27.219 122800 1803 11.1
#Analisi della struttura del dataset per identificare i tipi di 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 ...
Il dataset contiene le seguenti variabili:
Per quanto riguarda le variabili year e
month possono essere utilizzate per creare una variabile
temporale. Creo una nuova colonna date combinandole
entrambe.
# Creazione di una nuova variabile temporale 'date' per analisi temporali
library(dplyr)
## Warning: il pacchetto 'dplyr' è stato creato con R versione 4.3.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
data <- data %>%
mutate(date = as.Date(paste(year, month, "01", sep = "-")))
head(data)
## 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
## 6 Beaumont 2010 6 189 27.219 122800 1803 11.1
## date
## 1 2010-01-01
## 2 2010-02-01
## 3 2010-03-01
## 4 2010-04-01
## 5 2010-05-01
## 6 2010-06-01
city: distribuzione di frequenzayear, month: distribuzione di frequenza,
analisi delle tendenze temporalisales,volume,median_price,listings,months_inventory:
distribuzione di frequenza, indici di posizione variabilità e forma<<Calcola Indici di posizione, variabilità e forma per tutte le variabili per le quali ha senso farlo, per le altre crea una distribuzione di frequenza. Infine, commenta tutto brevemente.>>
Calcoliamo per le variabili city, month e
year la distribuzione di frequenza:
N <- dim(data)[1]
attach(data)
# Calcolo della distribuzione di frequenza per la variabile "city"
freq_ass_city <- table(city)
freq_rel_city <- table(city)/N
distr_freq_city <- cbind(freq_ass_city, freq_rel_city)
# Calcolo della distribuzione di frequenza per la variabile "year"
freq_ass_year <- table(year)
freq_rel_year <- table(year)/N
distr_freq_year <- cbind(freq_ass_year, freq_rel_year)
# Calcolo della distribuzione di frequenza per la variabile "month"
freq_ass_month <- table(month)
freq_rel_month <- table(month)/N
distr_freq_month <- cbind(freq_ass_month, freq_rel_month)
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
distr_freq_year
## freq_ass_year freq_rel_year
## 2010 48 0.2
## 2011 48 0.2
## 2012 48 0.2
## 2013 48 0.2
## 2014 48 0.2
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
La distribuzione di frequenza per la variabile city
mostra che i dati sono equamente distribuiti tra le quattro città:
Beaumont, Bryan-College Station, Tyler e Wichita Falls, ognuna delle
quali appare con la stessa frequenza assoluta (60 osservazioni) e
relativa (25%). Ciò indica che non c’è una predominanza di una città
rispetto alle altre nel dataset. Questo potrebbe essere utile per
analizzare la variabilità o la distribuzione geografica dei dati. Per
quanto riguarda le variabili month e year
anche queste variabili mostrano una distribuzione omogenea con
rispettivamente 20 e 48 osservazioni ed una frequenza relativa dell’8,3%
e 20%.
sales,
volume, median_price, listings,
months_inventory:# Funzione per calcolare gli indici di posizione per una variabile numerica
calcola_indici_posizione <- function(x, nome_x) {
min_x <- min(x) # Calcolo del valore minimo
max_x <- max(x) # Calcolo del valore massimo
quantiles_x <- quantile(x) # Calcolo dei quantili
mean_x <- mean(x) # Calcolo della media
median_x <- median(x) # Calcolo della mediana
cat(nome_x, "- Massimo:", max_x, "\n")
cat(nome_x, "- Minimo:", min_x, "\n")
cat(nome_x, "- Quantili:", quantiles_x, "\n")
cat(nome_x, "- Media:", mean_x, "\n")
cat(nome_x, "- Mediana:", median_x, "\n")
}
calcola_indici_posizione(sales, "sales")
## sales - Massimo: 423
## sales - Minimo: 79
## sales - Quantili: 79 127 175.5 247 423
## sales - Media: 192.2917
## sales - Mediana: 175.5
calcola_indici_posizione(volume, "volume")
## volume - Massimo: 83.547
## volume - Minimo: 8.166
## volume - Quantili: 8.166 17.6595 27.0625 40.893 83.547
## volume - Media: 31.00519
## volume - Mediana: 27.0625
calcola_indici_posizione(median_price, "median_price")
## median_price - Massimo: 180000
## median_price - Minimo: 73800
## median_price - Quantili: 73800 117300 134500 150050 180000
## median_price - Media: 132665.4
## median_price - Mediana: 134500
calcola_indici_posizione(listings, "listings")
## listings - Massimo: 3296
## listings - Minimo: 743
## listings - Quantili: 743 1026.5 1618.5 2056 3296
## listings - Media: 1738.021
## listings - Mediana: 1618.5
calcola_indici_posizione(months_inventory, "months_inventory")
## months_inventory - Massimo: 14.9
## months_inventory - Minimo: 3.4
## months_inventory - Quantili: 3.4 7.8 8.95 10.95 14.9
## months_inventory - Media: 9.1925
## months_inventory - Mediana: 8.95
summary(data)
## 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
## date
## Min. :2010-01-01
## 1st Qu.:2011-03-24
## Median :2012-06-16
## Mean :2012-06-16
## 3rd Qu.:2013-09-08
## Max. :2014-12-01
attach(data)
## I seguenti oggetti sono mascherati da data (pos = 3):
##
## city, date, listings, median_price, month, months_inventory, sales,
## volume, year
# Funzione per calcolare gli indici di variabilità per una variabile numerica
calcola_indici_variabilità <- function(x, nome_x) {
range_x <- range(x)
var_x <- var(x)
sd_x <- sd(x)
CV_x <- sd_x/mean(x)*100
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_value <- gini.index(x)
cat(nome_x, "- Range: Min:", range_x[1], "Max:", range_x[2], "\n")
cat(nome_x, "- Varianza:", var_x, "\n")
cat(nome_x, "- Deviazione Standard:", sd_x, "\n")
cat(nome_x, "- Coeff. deviazione:", CV_x, "\n")
cat(nome_x, "- Indice di Gini:", gini_value, "\n")
}
#Applichiamo la funzione a tutte le variabili:
calcola_indici_variabilità(data$sales, "sales")
## sales - Range: Min: 79 Max: 423
## sales - Varianza: 6344.3
## sales - Deviazione Standard: 79.65111
## sales - Coeff. deviazione: 41.42203
## sales - Indice di Gini: 0.998379
calcola_indici_variabilità(data$volume, "volume")
## volume - Range: Min: 8.166 Max: 83.547
## volume - Varianza: 277.2707
## volume - Deviazione Standard: 16.65145
## volume - Coeff. deviazione: 53.70536
## volume - Indice di Gini: 0.9999484
calcola_indici_variabilità(data$median_price, "median_price")
## median_price - Range: Min: 73800 Max: 180000
## median_price - Varianza: 513572983
## median_price - Deviazione Standard: 22662.15
## median_price - Coeff. deviazione: 17.08218
## median_price - Indice di Gini: 0.9992672
calcola_indici_variabilità(data$listings, "listings")
## listings - Range: Min: 743 Max: 3296
## listings - Varianza: 566569
## listings - Deviazione Standard: 752.7078
## listings - Coeff. deviazione: 43.30833
## listings - Indice di Gini: 0.9996201
calcola_indici_variabilità(data$months_inventory, "months_inventory")
## months_inventory - Range: Min: 3.4 Max: 14.9
## months_inventory - Varianza: 5.306889
## months_inventory - Deviazione Standard: 2.303669
## months_inventory - Coeff. deviazione: 25.06031
## months_inventory - Indice di Gini: 0.9944444
install.packages("moments", repos = "https://cran.rstudio.com/")
## Installazione pacchetto in 'C:/Users/giuli/AppData/Local/R/win-library/4.3'
## (perché 'lib' non è specificato)
## pacchetto 'moments' aperto con successo con controllo somme MD5
##
## I pacchetti binari scaricati sono in
## C:\Users\giuli\AppData\Local\Temp\RtmpwtJhtq\downloaded_packages
library(moments)
calcola_indici_forma <- function (x, nome_x) {
skewness_x <- skewness(x)
kurtosis_x <- kurtosis(x)-3
cat(nome_x, "- Asimmetria:", skewness_x, "\n")
cat(nome_x, "- Curtosi:", kurtosis_x, "\n")
}
#Applichiamo la funzione a tutte le variabili:
calcola_indici_forma(sales, "sales")
## sales - Asimmetria: 0.718104
## sales - Curtosi: -0.3131764
calcola_indici_forma(volume, "volume")
## volume - Asimmetria: 0.884742
## volume - Curtosi: 0.176987
calcola_indici_forma(median_price, "median_price")
## median_price - Asimmetria: -0.3645529
## median_price - Curtosi: -0.6229618
calcola_indici_forma(listings, "listings")
## listings - Asimmetria: 0.6494982
## listings - Curtosi: -0.79179
calcola_indici_forma(months_inventory, "months_inventory")
## months_inventory - Asimmetria: 0.04097527
## months_inventory - Curtosi: -0.1744475
<<Determina: - Qual è la variabile con la più alta variabilità - Qual è la variabile con la distribuzione più asimmetrica? Spiega come sei giunto a queste conclusioni e fornisci considerazioni statistiche.>>
Per determinare quale variabile ha maggiore variabilità possiamo osservare i valori di var, sd e CV:
La variabile volume ha il coefficiente di variazione
(CV) più alto (53.70%), indicando che è la più variabile rispetto alla
sua media.
Per valutare l’asimmetria consideriamo la skewness: Se
la skewness > 0, coda più lunga a destra. Se la skewness < 0, coda
più lunga a sinistra.
skewness= 0.718 asimmetria
positivaskewness= 0.885 asimmetria
positivaskewness= -0.365
asimmetria negativaskewness= 0.649 asimmetria
positivaskewness= 0.041
quasi simmetricaLa variabile con maggiore asimmetria è volume (skewness
= 0.885), quindi ha una distribuzione con una coda più lunga a destra.
Il valore di kurtosis (0.18) indica che la distribuzione è leggermente
più pesante rispetto a una normale (leggermente leptocurtica, quasi
mesocurtica).
<<Seleziona una variabile quantitativa (es. sales o median_price) e suddividila in classi. Crea una distribuzione di frequenze e rappresenta i dati con un grafico a barre. Calcola l’indice di eterogeneità Gini e discuti i risultati. >>
Divido la variabile sales in classi utilizzando i
“breaks” che vanno da 0 a 450 con un passo di 75:
min(sales)
## [1] 79
max(sales)
## [1] 423
N
## [1] 240
data$sales_cl <- cut(data$sales,
breaks = seq(0,450,by=75))
Rappresento le classi in un istogramma:
library(ggplot2)
## Warning: il pacchetto 'ggplot2' è stato creato con R versione 4.3.2
ggplot(data, aes(x = sales_cl)) +
geom_bar(fill = "steelblue", color = "black") +
labs(title = "Distribuzione delle classi di Sales",
x = "Classi di Sales",
y = "Frequenza assoluta") +
theme_minimal()
L’indice di eterogeneità di Gini della variabile sales
era già stata calcolata con la funzione
calcola_indici_variabilità. Vediamolo:
calcola_indici_variabilità(data$sales, "sales")
## sales - Range: Min: 79 Max: 423
## sales - Varianza: 6344.3
## sales - Deviazione Standard: 79.65111
## sales - Coeff. deviazione: 41.42203
## sales - Indice di Gini: 0.998379
La combinazione dell’istogramma con l’indice di Gini suggerisce che
la variabile sales ha una distribuzione disomogenea e che
alcune classi di sales sono molto più popolose di altre, creando una
certa disuguaglianza nella distribuzione.
<< Qual è la probabilità che, presa una riga a caso di questo dataset, essa riporti la città “Beaumont”? E la probabilità che riporti il mese di Luglio? E la probabilità che riporti il mese di dicembre 2012?>>
N <- dim(data)[1]
p_beaumont <- sum(data$city == "Beaumont")/N
p_luglio <- sum(data$month == 7)/N
p_dic_2012 <- sum(data$month == 12 & data$year == 2012)/N
cat("Probabilità che la città sia 'Beaumont':", p_beaumont, "\n")
## Probabilità che la città sia 'Beaumont': 0.25
cat("Probabilità che il mese sia Luglio:", p_luglio, "\n")
## Probabilità che il mese sia Luglio: 0.08333333
cat("Probabilità che il mese sia Dicembre 2012:", p_dic_2012, "\n")
## Probabilità che il mese sia Dicembre 2012: 0.01666667
Ho calcolato la probabilità che una riga del dataset riporti: -Beaumont: 25% -Mese di Luglio: 8.33% -Dicembre 2012: 4.17%
Questi dati suggeriscono che il dataset sia bilanciato tra le città, ma con alcune differenze stagionali.
<< Crea una nuova colonna che calcoli il prezzo medio degli immobili utilizzando le variabili disponibili. Prova a creare una colonna che misuri l’efficacia degli annunci di vendita. Commenta e discuti i risultati.>>
data$mean_price <- (data$volume*1e6)/data$sales #moltiplichiamo per 1.000.000 perchè è in milioni di dollari
summary(data$median_price)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 73800 117300 134500 132665 150050 180000
data$effectiveness <- data$sales/data$listings #efficacia degli annunci
summary(data$effectiveness)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.05014 0.08980 0.10963 0.11874 0.13492 0.38713
La variabile mean_price è stata calcolata come il
rapporto tra il valore totale delle vendite (volume) e il
numero totale di vendite (sales). Questo prezzo medio può
essere confrontato con il prezzo mediano (median_price) già
presente nel dataset. La differenza tra prezzo medio e mediano ci dà
informazioni sulla distribuzione dei prezzi. Se mean_price è maggiore di
median_price, significa che ci sono alcune vendite molto costose che
alzano la media, suggerendo una distribuzione con una coda a destra.
Per quanto riguarda l’efficacia degli annunci di vendità, ho definito
una metrica basata sul rapporto tra il N di vendite (sales)
e il numero di annunci (listings). Un valore vicino a 1 o
superiore indica un alto tasso di conversione degli annunci in vendite,
mentre un valore basso suggerisce che molti annunci rimangono
invenduti.
<< Usa il pacchetto dplyr o il linguaggio base di R per effettuare analisi statistiche condizionate per città, anno e mese. Genera dei summary (media, deviazione standard) e rappresenta graficamente i risultati.>>
Effetuiamo un’analisi condizionata raggruppando i dati per città, anno e mese.
library(dplyr)
summary_city <- data %>%
group_by(city) %>%
summarise(
mean_sales = mean(sales),
sd_sales = sd(sales),
mean_volume = mean(volume),
sd_volume = sd(volume),
mean_median_price = mean(median_price),
sd_price = sd(median_price),
mean_effectiveness = mean(effectiveness),
sd_effectiveness = sd(effectiveness),
)
summary_city
## # A tibble: 4 × 9
## city mean_sales sd_sales mean_volume sd_volume mean_median_price sd_price
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Beaumont 177. 41.5 26.1 6.97 129988. 10105.
## 2 Bryan-Co… 206. 85.0 38.2 17.2 157488. 8852.
## 3 Tyler 270. 62.0 45.8 13.1 141442. 9337.
## 4 Wichita … 116. 22.2 13.9 3.24 101743. 11320.
## # ℹ 2 more variables: mean_effectiveness <dbl>, sd_effectiveness <dbl>
summary_year <- data %>%
group_by(year) %>%
summarise(
mean_sales = mean(sales, na.rm = TRUE),
sd_sales = sd(sales, na.rm = TRUE),
mean_volume = mean(volume, na.rm = TRUE),
sd_volume = sd(volume, na.rm = TRUE),
mean_median_price = mean(median_price, na.rm = TRUE),
sd_effectiveness = sd(effectiveness)
)
summary_year
## # A tibble: 5 × 7
## year mean_sales sd_sales mean_volume sd_volume mean_median_price
## <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2010 169. 60.5 25.7 10.8 130192.
## 2 2011 164. 63.9 25.2 12.2 127854.
## 3 2012 186. 70.9 29.3 14.5 130077.
## 4 2013 212. 84.0 35.2 17.9 135723.
## 5 2014 231. 95.5 39.8 21.2 139481.
## # ℹ 1 more variable: sd_effectiveness <dbl>
summary_month <- data %>%
group_by(month) %>%
summarise(
mean_sales = mean(sales, na.rm = TRUE),
sd_sales = sd(sales, na.rm = TRUE),
mean_volume = mean(volume, na.rm = TRUE),
sd_volume = sd(volume, na.rm = TRUE),
mean_median_price = mean(median_price, na.rm = TRUE),
sd_effectiveness = sd(effectiveness)
)
summary_month
## # A tibble: 12 × 7
## month mean_sales sd_sales mean_volume sd_volume mean_median_price
## <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 127. 43.4 19.0 8.37 124250
## 2 2 141. 51.1 21.7 10.1 130075
## 3 3 189. 59.2 29.4 12.0 127415
## 4 4 212. 65.4 33.3 14.5 131490
## 5 5 239. 83.1 39.7 19.0 134485
## 6 6 244. 95.0 41.3 21.1 137620
## 7 7 236. 96.3 39.1 21.4 134750
## 8 8 231. 79.2 38.0 18.0 136675
## 9 9 182. 72.5 29.6 15.2 134040
## 10 10 180. 75.0 29.1 15.1 133480
## 11 11 157. 55.5 24.8 11.2 134305
## 12 12 169. 60.7 27.1 12.6 133400
## # ℹ 1 more variable: sd_effectiveness <dbl>
-Beaumont ha la variabilità più alta nelle vendite.
-Wichita Falls ha il prezzo mediano più basso.
-Le vendite sono più alte in estate, con un picco in luglio.
<< Utilizza ggplot2 per creare grafici personalizzati. Assicurati di esplorare: - Boxplot per confrontare la distribuzione del prezzo mediano tra le città. - Grafici a barre per confrontare il totale delle vendite per mese e città. - Line charts per confrontare l’andamento delle vendite in periodi storici differenti.>>
#boxplot per la distribuzione del prezzo mediano tra le città
ggplot(data) +
geom_boxplot(aes(x = city,
y = median_price),
fill = "#69b3a2",
color = "black") +
labs(title = "Prezzo mediano per Città",
x = "Città",
y = "Prezzo mediano")
#grafico a barre sovrapposte per il totale di vendite per città
ggplot(data) +
geom_col(aes(x = date,
y = sales,
fill = city),
color = "black") +
theme_minimal() +
labs(title = "Vendite per Mese e per Città",
x = "Data",
y = "Numero di Vendite") +
scale_x_date(date_breaks = "3 months", date_labels = "%b %Y") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
#Line charts per confrontare l’andamento delle vendite in periodi storici differenti
ggplot(data)+
geom_line(aes(x = date,
y = sales,
group = city,
color = city)) +
labs(title = "Andamento delle Vendite nel Tempo per Città",
x = "Data", y = "Numero di Vendite") +
theme_minimal() +
scale_x_date(date_breaks = "3 month", date_labels = "%b %Y") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Ho usato un boxplot per confrontare i prezzi mediani nelle città. Il risultato mostra una grande variabilità tra le città, suggerendo mercati immobiliari molto diversi tra loro. L’andamento delle vendite nel tempo con un grafico a linee mostra stagionalità, con picchi nei mesi estivi e un calo invernale.
L’analisi del mercato immobiliare in Texas ha portato a diverse osservazioni:
Tendenze stagionali: le vendite sono più alte nei mesi estivi, suggerendo che le strategie di marketing dovrebbero concentrarsi su quel periodo.
Differenze tra città: alcune città come Beaumont mostrano variazioni significative nelle vendite nel tempo, mentre altre come Wichita Falls hanno prezzi più stabili, ma più bassi.
Efficacia degli annunci: Il tasso di conversione degli annunci varia tra le città. Potrebbe essere utile analizzare quali strategie portano a un miglior tasso di vendita.
Raccomandazioni
Srategie stagionali: Maggiori investimenti pubblicitari nei mesi di alta vendita. Focalizzazione sulle città in crescita: Beaumont e Tyler potrebbero offrire opportunità interessanti. Ottimizzazione degli annunci: Approfondire quali tipi di inserzioni generano più conversioni.
Questi insight permettono a Texas Realty Insights di ottimizzare la propria strategia di mercato e migliorare le performance di vendita.