##CARICAMENTO E PRIMA ANALISI DEI DATI GREZZI #Installazione del pacchetto “data.table” per leggere in maniera efficiente il file csv (la fuzione read.csv restituiva diversi errori) e del pacchetto “moments” per le analisi statistiche

install.packages(“data.table”) library(data.table) dati <- fread(“realestate_texas.csv”, sep = “;”, header = TRUE, quote = “"”) dati[] <- lapply(dati, function(x) gsub(‘"’, ’’, x)) dati\(year <- as.integer(dati\)year) dati\(month <- as.integer(dati\)month) dati\(sales <- as.integer(dati\)sales) dati\(volume <- as.numeric(dati\)volume) dati\(median_price <- as.numeric(dati\)median_price) dati\(listings <- as.integer(dati\)listings) dati\(months_inventory <- as.numeric(dati\)months_inventory)

summary(dati) N = dim(dati) [1] attach(dati) install.packages(“moments”) library(moments)

##1. PRIME CONSIDERAZIONI SUI DATI GREZZI E SULLE SUE VARIABILI # 1. city: ○ Tipo: Variabile qualitativa nominale; ○ Descrizione: Indica la città di riferimento; ○ Analisi Applicabili: Distribuzione di frequenze per città, confronto tra città su altre variabili; 2. year: ○ Tipo: Variabile quantitativa discreta; ○ Descrizione: Indica l’anno di riferimento (2010-2014); ○ Analisi Applicabili: Analisi di trend temporali (anno per anno), confronto di medie e variazioni nel tempo; 3. month: ○ Tipo: Variabile quantitativa discreta; ○ Descrizione: Mese dell’anno (1-12); ○ Analisi Applicabili: Identificazione di stagionalità o pattern mensili nelle vendite, prezzi o altri indicatori; 4. sales: ○ Tipo: Variabile quantitativa continua; ○ Descrizione: Numero totale di vendite in un mese; ○ Analisi Applicabili: Calcolo di medie, variazioni, distribuzione delle vendite per città, mese o anno; 5. volume: ○ Tipo: Variabile quantitativa continua; ○ Descrizione: Valore totale delle vendite; ○ Analisi Applicabili: Confronto con il numero di vendite (sales) e calcolo del prezzo medio per unità; 6. median_price: ○ Tipo: Variabile quantitativa continua; ○ Descrizione: Prezzo mediano delle vendite; ○ Analisi Applicabili: Distribuzione dei prezzi mediani per città, mese, anno; 7. listings: ○ Tipo: Variabile quantitativa continua; ○ Descrizione: Numero totale di annunci attivi in un dato mese; ○ Analisi Applicabili: Relazione con sales e months_inventory; analisi della disponibilità di mercato; 8. months_inventory: ○ Tipo: Variabile quantitativa continua; ○ Descrizione: Tempo necessario per vendere tutte le inserzioni correnti (in mesi); ○ Analisi Applicabili: Indicatore di mercato (tempo medio di vendita), relazione con listings e sales;

Note: year e month possono essere trattati come dimensioni temporali. • Analisi di trend: Confronto dei valori di variabili come sales, volume, e median_price su base annuale; • Stagionalità: Analisi delle variazioni mensili (ad esempio, mesi più attivi in termini di vendite o di aumento dei prezzi);

##2. Indici di posizione, variabilità e forma

#Variabile sales

Media e Mediana

media_sales = mean(sales) mediana_sales = median(sales)

Quartili

quartili_sales = quantile(sales, probs = c(0.25, 0.5, 0.75))

Range

range_sales <- range(sales)

Deviazione Standard

sd_sales = sd(sales)

Differenza Interquartile

iqr_sales = IQR(sales)

Asimmetria

asimettria_sales = skewness(sales)

Curtosi

kurtosis_sales = kurtosis(sales)-3

#Variabile volume

Media e Mediana

media_volume = mean(volume) mediana_volume = median(volume)

Quartili

quartili_volume = quantile(volume, probs = c(0.25, 0.5, 0.75))

Range

range_volume <- range(volume)

Deviazione Standard

sd_volume = sd(volume)

Differenza Interquartile

iqr_sales = IQR(volume)

Asimmetria

asimettria_volume = skewness(volume)

Curtosi

kurtosis_volume = kurtosis(volume)-3

Variabile median_price

Media e Mediana

media_median_price = mean(median_price) mediana_median_price = median(median_price)

Quartili

quartili_median_price = quantile(median_price, probs = c(0.25, 0.5, 0.75))

Range

range_median_price <- range(median_price)

Deviazione Standard

sd_median_price = sd(median_price)

Differenza Interquartile

iqr_median_price = IQR(median_price)

Asimmetria

asimettria_median_price = skewness(median_price)

Curtosi

kurtosis_median_price = kurtosis(median_price)-3

Variabile listings

Media e Mediana

media_listings = mean(listings) mediana_listings = median(listings)

Quartili

quartili_listings = quantile(listings, probs = c(0.25, 0.5, 0.75))

Range

range_listings <- range(listings)

Deviazione Standard

sd_listings = sd(listings)

Differenza Interquartile

iqr_listings = IQR(listings)

Asimmetria

asimettria_listings = skewness(listings)

Curtosi

kurtosis_listings = kurtosis(listings)-3

Variabile months_inventory

Media e Mediana

media_months_inventory = mean(months_inventory) mediana_months_inventory = median(months_inventory)

Quartili

quartili_months_inventory = quantile(months_inventory, probs = c(0.25, 0.5, 0.75))

Range

range_months_inventory = range(months_inventory)

Deviazione Standard

sd_months_inventory = sd(months_inventory)

Differenza Interquartile

iqr_months_inventory = IQR(months_inventory)

Asimmetria

asimettria_months_inventory = skewness(months_inventory)

Curtosi

kurtosis_months_inventory = kurtosis(months_inventory)-3

#CONSIDERAZIONI # months_inventory: - Le variabili mostrano una variazione significativa tra le diverse città e periodi. In particolare, ci sono forti differenze nelle vendite e nel volume delle vendite tra le città, con alcune città che registrano risultati molto più alti rispetto ad altre; - Le asimmetrie positive in molte delle variabili suggeriscono che ci sono città o periodi con performance particolarmente forti (ad esempio, un numero molto elevato di vendite o di volume di vendite), mentre la maggior parte delle altre città ha valori più modesti; - La deviazione standard relativamente alta per molte variabili indica una grande variabilità tra le città, suggerendo che alcune località potrebbero beneficiare di strategia di marketing diversificate rispetto ad altre;

##3. Identificazione delle variabili con maggiore variabilità e asimmetria

#Calcolo del Coefficiente di Variazione per verificare la variabile con la maggiore variabilità

CV = function(sd, mean){ return(sd/mean*100) }

CV_listings = CV(sd_listings, media_listings) CV_median_price = CV(sd_median_price, media_median_price) CV_months_inventory = CV(sd_months_inventory, media_months_inventory) CV_sales = CV(sd_sales, media_sales) CV_volume = CV(sd_volume, media_volume)

La variabile con la maggiore variabilità relativa è volume, con un coefficiente di variazione del 53.71%. Questo suggerisce che il volume totale delle vendite tra città, anni e mesi presenta una variabilità significativa rispetto alla sua media, evidenziando possibili discrepanze tra periodi o luoghi di vendita;

La variabile con la distribuzione più asimmetrica è volume, con un valore di asimmetria pari a 0.88, indicando una distribuzione inclinata verso destra. Questo implica che alcune città o mesi raggiungono livelli di vendita particolarmente elevati rispetto alla maggior parte degli altri; Considerazioni statistiche: L’elevata variabilità e l’asimmetria positiva del volume delle vendite potrebbero indicare la presenza di fattori esterni che influenzano il successo delle vendite in determinate città o periodi. Ad esempio, eventi stagionali o promozioni potrebbero giocare un ruolo significativo.

##4. Creazione di classi per una variabile quantitativa

#Creazione di classi e distribuzione di frequenza per la variabile “sales”

min(sales) max(sales)

sales_CL = cut(dati$sales, breaks= c(50,150,250,350,450)) ni = table(sales_CL) #frequenza relativa fi = table(sales_CL)/N #frequenza assoluta Ni = cumsum(ni) #frequenza relativa cumulata Fi = Ni/N #frequenza assoluta cumulata

cbind(ni,fi,Ni,Fi)

#Grafico a barre

library(ggplot2) ggplot(data = dati)+ geom_bar(aes(x = sales_CL), stat = “count”, col = “black”, fill = “red”)+ labs(title = “distribuzione delle cassi di sales”, x = “ampiezza delle classi”, y = “frequenze assolute”)+ scale_y_continuous(breaks = seq(0,100,5))

#indice di eterogeneità di Gini

gini.index = function(x){ ni = table(x) fi = ni/N fi2 = fi^2 J = length(table(x)) gini = 1-sum(fi2) gini.nomralizzato = gini/((J-1)/J) return(gini.nomralizzato)

}

gini.index(sales_CL)

Considerazioni: • La maggior parte delle osservazioni (circa il 75%) si concentra nelle prime due classi; • Solo il 5% dei dati si trova nella classe più alta, indicando un fenomeno con valori estremi meno frequenti; Interpretazione: Un valore di Gini vicino a 1 indica una forte concentrazione delle vendite in poche classi; Il mercato immobiliare analizzato presenta quindi una struttura di distribuzione non uniforme, con la maggioranza dei dati distribuiti su valori più bassi rispetto al massimo

##5. Calcolo della probabilità # Probabilità città “Beaumont” Prob_Beaumont = sum(city == “Beaumont”) / N

Probabilità mese di “Luglio” (mese 7)

Prob_Luglio = sum(month == 7) / N

Probabilità mese “Dicembre 2012”

Prob_Dicembre2012 = sum(month == 12 & year == 2012) / N

Prob_Beaumont Prob_Luglio Prob_Dicembre2012

#Probabilità che una riga riporti la città “Beaumont”: ○ La probabilità è 0.25, ossia il 25%. ○ Questo è coerente con il fatto che il dataset ha 4 città, ciascuna rappresentata in egual misura. #Probabilità che una riga riporti il mese di “Luglio” ○ La probabilità è 0.0833, ossia l’8.33%. ○ Poiché il dataset copre 12 mesi per 5 anni #Probabilità che una riga riporti “Dicembre 2012” ○ La probabilità è 0.0167, ossia l’1.67%. ○ Questo si spiega considerando che il dataset copre 5 anni (dal 2010 al 2014) #Queste probabilità evidenziano la regolarità del dataset e confermano la sua struttura simmetrica e uniforme nei dati temporali e geografici.

##6. Creazione di nuove variabili

Creazione della nuova colonna per il prezzo medio

prezzo_medio_vendita = volume/sales

Creazione della nuova colonna per l’efficacia degli annunci

efficacia_annunci = sales/listings

head(dati[, c(“prezzo_medio_vendita”, “efficacia_annunci”)]) min(prezzo_medio_vendita) max(prezzo_medio_vendita)

min(efficacia_annunci) max(efficacia_annunci)

prezzo_medio_vendita

    ○ Minimo: 0.097
    ○ Massimo: 0.213
    ○ Questi valori indicano che, mediamente, i ricavi per vendita non scendono mai sotto 0.097 né superano 0.213. Questo suggerisce una certa stabilità nel rapporto tra volume e numero di vendite;
    ○ Differenze nei valori potrebbero derivare da fattori come localizzazione o stagionalità;

#efficacia_annunci ○ Minimo: 0.050 ○ Massimo: 0.387 ○ Il range è ampio, suggerendo una maggiore variabilità nell’efficacia degli annunci. Alcuni annunci sembrano molto più efficaci di altri. ○ L’efficacia più bassa potrebbe indicare città, mesi o tipi di annunci meno performanti

##7. Analisi condizionata

install.packages(“dplyr”) library(dplyr)

Statistiche condizionate per città

summary_citta = dati %>% group_by(city) %>% summarise( media_sales = mean(sales), sd_sales = sd(sales), media_volume = mean(volume), sd_volume = sd(volume), media_median_price = mean(median_price), sd_median_price = sd(median_price) )

Statistiche condizionate per anno

summary_anno = dati %>% group_by(year) %>% summarise( media_sales = mean(sales), sd_sales = sd(sales), media_volume = mean(volume), sd_volume = sd(volume), media_median_price = mean(median_price), sd_median_price = sd(median_price) )

Statistiche condizionate per mese

summary_mese = dati %>% group_by(month) %>% summarise( media_sales = mean(sales), sd_sales = sd(sales), media_volume = mean(volume), sd_volume = sd(volume), media_median_price = mean(median_price), sd_median_price = sd(median_price) )

##8. Creazione di visualizzazioni con ggplot2

Grafico per le vendite per città

ggplot(summary_citta, aes(x = city, y = media_sales, fill = city)) + geom_bar(stat = “identity”) + labs(title = “Media delle Vendite per Città”, x = “Città”, y = “Media Vendite”) + theme_minimal()

Grafico per le vendite per anno

ggplot(summary_anno, aes(x = year, y = media_sales, fill = factor(year))) + geom_bar(stat = “identity”) + labs(title = “Media delle Vendite per Anno”, x = “Anno”, y = “Media Vendite”) + theme_minimal()

Grafico per le vendite per mese

ggplot(summary_mese, aes(x = factor(month), y = media_sales, fill = factor(month))) + geom_bar(stat = “identity”) + labs(title = “Media delle Vendite per Mese”, x = “Mese”, y = “Media Vendite”) + theme_minimal()

Boxplot per il confronto della distribuzione del prezzo mediano tra le città

ggplot(dati, aes(x = city, y = median_price, fill = city)) + geom_boxplot() + labs(title = “Distribuzione del Prezzo Mediano per Città”, x = “Città”, y = “Prezzo Mediano”) + theme_minimal() + scale_fill_brewer(palette = “Set3”)

Somma delle vendite per mese e città

sales_by_city_month = aggregate(sales ~ city + month, data = dati, sum)

Grafico a barre per confrontare le vendite totali per mese e città

ggplot(sales_by_city_month, aes(x = factor(month), y = sales, fill = city)) + geom_bar(stat = “identity”, position = “dodge”) + labs(title = “Vendite Totali per Mese e Città”, x = “Mese”, y = “Totale Vendite”) + scale_fill_brewer(palette = “Set2”) + theme_minimal()

Somma delle vendite per anno, mese e città

sales_by_year_month = aggregate(sales ~ year + month + city, data = dati, sum)

Creazione di una nuova colonna ‘anno_mese’ che combina ‘year’ e ‘month’

sales_by_year_month\(anno_mese = as.Date(paste(sales_by_year_month\)year, sales_by_year_month$month, “01”, sep = “-”))

Grafico a linee per l’andamento delle vendite nel tempo

ggplot(sales_by_year_month, aes(x = anno_mese, y = sales, color = city)) + geom_line(size = 1) + labs(title = “Andamento delle Vendite nel Tempo”, x = “Anno-Mese”, y = “Vendite Totali”) + scale_x_date(date_labels = “%y-%m”, date_breaks = “1 month”) + # Formato YY-MM theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1))

#Confronto del valore totale delle vendite tra le città e gli anni

ggplot(dati, aes(x = factor(year), y = sales, fill = city)) + geom_boxplot() + labs(title = “Distribuzione del Totale Vendite per Città e Anno”, x = “Anno”, y = “Totale Vendite”) + theme_minimal()

#Vendite nei mesi per città

#grafico sovrapposto ggplot(dati, aes(x = factor(month), y = sales, fill = city)) + geom_col(position = “stack”) + labs(title = “Totale Vendite nei Mesi (Sovrapposte)”, x = “Mese”, y = “Totale Vendite”) + theme_minimal()

#grafico normalizzato ggplot(dati, aes(x = factor(month), y = sales, fill = city)) + geom_col(position = “fill”) + labs(title = “Distribuzione Percentuale delle Vendite nei Mesi (Normalizzato)”, x = “Mese”, y = “Percentuale”) + scale_y_continuous(labels = scales::percent) + theme_minimal()

#Aggiunta Year

ggplot(dati, aes(x = factor(month), y = sales, fill = city)) + geom_col(position = “fill”) + facet_wrap(~ year, ncol = 2) + labs(title = “Distribuzione Percentuale delle Vendite nei Mesi, per Anno e Città”, x = “Mese”, y = “Percentuale”) + scale_y_continuous(labels = scales::percent) + theme_minimal()

#Line chart per analizzare i trend storici delle vendite

anno_mese = as.Date(paste(dati\(year, dati\)month, “01”, sep = “-”), format = “%Y-%m-%d”) ggplot(dati, aes(x = anno_mese, y = sales, color = city)) + geom_line(size = 1) + labs(title = “Trend Storico delle Vendite per Città”, x = “Anno-Mese”, y = “Totale Vendite”) + scale_x_date(date_labels = “%y-%m”, date_breaks = “6 months”) + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1))

##Conclusioni

Prestazioni delle Città Tyler si distingue come la città con le migliori performance in termini di media delle vendite e prezzo mediano delle case. Wichita Falls, invece, mostra performance più basse, sia in termini di vendite che di prezzi mediani, evidenziando un mercato meno competitivo o con una domanda più limitata. La stabilità dei prezzi a Wichita Falls potrebbe rappresentare un’opportunità per acquirenti interessati a mercati più prevedibili.

Stagionalità del Mercato Il mercato immobiliare analizzato presenta una chiara stagionalità: - Mesi primaverili ed estivi (aprile-agosto): Picchi di vendite, probabilmente legati a una maggiore mobilità e a condizioni climatiche favorevoli. - Mesi invernali (gennaio, dicembre): Calo significativo delle vendite, coerente con la stagionalità tipica del settore immobiliare. Questi dati suggeriscono che l’azienda dovrebbe pianificare le campagne di marketing e le attività promozionali seguendo questa stagionalità, massimizzando gli sforzi nei mesi primaverili e adottando strategie per mitigare il calo nei mesi invernali.

Crescita Annuale Il 2014 è l’anno con le migliori performance, registrando una media delle vendite significativamente più alta rispetto agli anni precedenti. Dal 2011 al 2014, si osserva una crescita costante delle vendite con un incremento medio annuo del 25%, indicando un mercato in espansione e una domanda crescente. Il calo del 2011 rispetto al 2010 potrebbe essere attribuito a fattori economici o locali che hanno temporaneamente rallentato il mercato.

Distribuzione delle Vendite La maggior parte delle transazioni si concentra nella fascia [50, 150], rappresentando quasi il 39% del totale. Questo suggerisce che il mercato è dominato da transazioni di fascia bassa. Le fasce di vendita più alte ([250, 450]) sono meno rappresentate, evidenziando un’opportunità per espandere l’offerta di immobili di fascia alta attraverso strategie di marketing mirate o promozioni su proprietà di lusso.

Tendenze Temporali Tyler e Bryan-College Station mostrano vendite in crescita nel tempo, con picchi stagionali marcati, suggerendo mercati vivaci e dinamici. Beaumont e Wichita Falls presentano vendite più stabili ma con minori fluttuazioni, indicando una domanda meno sensibile a fattori stagionali o promozionali.

Raccomandazioni Strategiche Espansione dell’offerta nei mercati forti: - Focalizzarsi su Tyler e Bryan-College Station per massimizzare le vendite e attrarre investitori interessati a mercati immobiliari dinamici e redditizi.

Incremento della domanda nei mercati deboli: - Introdurre incentivi o promozioni specifiche a Wichita Falls per attrarre acquirenti e stimolare il mercato locale.

Sfruttare la stagionalità: - Rafforzare le campagne di marketing e le attività promozionali nei mesi primaverili ed estivi per capitalizzare i picchi di domanda. - Introdurre strategie per mantenere un livello minimo di attività nei mesi invernali, ad esempio tramite sconti o incentivi per i potenziali acquirenti.

Valorizzare le fasce alte di vendita: - Promuovere immobili di fascia alta nelle città più forti (Tyler, Bryan-College Station) per aumentare la rappresentatività delle fasce di vendita più alte.