📊 Descriptive Statistics Table
numeric_data <- dplyr::select(uk_tourism, where(is.numeric))
desc_stats <- psych::describe(numeric_data)
desc_stats %>%
dplyr::select(mean, sd, min, max, skew, kurtosis) %>%
round(2) %>%
knitr::kable("html", caption = "Descriptive Statistics of UK Tourism Data") %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
Descriptive Statistics of UK Tourism Data
|
|
mean
|
sd
|
min
|
max
|
skew
|
kurtosis
|
|
Year
|
2016.50
|
4.18
|
2010.00
|
2023.00
|
0.00
|
-1.46
|
|
Total_Visitors
|
30.09
|
10.23
|
6.20
|
40.90
|
-1.17
|
0.18
|
|
Visitor_Expenditure
|
18.72
|
6.74
|
3.90
|
28.40
|
-0.93
|
-0.10
|
|
Expenditure_Per_Visitor
|
618.52
|
42.10
|
558.56
|
707.24
|
0.67
|
-0.31
|
|
Exchange_Rate_USD
|
1.43
|
0.14
|
1.24
|
1.65
|
0.21
|
-1.77
|
|
Exchange_Rate_EUR
|
1.19
|
0.07
|
1.13
|
1.38
|
1.65
|
2.26
|
|
Purpose_Holiday
|
11.66
|
4.06
|
2.00
|
16.00
|
-1.27
|
0.37
|
|
Purpose_Business
|
6.63
|
2.80
|
0.50
|
9.20
|
-1.10
|
-0.32
|
|
Purpose_VFR
|
9.42
|
2.61
|
3.30
|
12.70
|
-1.03
|
0.19
|
|
Purpose_Other
|
2.38
|
0.98
|
0.40
|
3.60
|
-0.56
|
-0.81
|
|
Brexit_Period
|
0.57
|
0.51
|
0.00
|
1.00
|
-0.26
|
-2.07
|
|
COVID_Period
|
0.14
|
0.36
|
0.00
|
1.00
|
1.83
|
1.45
|
📈 Total Visitors Over Time
ggplot(uk_tourism, aes(x = Year, y = Total_Visitors)) +
geom_line(color = "blue", size = 1) +
geom_point() +
labs(title = "Total Visitors to the UK (2010–2023)",
x = "Year", y = "Total Visitors (millions)") +
theme_minimal()
## 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.

💷 Visitor Expenditure Over Time
ggplot(uk_tourism, aes(x = Year, y = Visitor_Expenditure)) +
geom_line(color = "darkgreen", size = 1) +
geom_point() +
labs(title = "Visitor Expenditure in the UK (2010–2023)",
x = "Year", y = "Expenditure (£ billion)") +
theme_minimal()

🌍 Exchange Rate Trends
uk_tourism %>%
pivot_longer(cols = c(Exchange_Rate_USD, Exchange_Rate_EUR),
names_to = "Currency", values_to = "Rate") %>%
ggplot(aes(x = Year, y = Rate, color = Currency)) +
geom_line(size = 1.2) +
geom_point() +
labs(title = "Exchange Rate Trends (USD & EUR)",
x = "Year", y = "Exchange Rate") +
theme_minimal()

🎯 Purpose of Visit Trends
uk_tourism %>%
pivot_longer(cols = c(Purpose_Holiday, Purpose_Business, Purpose_VFR, Purpose_Other),
names_to = "Purpose", values_to = "Visitors") %>%
mutate(Purpose = gsub("Purpose_", "", Purpose)) %>%
ggplot(aes(x = Year, y = Visitors, color = Purpose)) +
geom_line(size = 1.2) +
geom_point() +
labs(title = "Trends by Purpose of Visit",
x = "Year", y = "Visitors (millions)") +
theme_minimal()

📦 Travel Restriction Impact
ggplot(uk_tourism, aes(x = Travel_Restrictions, y = Total_Visitors, fill = Travel_Restrictions)) +
geom_boxplot() +
labs(title = "Impact of Travel Restrictions on Visitor Numbers",
x = "Travel Restrictions", y = "Total Visitors") +
theme_minimal()
