#—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(ggplot2)
library(dplyr)
## 
## Caricamento pacchetto: 'dplyr'
## I seguenti oggetti sono mascherati da 'package:stats':
## 
##     filter, lag
## I seguenti oggetti sono mascherati da 'package:base':
## 
##     intersect, setdiff, setequal, union
library(moments) 
attach(realestate_texas)

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

list(freq_city=freq_city, freq_year=freq_year, freq_month=freq_month)
## $freq_city
## 
##              Beaumont Bryan-College Station                 Tyler 
##                    60                    60                    60 
##         Wichita Falls 
##                    60 
## 
## $freq_year
## 
## 2010 2011 2012 2013 2014 
##   48   48   48   48   48 
## 
## $freq_month
## 
##  1  2  3  4  5  6  7  8  9 10 11 12 
## 20 20 20 20 20 20 20 20 20 20 20 20

Si nota una equidistribuzione di frequenze poiché tutte hanno la stessa frequenza.

summary(sales)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    79.0   127.0   175.5   192.3   247.0   423.0
IQR(sales)
## [1] 120
var(sales)
## [1] 6344.3
sd(sales)
## [1] 79.65111
CV_sales = sd(sales)/mean(sales) *100
CV_sales
## [1] 41.42203
skewness(sales)
## [1] 0.718104
kurtosis(sales)
## [1] 2.686824
summary(volume)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   8.166  17.660  27.062  31.005  40.893  83.547
IQR(volume)
## [1] 23.2335
var(volume)
## [1] 277.2707
sd(volume)
## [1] 16.65145
CV_volume = sd(volume)/mean(volume) *100
CV_volume
## [1] 53.70536
skewness(volume)
## [1] 0.884742
kurtosis(volume)-3
## [1] 0.176987
summary(median_price)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   73800  117300  134500  132665  150050  180000
IQR(median_price)
## [1] 32750
var(median_price)
## [1] 513572983
sd(median_price)
## [1] 22662.15
CV_median_price = sd(median_price)/mean(median_price) *100
CV_median_price
## [1] 17.08218
skewness(median_price)
## [1] -0.3645529
kurtosis(median_price)-3
## [1] -0.6229618
summary(listings)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     743    1026    1618    1738    2056    3296
IQR(listings)
## [1] 1029.5
var(listings)
## [1] 566569
sd(listings)
## [1] 752.7078
CV_listings = (sd(listings)/mean(listings)) *100
CV_listings
## [1] 43.30833
skewness(listings)
## [1] 0.6494982
kurtosis(listings)-3
## [1] -0.79179
summary(months_inventory)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.400   7.800   8.950   9.193  10.950  14.900
IQR(months_inventory)
## [1] 3.15
var(months_inventory)
## [1] 5.306889
sd(months_inventory)
## [1] 2.303669
CV_months_inventory = sd((months_inventory)/mean(months_inventory)) *100
CV_months_inventory
## [1] 25.06031
skewness(months_inventory)
## [1] 0.04097527
kurtosis(months_inventory)-3
## [1] -0.1744475

#—PUNTO 3— Identificazione variabili con maggiore variabilità e asimmetria. Con summary si visualizzano i valori min, max ,i quartili, la mediana e la media poi calcolo varianza e deviazione standard che però siccome risentono di unità di misura diverse, grazie al Coefficente di Variazione(CV) riusciamo a stabilire che: la variabile VOLUME è la variabile con più alta variabilità del 53,7%.

Per determinare invece la variabile con distribuzione più asimmetrica dobbiamo visualizzare i valori di skewness.La variabile: VOLUME ha il valore assoluto più alto (0.884742) ed è quindi quella con la distribuzione più asimmetrica (positiva) indicando una coda più lunga verso destra.

#—PUNTO 4— CREAZIONE CLASSI PER UNA VARIABILE QUANTITATIVA

list(min(sales),max(sales))
## [[1]]
## [1] 79
## 
## [[2]]
## [1] 423
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

cbind(ni,fi,Ni,Fi)
##            ni         fi  Ni        Fi
## (0,100]    21 0.08750000  21 0.0875000
## (100,200] 128 0.53333333 149 0.6208333
## (200,300]  66 0.27500000 215 0.8958333
## (300,400]  22 0.09166667 237 0.9875000
## (400,500]   3 0.01250000 240 1.0000000
distr_freq_sales_cl = as.data.frame(cbind(ni,fi,Ni,Fi))
ggplot(realestate_texas)+
  geom_bar(aes(x = sales_cl,),
           stat = "count",
           col = "black",
           fill = "blue4")+
  labs(title = "Distribuzione di frequenze per Sales",
       x = "Classi di Sales",
       y = "Frequenza assoluta")+
  scale_y_continuous(breaks = seq(0,150,25))+
  theme_classic()

Condiderazioni grafico: la maggior parte delle osservazioni si trova nella fascia 100-200, ovvero le vendite sono più frequenti. Le classi 300-400 e 400-500 presentano poche osservazioni, cioè le vendite sono meno comuni

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
gini.index(sales_cl)
## [1] 0.7796441

L’indice di gini è di 0.7796441 il chè sta a significare un livello alto di disuguaglianza nella distribuzione delle vendite tra classi.

#—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

La probabilità che presa una riga a caso restituisca: - beaumont è di 0,25 -> 25% - Luglio è di 0.083 -> 8.3% - Dicembre 2012 è di 0.016 -> 1.6%

#—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")

Per calcolare il prezzo medio è stato convertito il volume in dollari e diviso per il totale delle vendite, tutto espresso in dollari. Per calcolare l’efficienza degli annunci è stato effettuato il rapporto tra vendite tot. e annunci ed espresso in percentuale(%)

#—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 = "skyblue", alpha = 1) +  # Barre per la media
  geom_errorbar(aes(ymin = media - Dev.st., ymax = media + Dev.st.), 
                width = 0.2, color = "red") +  # Barre di errore per la deviazione standard
  labs(title = "Media delle vendite per città con deviazione standard",
       x = "Città",
       y = "Media delle vendite") +
  theme_minimal()

Città con barre più alte hanno vendite medie più elevate(Tyler) Città con barre più basse hanno vendite medie più basse. in questo caso Wichita falls. Barre di errore più lunghe indicano una maggiore variabilità (distribuzione più ampia delle vendite). (bryan college) Barre di errore più corte indicano una maggiore consistenza (le vendite sono più concentrate intorno alla media).(wichida falls)

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 = "Anno",
       y = "Media delle vendite") +
  theme_minimal()

Se la linea aumenta, indica una crescita media delle vendite. Se diminuisce, potrebbe indicare un rallentamento del mercato. Barre più lunghe in certi anni suggeriscono anni con più incertezza o vendite fluttuanti. Barre corte indicano anni in cui il mercato è stato più stabile.

Dal 2011 si registra una crescita delle vendite.

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 = "black", size = 1) +  # Linea della media
  geom_point(color = "black", 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 = "Mese",
       y = "Media delle vendite") +
  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 mostra come cambiano le vendite medie nei mesi dell’anno. È possibile identificare picchi stagionali (vendite più alte nei mesi da marzo ad agosto) o cali stagionali (meno vendite negli altri mesi) Barre più lunghe indicano che le vendite mensili variano molto rispetto alla media. Barre corte suggeriscono un comportamento più uniforme per quel mese.

—PUNTO 8— VISUALIZZAZIONI GGPLOT2

ggplot(realestate_texas) +
  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()

considerazioni: Città con una larga intervallo interquartile hanno una maggiore variabilità nei prezzi. Wichita è una città che ha maggiore variabilità nei prezzi.

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

Considerazioni: Tyler e Bryan rappresentano i centri dinamici con un’elevata attività economica. Beaumont e Wichita Falls riflettono aree con minor appeal o opportunità

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",
      x = "Anni",
      y = "Vendite($)",
      color = "Città"
    )+
    theme_minimal()+
  scale_x_date(breaks= "1 year",
               date_labels = "%Y")

Questo grafico mostra il trend storico delle vendite. L’andamento di Witchita Falls rimane stabile negli anni. Picchi notevoli per Bryan college station e Tyler probabilmente dato dal mercato più dinamico Linee con picchi irregolari possono indicare eventi economici significativi (es. crisi o boom)

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 = "Mese",
    y = "Percentuale vendite",
    fill = "Città"
  ) +
  theme_minimal()

Utile per confrontare città con dimensioni di mercato diverse. Dal grafico si nota che le città Tyler e Bryan- college riescono ad avere piu vendite.

#—PUNTO 9— Tren economico positivo. Dal 2011 le vendite sono cresciute. È possibile identificare picchi stagionali nei mesi da Marzo ad Agosto. Picchi notevoli per Bryan college station e Tyler probabilmente dato dal mercato più dinamico. Witchita Falls è la città più economica e Bryan-college station la più cara.