#—PUNTO 1— ANALISI VARIABILI

city : qualitativa nominale.

year : qualitativa ordinale in questo caso.

month : qualitativa che rapprensenta il mese dell’anno espressa in numeri.Può essere utilizzata per individuare tendenze.

sales : quantitativa discreta che indica il numero di vendite totale.

listings : quantitativa discreta che indica il numero di annunci disponibili.

volume : quantitativa continua numerica che indica il volume complessivo delle vendite espresso in milioni di dollari.

median_price : quantitativa continua che indica il prezzo mediano delle vendite.

months_inventory : quantitativa continua che esprime il tempo necessario per vendere tutte le inserzioni correnti. utile come indicatore del mercato. espresso in mesi

#—PUNTO 2— INDICI POSIZIONE,VARIABILITA’ E FORMA

realestate_texas = read.csv("realestate_texas.csv", sep = ",")
View(realestate_texas)

library(knitr)
library(kableExtra)
library(ggplot2)
library(dplyr)
## 
## Caricamento pacchetto: 'dplyr'
## Il seguente oggetto è mascherato da 'package:kableExtra':
## 
##     group_rows
## I seguenti oggetti sono mascherati da 'package:stats':
## 
##     filter, lag
## I seguenti oggetti sono mascherati da 'package:base':
## 
##     intersect, setdiff, setequal, union
library(moments) 
attach(realestate_texas)

freq_city = table(realestate_texas$city)
freq_year = table(realestate_texas$year)
freq_month = table(realestate_texas$month)

kable(
  freq_city,
  col.names = c("Città", "Frequenza"), 
  caption = "Distribuzione di frequenza per città")%>%
  kable_styling()
Distribuzione di frequenza per città
Città Frequenza
Beaumont 60
Bryan-College Station 60
Tyler 60
Wichita Falls 60
kable(
  freq_year, 
  col.names = c("Anno", "Frequenza"), 
  caption = "Distribuzione di frequenza per anno")%>%
  kable_styling()
Distribuzione di frequenza per anno
Anno Frequenza
2010 48
2011 48
2012 48
2013 48
2014 48
kable(
  freq_month, 
  col.names = c("Mese", "Frequenza"), 
  caption = "Distribuzione di frequenza per mese")%>%
  kable_styling()
Distribuzione di frequenza per mese
Mese Frequenza
1 20
2 20
3 20
4 20
5 20
6 20
7 20
8 20
9 20
10 20
11 20
12 20

Le frequenze mostrano una distribuzione uniforme, poiché tutte le variabili qualitative presentano la stessa frequenza.

calcola_indici <- function(colonna) {
  min <- min(colonna)
  max <- max(colonna)
  media <- mean(colonna)
  mediana <- median(colonna)
  IQR <- IQR(colonna)
  varianza <- var(colonna)
  dev_std <- sd(colonna)
  cv <- (dev_std / media) * 100
  asimmetria <- skewness(colonna)
  curtosi <- kurtosis(colonna)
  
  return(c(Min = min ,Max = max ,Media = media, Mediana = mediana, IQR = IQR,Varianza = varianza, Dev_Std = dev_std, CV = cv, Asimmetria = asimmetria, Curtosi = curtosi))}

variabili <- realestate_texas[, c("volume", "median_price", "listings", "sales")]

risultati <- t(apply(variabili, 2,calcola_indici))

risultati_df <- as.data.frame(risultati)
risultati_df <- cbind(Variabile = rownames(risultati_df), risultati_df)
rownames(risultati_df)
## [1] "volume"       "median_price" "listings"     "sales"
risultati_df <- as.data.frame(lapply(risultati_df, 
                                     function(x) {
                                       if (is.numeric(x)) round(x, 2) else x #arrotondamento 2 cifre
                                       }))

kable(
  risultati_df,
  format = "markdown",
  col.names = c("Variabile","Min","Max", "Media", "Mediana", "IQR","Varianza", "Dev. Std.", "CV (%)", "Asimmetria", "Curtosi"),
  caption = "Indici di posizione, variabilità e forma"
) %>%
  kable_styling()
Indici di posizione, variabilità e forma
Variabile Min Max Media Mediana IQR Varianza Dev. Std. CV (%) Asimmetria Curtosi
volume 8.17 83.55 31.01 27.06 23.23 2.77270e+02 16.65 53.71 0.88 3.18
median_price 73800.00 180000.00 132665.42 134500.00 32750.00 5.13573e+08 22662.15 17.08 -0.36 2.38
listings 743.00 3296.00 1738.02 1618.50 1029.50 5.66569e+05 752.71 43.31 0.65 2.21
sales 79.00 423.00 192.29 175.50 120.00 6.34430e+03 79.65 41.42 0.72 2.69

#—PUNTO 3— Identificazione variabili con maggiore variabilità e asimmetria.

Nella tabella sono riportati i valori di minimo, massimo, media, mediana e scarto interquartile. Successivamente sono calcolati la varianza e la deviazione standard, che tuttavia risentono delle diverse unità di misura delle variabili. Grazie al coefficiente di variazione (CV), è possibile confrontare la variabilità relativa delle variabili, evidenziando che la variabile VOLUME presenta la maggiore variabilità, con un valore del 53,7%

Per individuare la variabile con la distribuzione più asimmetrica, analizziamo i valori di Asimmetria (skewness). La variabile VOLUME presenta il valore assoluto più alto (0,88), indicando che ha la distribuzione più asimmetrica. Poiché il valore è positivo, ciò suggerisce una coda più lunga verso destra.

#—PUNTO 4— CREAZIONE CLASSI PER UNA VARIABILE QUANTITATIVA

sales_cl = cut(sales,
    breaks =c(0,100,200,300,400,500))
n = dim(realestate_texas)[1]

ni = table(sales_cl)
fi = table(sales_cl)/n
Ni = cumsum(ni)
Fi = Ni/n

#gini index
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)
}

table(sales_cl)
## sales_cl
##   (0,100] (100,200] (200,300] (300,400] (400,500] 
##        21       128        66        22         3
indice_gini <- round(gini.index(sales_cl),2)

distr_freq_sales_cl = as.data.frame(cbind(ni,fi,Ni,Fi,indice_gini))

kable(
  distr_freq_sales_cl,
  col.names = c("Classi","ni","fi","Ni","Fi","G"),
  caption = "Distribuzione di frequenza (sales)"
)%>%
  kable_styling()
Distribuzione di frequenza (sales)
Classi ni fi Ni Fi G
(0,100] 21 0.0875000 21 0.0875000 0.78
(100,200] 128 0.5333333 149 0.6208333 0.78
(200,300] 66 0.2750000 215 0.8958333 0.78
(300,400] 22 0.0916667 237 0.9875000 0.78
(400,500] 3 0.0125000 240 1.0000000 0.78
ggplot(realestate_texas)+
  geom_bar(aes(x = sales_cl,),
           stat = "count",
           col = "black",
           fill = "blue4")+
  labs(title = "Distribuzione di frequenze per Sales",
       x = "",
       y = "")+
  scale_y_continuous(breaks = seq(0,150,25))+
  theme_minimal()

La maggior parte delle osservazioni si concentra nella fascia 100-200, indicando che le vendite in questo intervallo sono le più frequenti. Al contrario, le fasce 300-400 e 400-500 presentano poche osservazioni, evidenziando che vendite di questo livello sono meno comuni

Un indice di Gini pari a 0,78 indica un elevato livello di eterogeneità nella distribuzione delle vendite tra le classi: alcune classi concentrano una quota significativa delle vendite rispetto ad altre.

#—PUNTO 5— CALCOLO PROBABILITA’

beaumont_rows = sum(city == "Beaumont")
p_beaumont = beaumont_rows/n


luglio_rows = sum(month == "7")
p_luglio = luglio_rows/n


dicembre_2012_rows = sum(month =="12" & year==2012)
p_dicembre_2012 = dicembre_2012_rows/n

probabilità <- as.data.frame(round(cbind(p_beaumont,p_luglio,p_dicembre_2012)* 100, 2))

kable(probabilità,
      col.names = c("Beaumont (%)","Luglio (%)","Dicembre 2012 (%)"),
      caption = "Le probabilità che vengano estratte le righe:"
)%>%
  kable_styling()
Le probabilità che vengano estratte le righe:
Beaumont (%) Luglio (%) Dicembre 2012 (%)
25 8.33 1.67

La probabilità che presa una riga a caso restituisca:

#—PUNTO 6— CREAZIONE NUOVE VARIABILI

realestate_texas$average_price = ((volume*10^6)/sales)

realestate_texas$efficiency_listings = (sales/listings)*100

ggplot(realestate_texas, aes(x = average_price, y = efficiency_listings, size = volume, color = volume)) +
  geom_point(alpha = 0.7) +
  scale_color_gradient(low = "blue", high = "red") +
  labs(
    title = "Correlazione tra efficacia degli annunci e prezzo medio",
    x = "Prezzo medio degli immobili (USD)",
    y = "Efficacia degli annunci (%)",
    color = "Volume (dollari USD)",
    size = "Volume (dollari USD)"
  ) +
  theme_minimal() +
  theme(legend.position = "right")

Tendenza generale: Sembra esserci una tendenza positiva, all’aumentare del prezzo medio degli immobili, anche l’efficacia degli annunci tende ad aumentare, indicando che immobili più costosi potrebbero essere associati a una strategia pubblicitaria più efficace.

Per prezzi tra 120.000 e 180.000 USD, l’efficacia degli annunci rimane moderata (tra il 10% e il 20%) per la maggior parte dei punti, con volumi generalmente bassi. Invece, per immobili sopra i 180.000 USD, si nota una maggiore dispersione verso l’alto sull’asse Y (fino al 40%), associata a volumi maggiori.

#—PUNTO 7 E 8— ANALISI CONDIZIONATA

city_stats = realestate_texas%>%
  group_by(city)%>%
  summarise(media = mean(sales),
            Dev.st. = sd(sales))

ggplot(city_stats, aes(x = city, y = media)) +
  geom_bar(stat = "identity", fill = "lightblue", alpha = 1) + 
  labs(title = "Media delle vendite per città",
       x = element_blank(),
       y = element_blank()) +
  theme_minimal()

La città con la media delle vendite più alta è Tyler, che supera di molto le altre.

Wichita Falls ha la media delle vendite più bassa tra le quattro città considerate.

Bryan-College Station e Beaumont hanno valori intermedi.

year_stat = realestate_texas%>%
  group_by(year)%>%
  summarise(media = mean(sales),
            Dev.st. = sd(sales))

ggplot(year_stat, aes(x = year, y = media)) +
  geom_line(color = "blue") +  # Linea della media
  geom_point(color = "blue") +  # Punti sui dati
  geom_errorbar(aes(ymin = media - Dev.st., ymax = media + Dev.st.), 
                width = 0.2, color = "red") +  # Barre di errore
  labs(title = "Media delle vendite per anno con deviazione standard",
       x = "",
       y = "") +
  theme_minimal()

Un’aumento della linea nel grafico suggerisce una crescita media delle vendite, indicando una fase di espansione del mercato. Al contrario, una diminuzione della linea potrebbe riflettere un rallentamento o una fase di contrazione del mercato.

Barre lunghe in determinati anni segnalano anni con maggiore incertezza o vendite più fluttuanti, caratterizzate da alti e bassi significativi.Invece Barre più corte indicano anni in cui il mercato ha mostrato una maggiore stabilità, con meno volatilità nelle vendite.

Il periodo 2010-2011 evidenzia una lieve flessione delle vendite, che potrebbe essere legata a condizioni economiche o altre variabili di mercato.

A partire dal 2011, si osserva una crescita delle vendite , probabilmente dovuta a un mercato più dinamico, supportato da una maggiore efficacia delle campagne pubblicitarie, soprattutto in periodi mirati dell’anno.

month_stat=realestate_texas%>%
  group_by(month)%>%
  summarise(media = mean(sales),
            Dev.st. = sd(sales))


ggplot(month_stat, aes(x = month, y = media)) +
  geom_line(color = "blue", size = 1) +  # Linea della media
  geom_point(color = "blue", size = 2) +  # Punti per i mesi
  geom_errorbar(aes(ymin = media - Dev.st., ymax = media + Dev.st.), 
                width = 0.2, color = "red") +  # Barre di errore
  labs(title = "Media delle vendite per mese con deviazione standard",
       x = element_blank(),
       y = element_blank()) +
  theme_minimal()+
  scale_x_continuous(breaks = seq(1,12,1))
## 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.

La linea nel grafico mostra come cambiano le vendite medie nei vari mesi dell’anno.

Si possono identificare picchi stagionali , con vendite più alte nei mesi che vanno da marzo ad agosto , suggerendo un aumento delle vendite in questi mesi. Al contrario, si osservano cali stagionali nei mesi rimanenti, dove le vendite sono generalmente più basse.

Barre più lunghe indicano una maggiore variabilità delle vendite mensili rispetto alla media, suggerendo periodi di alta fluttuazione o incertezze nelle vendite. Barre corte, invece, suggeriscono un comportamento più uniforme per quel mese, indicando una minore variabilità nelle vendite.

—PUNTO 8— VISUALIZZAZIONI GGPLOT2

ggplot(realestate_texas) +
  geom_boxplot(aes(x = city, 
                   y = median_price)) +
  labs(
    title = "Distribuzione del Prezzo Mediano tra le Città",
    x = element_blank(),
    y = element_blank()) +
  theme_minimal()

Le città di Beaumont e Bryan-College presentano un intervallo interquartile meno ampio delle restanti. Sta ad indicare un minore variabilità nei prezzi .

Wichita Falls , in particolare, si distingue per avere una maggiore variabilità nei prezzi . Questo potrebbe significare che il mercato immobiliare in questa città è meno uniforme rispetto ad altre città con un intervallo interquartile più stretto. Quindi un intervallo più ampio indica una distribuzione più ampia dei prezzi, con valori che si discostano maggiormente dalla media.

ggplot(realestate_texas)+
  geom_bar(aes(x = month,
               y = sales,
               fill = city),
           stat = "identity",
           position = "stack")+
  labs(
    title = "Totale vendite per mese e città (in milioni $)",
    x = element_blank(),
    y = element_blank(),
    fill = "Città"
  )+
  scale_x_continuous(breaks = seq(1,12,1))+
  theme_minimal()

Tyler e Bryan rappresentano i centri dinamici con un’elevata attività economica. Queste città potrebbero essere caratterizzate da mercati più floridi, maggiori opportunità di business, e una popolazione che beneficia di un’infrastruttura economica robusta. La loro crescita potrebbe derivare da settori trainanti come l’industria, il commercio, o l’innovazione, che alimentano una domanda maggiore di beni e servizi.

Beaumont e Wichita Falls , al contrario, riflettono aree con minore appeal o opportunità. Queste città potrebbero trovarsi in fasi di sviluppo più lente, con mercati immobiliari meno attivi, una minore presenza di investimenti o opportunità professionali, e una base economica più limitata. Ciò potrebbe influenzare negativamente la crescita delle vendite e lo sviluppo complessivo.

realestate_texas$date = as.Date(with(realestate_texas, paste(year,month,1,sep = "-")), "%Y-%m-%d")

ggplot(realestate_texas)+
  geom_line(aes(x=date, y=sales, col=city))+
  geom_point(aes(x=date, y=sales, col= city),size=1.5)+
    labs(
      title = "Andamento delle vendite negli anni($)",
      x = "",
      y = "",
      color = "Città"
    )+
    theme_minimal()+
  scale_x_date(breaks= "1 year",
               date_labels = "%Y")

Wichita Falls mostra un andamento stabile nel corso degli anni, indicando un mercato con poche fluttuazioni. Questo potrebbe suggerire una domanda costante e un ambiente economico relativamente stabile.

Bryan-College Station e Tyler presentano picchi significativi nelle vendite, probabilmente dovuti a un mercato più dinamico. Questi picchi potrebbero riflettere periodi di crescita economica, espansione di settori chiave, o altre forze trainanti che hanno stimolato un aumento delle vendite.

Le linee con picchi irregolari possono indicare la presenza di eventi economici significativi, come crisi o boom economici, che hanno avuto un impatto sulle vendite. Questi eventi, sia positivi che negativi, possono causare fluttuazioni inaspettate o imprevisti, come è visibile nelle città con andamenti più volatile.

monthly_city_sales =realestate_texas%>%
  group_by(month, city)%>%
  summarise(total_sales = sum(sales))%>%
  ungroup()
## `summarise()` has grouped output by 'month'. You can override using the
## `.groups` argument.
monthly_city_sales <- monthly_city_sales%>%
  group_by(month)%>%
  mutate(percentage = total_sales / sum(total_sales) * 100)

ggplot(monthly_city_sales, aes(x = factor(month, levels = 1:12), y = percentage, fill = city)) +
  geom_bar(stat = "identity", position = "fill") +
  labs(
    title = "Distribuzione percentuale delle vendite nei vari mesi per città",
    x = element_blank(),
    y = element_blank(),
    fill = "Città"
  ) +
  theme_minimal()

Utile per confrontare città con dimensioni di mercato diverse. Beaumont sembra avere una distribuzione di vendite più stabile, potrebbe avere un mercato più maturo o diversificato, meno influenzato dalla stagionalità.

Bryan College Station nei periodi di aprile-luglio ha un notevole aumento delle vendite per poi ritornale ai valori iniziali.

Tyler ha valori alti di vendita all’inizio ed alla fine dell’anno, tende a diminiure nei periodi da aprile ad agosto.

Witchida Falls vede le vendite diminuire da Gennaio fino ad Agosto per poi riprendersi e stabilizzarsi.

ggplot(realestate_texas, aes(x = city,
                             y = sales,
                             fill = city))+ 
  geom_col() + 
  facet_wrap(~year) + #più grafici uno per ogni anno
  labs(title = "Distribuzione delle vendite per anno",
       x = element_blank(),
       y = element_blank(),
       fill = "Città")+
  theme_minimal()+
  theme(legend.position = "bottom",
        axis.text.x = element_blank() #nascondo etichette "x" poiché c'è la leggenda
        )

Dal 2010 al 2014, quasi tutte le città hanno visto un aumento delle vendite, indicando una tendenza positiva nel mercato immobiliare del Texas durante questo periodo.

Trend positivo: Tyler ha registrato un aumento significativo delle vendite. Il dato iniziale nel 2010 era di circa 2700 vendite, mentre nel 2014 è arrivato a circa 4000 vendite. Questo rappresenta un notevole incremento nelle vendite nel periodo considerato.

Vendite stabili per alcuni anni: Bryan-College Station ha mostrato una vendita stabile negli anni 2010-2011 e 2012-2013. Il dato di partenza nel 2010 era di circa 2000 vendite e il dato finale nel 2014 è di 3000 vendite, con una crescita complessiva meno marcata rispetto ad altre città.

Variazione nelle vendite: Beaumont ha avuto un calo di vendite tra il 2010 e il 2011, per poi riprendersi e mostrare una crescita successiva. Il dato iniziale nel 2010 era di circa 1800 vendite, con un dato finale nel 2014 di poco più di 2500 vendite.

Trend negativo e successiva ripresa: Wichita Falls ha visto un calo nelle vendite dal 2010 al 2012, per poi stabilizzarsi e recuperare a partire dal 2013 fino al 2014. Questo andamento suggerisce una fluttuazione del mercato immobiliare, con una fase di difficoltà seguita da una ripresa.

#—PUNTO 9—