setwd("C:/Users/Ale/OneDrive/Desktop")
dati <- read.csv("realestate_texas.csv")
str(dati)
dim(dati)
View(dati)

colonne<-colnames(dati)

##Le variabili statistiche del dataset sono: city, year, month, #sales, volume, median_price,listing, months_inventory

#city: variabile qualitativa su scala ordinale #year: variabile qualitativa su scala ordinale #month: variabile qualitativa su scala ordinale #sales: variabile quantitativa discreta su scala di rapporti #volume: variabile quantitativa continua su scala di rapporti #median_price: variabile quantitativa discreta su scala di rapporti #listing: variabile quantitativa discreta su scala di rapporti #months_inventory: variabile quantitativa discreta su scala di rapporti

#Variabili temporali: year, month #possono essere gestite in base alle serie storiche, #ossia in base ai dati che abbiamo a disposizione relativi agli anni e mesi passati

#city: analisi delle vendite per città negli anni precedenti #year: serie storica delle vendite per anno #mounth: serie storica delle vendite per ogni mese dell’anno #sales: totale vendite effettuate per periodo negli anni passati #volume: volume relativo degli immobili venduti #median_price: analisi del mercato immobiliare negli anni #listing: valutazione del rapporto annunci-vendite #months_inventory: tempo necessario per vendere tutte le inserzioni correnti, espresso in mesi

#distribuzione quadrimodale

#lunghezza dataset

N <- dim(dati)[1]

#frequenze:

dati1<-subset(dati,select = c(1:3))
colonne1<-colnames(dati1)



for(col in dati1){
  freq_ass<-table(dati1$col)
  freq_rel<-freq_ass/N
  freq_ass_cum<-cumsum(freq_ass)
  freq_rel_cum<-cumsum(freq_rel)
  distr_freq<-cbind(freq_ass,freq_rel,freq_ass_cum,freq_rel_cum)
}

#calcoliamo gli indici per le variabili quantitative

range<-function(x){
 
  
  return(max(x)-min(x))
}

cv<-function(x){
  return(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.norm = gini/((J-1)/J)
  
  return(gini.norm)
}

funzioni<-c("max","min","mean","median","quantile","range","IQR","var","sd","gini.index","cv")     

for (f in funzioni){

func<-get(f)
  
risultati_sales<-aggregate(dati$sales ~ dati$year + dati$city, data = dati, FUN = func)
risultati_volume<-aggregate(dati$volume ~ dati$year + dati$city, data = dati, FUN = func)
risultati_median_price<-aggregate(dati$median_price ~ dati$year + dati$city, data = dati, FUN = func)
risultati_listing<-aggregate(dati$listing ~ dati$year + dati$city, data = dati, FUN = func)
risultati_months_inventory<-aggregate(dati$months_inventory ~ dati$year + dati$city, data = dati, FUN = func)

print(paste("Risultati con funzione:", f))
print(risultati_sales)
print(risultati_volume)
print(risultati_median_price)
print(risultati_listing)
print(risultati_months_inventory)

}

#la variabilità delle variabili quantitative può essere confrontata #tramite il coefficente di variabilità

#la variabile con maggiore variabilità è volume

#calcoliamo l’indice di asimmetria di Fisher per tutte le variabili #sales:

install.packages("moments")
library("moments")

indice_asimmetria_sales <- skewness(dati$sales)
indice_asimmetria_volume <- skewness(dati$volume)
indice_asimmetria_median_price <- skewness(dati$median_price)
indice_asimmetria_listing <- skewness(dati$listing)
indice_asimmetria_months_inventory <- skewness(dati$months_inventory)
print(indice_asimmetria_sales)
print(indice_asimmetria_volume)
print(indice_asimmetria_median_price)
print(indice_asimmetria_listing)
print(indice_asimmetria_months_inventory)

#la variabile più asimmetrica è volume, e si tratta di una asimmetria positiva

plot(density(dati$volume))

#sono presenti 4 città, e ognuna compare 60 volte nel dataset,quindi la probabilità #che presa una riga a caso compaia la città di Beaumont è 0.25.

#i mesi sono 12, quindi la probabilità di trovare il mese #di luglio è 1/12=0.083

#la probabilità che riporti il mese di dicembre 2012 è 1/240=0.0041

#prezzo medio immobili:

sum(dati$median_price)/N

#totale vendite per mese e città:

tot_sell=aggregate(dati$median_price,by=list(dati$city,dati$month), FUN = sum)
tot_sell

#possiamo misurare l’efficacia degli annunci di vendita dal rapporto tra gli annunci e le vendite:

dati$sales/dati$listing
install.packages("dplyr")
library("dplyr")


grouped_data <- dati %>%
  
  group_by(city) %>%
  
  citta <- group_keys(grouped_data)

citta=unique(citta)

#analisi statistiche:

analisi_media <- aggregate(dati$sales,by=list(dati$city,dati$year), FUN = mean)
analisi_media

analisi_ds <- aggregate(dati$sales,by=list(dati$city,dati$year), FUN = sd)

media_vendite_per_citta <- aggregate(sales ~ city, dati, mean)
media_vendite_per_citta<-as.vector(media_vendite_per_citta)


pie(x=media_vendite_per_citta$sales,labels=media_vendite_per_citta$city)

ds_vendite_per_citta <- aggregate(sales ~ city, dati, sd)
ds_vendite_per_citta<-as.vector(ds_vendite_per_citta)

pie(x=ds_vendite_per_citta$sales,labels=ds_vendite_per_citta$city)
install.packages("ggplot2")
library("ggplot2")

#distribuzione del prezzo mediano tra le città:

prezzo_mediano <- dati %>%
  group_by(year) %>%
  summarise(median_price = mean(median_price, na.rm = TRUE))

min(dati$median_price)
max(dati$median_price)

ggplot(data=prezzo_mediano)+
  geom_boxplot(aes(x=city,y=median_price))+
  scale_y_continuous(breaks = seq(50,200,10))+
  labs(title="prezzo mediano tra le città", x="città",y="prezzo mediano")

#totale vendite per mese e città:

media_vendite_per_anno <- dati %>%
  group_by(year) %>%
  summarise(media_sales = mean(sales, na.rm = TRUE))

ggplot(data=dati)+
  geom_bar(
    aes(
      x = month,
      y = sales,
      fill = city),
    stat ="identity",
    position="dodge")+
  scale_x_continuous(breaks = seq(1,12,1))+
  scale_y_continuous(breaks = seq(0,500,100))+
  theme_classic()

#andamento delle vendite in periodi storici differenti:

media_vendite_per_anno <- dati %>%
  group_by(year) %>%
  summarise(media_sales = mean(sales, na.rm = TRUE))


ggplot(data = media_vendite_per_anno)+
  geom_line(aes(x=year, y = media_sales), col = "lightblue", lwd= 1)+
  geom_point(aes(x=year, y = media_sales), col = "blue", lwd = 2)+
  labs(
    x= "Anni",
    y = "Media vendite annuali",
    title= "Andamento storico delle vendite dal 2010 al 2014"
  )+
  geom_text(aes(x=year, 
                y = media_sales+10, 
                label=round(media_sales,0)))+
  
  scale_x_continuous(breaks = seq(2010,2014,1))

#Sintesi: il mercato immobiliare nel Texas negli ultimi anni è decollato per #Beaumont, Bryan-College Station e Tyler, mentre non si può dire altrettanto per # Wichita Falls. I prezzi medi degli immobili non sono variati di molto; mentre #sono diminuiti gli annunci di vendita, quindi è migliorato il rapporto annunci/vendite. #Un’altra variabile interessante è months inventory; vediamo come in ogni caso si #è ridotto il tempo necessario per vendere le inserzioni.