#Commento al progetto: #https://docs.google.com/document/d/1BTG-z2JVJBzUXnY6IKjZKSZVDbXPAWcAroNiFtnXHPM/edit?usp=sharing
# Caricamento delle librerie necessarie
# install.packages("lubridate")
# install.packages("ggplot2")
# install.packages("moments")
# install.packages("dplyr")
# install.packages("ineq")
# install.packages("knitr")
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(ggplot2)
library(moments)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ineq)
library(knitr)
Importazione del dataset
data <- read.csv("/Users/rugg/Documents/GitHub/Statistica1/realestate_texas.csv")
1. Analisi delle variabili
Analisi preliminare della struttura del dataset
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 ...
Conversione delle variabili temporali per analisi temporali
adeguate
data$date <- as.Date(paste(data$year, data$month, "01", sep = "-"))
3. Identificazione delle variabili con maggiore variabilità e
asimmetria
Calcolo delle variabili con maggiore variabilità e asimmetria
cv <- sapply(data[numeric_vars], function(x) sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE))
max_cv_var <- names(which.max(cv))
skewness_values <- sapply(data[numeric_vars], function(x) skewness(x, na.rm = TRUE))
max_skew_var <- names(which.max(abs(skewness_values)))
cat("Variabile con maggiore variabilità relativa:", max_cv_var, "\n")
## Variabile con maggiore variabilità relativa: volume
cat("Variabile con maggiore asimmetria:", max_skew_var, "\n")
## Variabile con maggiore asimmetria: volume
4. Creazione di classi per una variabile quantitativa
Grafico a barre per la distribuzione delle classi di prezzo
ggplot(data, aes(x = price_class)) +
geom_bar(fill = "lightblue", color = "blue4") +
geom_text(stat = 'count', aes(label = after_stat(count)), vjust = -0.5) +
labs(title = "Distribuzione dei prezzi mediani",
x = "Classi di prezzo",
y = "Frequenza") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

5. Calcolo delle probabilitÃ
Probabilità per determinate condizioni
prob_beaumont <- mean(data$city == "Beaumont", na.rm = TRUE)
prob_july <- mean(data$month == 7, na.rm = TRUE)
prob_dec_2012 <- mean(data$year == 2012 & data$month == 12, na.rm = TRUE)
cat("Probabilità che un immobile si trovi a Beaumont:", prob_beaumont, "\n")
## Probabilità che un immobile si trovi a Beaumont: 0.25
cat("Probabilità che un immobile sia stato venduto a Luglio:", prob_july, "\n")
## Probabilità che un immobile sia stato venduto a Luglio: 0.08333333
cat("Probabilità che un immobile sia stato venduto a Dicembre 2012:", prob_dec_2012, "\n")
## Probabilità che un immobile sia stato venduto a Dicembre 2012: 0.01666667
6. Creazione di nuove variabili
Creazione e visualizzazione delle nuove variabili
data <- data %>%
mutate(
avg_price = volume * 1e6 / sales,
listing_efficiency = sales / listings
)
avg_price_summary <- data.frame(Statistiche = names(summary(data$avg_price)), Valore = as.numeric(summary(data$avg_price)))
listing_efficiency_summary <- data.frame(Statistiche = names(summary(data$listing_efficiency)), Valore = as.numeric(summary(data$listing_efficiency)))
kable(avg_price_summary, caption = "Statistiche descrittive per avg_price")
Statistiche descrittive per avg_price
| Min. |
97010.2 |
| 1st Qu. |
132938.9 |
| Median |
156588.5 |
| Mean |
154320.4 |
| 3rd Qu. |
173915.2 |
| Max. |
213233.9 |
kable(listing_efficiency_summary, caption = "Statistiche descrittive per listing_efficiency")
Statistiche descrittive per listing_efficiency
| Min. |
0.0501403 |
| 1st Qu. |
0.0898017 |
| Median |
0.1096268 |
| Mean |
0.1187449 |
| 3rd Qu. |
0.1349225 |
| Max. |
0.3871278 |
Grafico boxplot per l’efficacia degli annunci per cittÃ
ggplot(data, aes(x = city, y = listing_efficiency)) +
geom_boxplot() +
labs(title = "Efficacia degli annunci per città ", x = "Città ", y = "Efficacia degli annunci (vendite/annunci)")

7. Analisi condizionata
Analisi dei dati condizionata su base città , anno e mese
city_summary <- data %>%
group_by(city) %>%
summarise(
avg_sales = mean(sales, na.rm = TRUE),
sd_sales = sd(sales, na.rm = TRUE),
avg_price = mean(median_price, na.rm = TRUE),
sd_price = sd(median_price, na.rm = TRUE)
)
kable(city_summary, caption = "Analisi condizionata per città ")
Analisi condizionata per cittÃ
| Beaumont |
177.3833 |
41.48395 |
129988.3 |
10104.993 |
| Bryan-College Station |
205.9667 |
84.98374 |
157488.3 |
8852.235 |
| Tyler |
269.7500 |
61.96380 |
141441.7 |
9336.538 |
| Wichita Falls |
116.0667 |
22.15192 |
101743.3 |
11320.034 |
year_summary <- data %>%
group_by(year) %>%
summarise(
avg_sales = mean(sales, na.rm = TRUE),
sd_sales = sd(sales, na.rm = TRUE),
avg_price = mean(median_price, na.rm = TRUE),
sd_price = sd(median_price, na.rm = TRUE)
)
kable(year_summary, caption = "Analisi condizionata per anno")
Analisi condizionata per anno
| 2010 |
168.6667 |
60.53708 |
130191.7 |
21821.76 |
| 2011 |
164.1250 |
63.87042 |
127854.2 |
21317.80 |
| 2012 |
186.1458 |
70.90509 |
130077.1 |
21431.52 |
| 2013 |
211.9167 |
83.99641 |
135722.9 |
21708.08 |
| 2014 |
230.6042 |
95.51490 |
139481.2 |
25625.41 |
month_summary <- data %>%
mutate(month = factor(month, levels = 1:12, labels = month.name)) %>%
group_by(month) %>%
summarise(
avg_sales = mean(sales, na.rm = TRUE),
sd_sales = sd(sales, na.rm = TRUE),
avg_price = mean(median_price, na.rm = TRUE),
sd_price = sd(median_price, na.rm = TRUE)
)
kable(month_summary, caption = "Analisi condizionata per mese")
Analisi condizionata per mese
| January |
127.40 |
43.38372 |
124250 |
25151.28 |
| February |
140.85 |
51.06783 |
130075 |
22822.59 |
| March |
189.45 |
59.17812 |
127415 |
23442.03 |
| April |
211.70 |
65.40489 |
131490 |
21458.40 |
| May |
238.85 |
83.11582 |
134485 |
18796.26 |
| June |
243.55 |
94.99832 |
137620 |
19231.02 |
| July |
235.75 |
96.27421 |
134750 |
21944.78 |
| August |
231.45 |
79.22883 |
136675 |
22488.38 |
| September |
182.35 |
72.51807 |
134040 |
24344.10 |
| October |
179.90 |
74.95395 |
133480 |
26358.07 |
| November |
156.85 |
55.46670 |
134305 |
24691.47 |
| December |
169.40 |
60.74658 |
133400 |
22809.76 |
8. Creazione di visualizzazioni con ggplot2
Grafico a barre per confrontare il totale delle vendite per mese e
cittÃ
data %>%
group_by(city, month) %>%
summarise(total_sales = sum(sales, na.rm = TRUE)) %>%
mutate(month = factor(month, levels = 1:12, labels = month.name)) %>%
ggplot(aes(x = factor(month), y = total_sales, fill = city)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Totale delle vendite per mese e città ",
x = "Mese",
y = "Totale vendite") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
## `summarise()` has grouped output by 'city'. You can override using the
## `.groups` argument.

Line chart per confrontare l’andamento delle vendite nel tempo per
cittÃ
ggplot(data, aes(x = date, y = sales, color = city)) +
geom_line() +
labs(title = "Andamento delle vendite nel tempo per città ",
x = "Data",
y = "Numero di vendite") +
theme(legend.position = "bottom")
