library(dplyr)
library(ggplot2)
# zoradíme podľa populácie v roku 2025 a vyberieme top 5
top5 <- udaje %>%
arrange(desc(Population.2025)) %>%
slice_head(n = 5)
# vykreslenie grafu
ggplot(top5, aes(x = reorder(Country..or.dependency., Population.2025),
y = Population.2025,
fill = Country..or.dependency.)) +
geom_col() +
coord_flip() + # otočí osi, aby sa krajiny lepšie čítali
labs(
title = "5 krajín s najväčšou populáciou (2025)",
x = "Krajina",
y = "Počet obyvateľov (v miliónoch)"
) +
theme_minimal() +
theme(legend.position = "none")library(ggplot2)
library(dplyr)
# zoradíme a vyberieme top 5 krajín
top5 <- udaje %>%
arrange(desc(Population.2025)) %>%
slice_head(n = 5)
# vytvorenie pekného ggplot2 grafu
ggplot(top5, aes(
x = reorder(Country..or.dependency., Population.2025),
y = Population.2025,
fill = Country..or.dependency.
)) +
geom_bar(stat = "identity", width = 0.6, show.legend = FALSE) +
geom_text(aes(label = round(Population.2025, 1)),
hjust = -0.1, size = 4, color = "black") +
coord_flip() +
labs(
title = "Top 5 krajín s najväčšou populáciou (2025)",
x = "Krajina",
y = "Populácia (v miliónoch)"
) +
theme_minimal(base_size = 14) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
axis.text.y = element_text(face = "bold")
)Výber a následné triedenie
library(dplyr)
udaje_2025 <- udaje %>%
select(Country..or.dependency., Population.2025)
head(udaje_2025)library(tidyr)
library(dplyr)
udaje_long <- udaje %>%
pivot_longer(
cols = starts_with("Population."),
names_to = "Year",
values_to = "Population"
) %>%
mutate(
Year = as.numeric(gsub("Population\\.", "", Year))
)
head(udaje_long)library(dplyr)
library(ggplot2)
udaje %>%
filter(Country..or.dependency. %in% c("China","India","United States")) %>%
ggplot(aes(x = reorder(Country..or.dependency., Population.2025),
y = Population.2025,
fill = Country..or.dependency.)) +
geom_col(width = 0.6, show.legend = FALSE) +
geom_text(aes(label = format(Population.2025, big.mark = " ", scientific = FALSE)),
hjust = -0.1, size = 4, color = "black") +
coord_flip() +
labs(title = "Populácia v roku 2025 (vybrané krajiny)",
x = "Krajina",
y = "Počet obyvateľov") +
theme_minimal(base_size = 13)library(ggplot2)
library(dplyr)
# vyber 5 náhodných krajín
set.seed(123) # pre opakovateľnosť výsledku
vyber <- sample(unique(udaje$Country..or.dependency.), 5)
# filtrovanie datasetu len na tieto krajiny
udaje_vyber <- udaje %>%
filter(Country..or.dependency. %in% vyber)
# boxplot hustoty obyvateľstva pre vybrané krajiny
ggplot(udaje_vyber, aes(x = Country..or.dependency., y = Density..P.Km..)) +
geom_boxplot(fill = "lightblue", color = "darkblue") +
theme_minimal() +
labs(
title = "Hustota obyvateľstva v 5 náhodne vybraných krajinách",
x = "Krajina",
y = "Hustota obyvateľstva (obyv./km²)"
)library(dplyr)
library(knitr)
# Základné štatistiky pre Land Area
land.stats <- udaje %>%
summarise(
n = n(),
mean = mean(Land.Area..Km.., na.rm = TRUE),
sd = sd(Land.Area..Km.., na.rm = TRUE),
min = min(Land.Area..Km.., na.rm = TRUE),
q25 = quantile(Land.Area..Km.., 0.25, na.rm = TRUE),
median = median(Land.Area..Km.., na.rm = TRUE),
q75 = quantile(Land.Area..Km.., 0.75, na.rm = TRUE),
max = max(Land.Area..Km.., na.rm = TRUE)
)
# Výstup tabuľky s formátovaním
kable(
land.stats %>%
mutate(across(where(is.numeric), ~ format(., big.mark = " "))),
caption = "Základné štatistiky rozlohy krajín (v km²)"
)alebo krajšie tabuľky s pomocou .kableExtra.:
library(dplyr)
library(knitr)
library(kableExtra)
# Výpočet základných štatistík pre Land Area
land.stats <- udaje %>%
summarise(
n = n(),
mean = mean(Land.Area..Km.., na.rm = TRUE),
sd = sd(Land.Area..Km.., na.rm = TRUE),
min = min(Land.Area..Km.., na.rm = TRUE),
q25 = quantile(Land.Area..Km.., 0.25, na.rm = TRUE),
median = median(Land.Area..Km.., na.rm = TRUE),
q75 = quantile(Land.Area..Km.., 0.75, na.rm = TRUE),
max = max(Land.Area..Km.., na.rm = TRUE)
)
# Vytvorenie štýlovanej tabuľky
land.stats %>%
mutate(across(where(is.numeric), ~ format(., big.mark = " "))) %>%
kable(
digits = 2,
caption = "Základné štatistiky rozlohy krajín (Land Area, km²)"
) %>%
kable_styling(
full_width = FALSE,
bootstrap_options = c("striped", "hover", "condensed")
) %>%
row_spec(0, bold = TRUE, background = "#f2f2f2") %>%
add_header_above(c(" " = 1, "Land Area Statistics" = 7))#Vytvoríme hypotézu
#H₀ (nulová hypotéza): priemerná hustota obyvateľstva v krajinách s malou a veľkou rozlohou je rovnaká
#H₁ (alternatívna hypotéza): priemerná hustota obyvateľstva sa líši medzi krajinami s malou a veľkou rozlohou
# vytvoríme dve skupiny krajín: malé a veľké podľa mediánu rozlohy
median_area <- median(udaje$Land.Area..Km.., na.rm = TRUE)
male_krajiny <- udaje %>%
filter(Land.Area..Km.. <= median_area) %>%
pull(Density..P.Km..)
velke_krajiny <- udaje %>%
filter(Land.Area..Km.. > median_area) %>%
pull(Density..P.Km..)
# t-test pre rozdiel priemerov hustoty obyvateľstva
t.test.result <- t.test(male_krajiny, velke_krajiny)
# výpis výsledku
print(t.test.result)Zhrnutie:
Výsledok je štatisticky významný.
Malé krajiny majú v priemere vyššiu hustotu obyvateľstva.
T-test aj interpretácia sú urobené správne.
library(dplyr)
# rozdelenie krajín do 3 kategórií podľa rozlohy (tercily)
udaje_anova <- udaje %>%
mutate(
Velkost_krajiny = cut(
Land.Area..Km..,
breaks = quantile(Land.Area..Km.., probs = c(0, 1/3, 2/3, 1), na.rm = TRUE),
include.lowest = TRUE,
labels = c("Malá", "Stredná", "Veľká")
)
)
# vykonanie ANOVA testu
anova.result <- aov(Density..P.Km.. ~ Velkost_krajiny, data = udaje_anova)
# výpis výsledkov
summary(anova.result)Keďže p-hodnota (0.00405) < 0.05, zamietame nulovú hypotézu (H₀). To znamená, že existuje štatisticky významný rozdiel v priemernej hustote obyvateľstva medzi skupinami krajín rôznej veľkosti (malé, stredné, veľké).
#Skúsme analyzovať, ako rozloha krajiny ovplyvňuje hustotu obyvateľstva.
#H₀: Medzi rozlohou a hustotou obyvateľstva nie je lineárny vzťah.
#H₁: Hustota obyvateľstva sa mení v závislosti od rozlohy krajiny.
# lineárna regresia: hustota ~ rozloha
model <- lm(Density..P.Km.. ~ Land.Area..Km.., data = udaje)
# výpis výsledkov
summary(model)Na základe výsledkov lineárnej regresie (F = 0,7855; p = 0,3764) môžeme konštatovať, že neexistuje štatisticky významný lineárny vzťah medzi rozlohou krajiny a hustotou obyvateľstva. Hodnota koeficientu determinácie (R² = 0,0034) naznačuje, že rozloha vysvetľuje iba zanedbateľnú časť variability hustoty obyvateľstva.
# install.packages(c("broom", "kableExtra", "dplyr", "stringr"))
library(broom)
library(dplyr)
library(kableExtra)
library(stringr)
# 1️⃣ Vytvorenie lineárneho modelu
model <- lm(Density..P.Km.. ~ Land.Area..Km.. + Population.2025, data = udaje)
# 2️⃣ Tabuľka koeficientov s významnosťou
coef.tbl <- tidy(model, conf.int = TRUE) %>%
mutate(
term = recode(term,
"(Intercept)" = "Intercept",
"Land.Area..Km2." = "Land Area (km²)",
"Population.2025" = "Population 2025"
),
stars = case_when(
p.value < 0.001 ~ "***",
p.value < 0.01 ~ "**",
p.value < 0.05 ~ "*",
p.value < 0.1 ~ ".",
TRUE ~ ""
)
) %>%
transmute(
Term = term,
Estimate = round(estimate, 4),
`Std. Error` = round(std.error, 4),
`t value` = round(statistic, 3),
`p value` = round(p.value, 4),
`95% CI` = str_c("[", round(conf.low, 3), ", ", round(conf.high, 3), "]"),
Sig = stars
)
# 3️⃣ Zobrazenie tabuľky koeficientov
coef.tbl %>%
kable(
digits = 3,
caption = "OLS Regression Coefficients (Density ~ Land Area + Population)"
) %>%
kable_styling(
full_width = FALSE,
bootstrap_options = c("striped", "hover", "condensed")
) %>%
column_spec(1, bold = TRUE) %>%
row_spec(0, bold = TRUE, background = "#f2f2f2") %>%
footnote(
general = "Signif. codes: *** p<0.001, ** p<0.01, * p<0.05, . p<0.1",
threeparttable = TRUE
)
# 4️⃣ Štatistiky kvality modelu
fit.tbl <- glance(model) %>%
transmute(
`R-squared` = round(r.squared, 4),
`Adj. R-squared` = round(adj.r.squared, 4),
`F-statistic` = round(statistic, 3),
`F p-value` = round(p.value, 4),
`AIC` = round(AIC, 2),
`BIC` = round(BIC, 2),
`Num. obs.` = nobs
)
fit.tbl %>%
kable(
digits = 3,
caption = "Model Fit Statistics"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("condensed"))
#Na základe výsledkov lineárnej regresie môžeme konštatovať, že model nevysvetľuje variabilitu hustoty obyvateľstva prostredníctvom rozlohy krajiny a počtu obyvateľov. Hodnota koeficientu determinácie (R² = 0,003) je veľmi nízka a p-hodnota (p = 0,677) naznačuje, že vzťah medzi premennými nie je štatisticky významný. Celkovo teda model nepreukázal žiadny významný vplyv rozlohy ani populácie na hustotu obyvateľstva.##Heatmap
# install.packages(c("ggplot2", "reshape2", "dplyr"))
library(ggplot2)
library(reshape2)
library(dplyr)
# 1️⃣ Výber len numerických premenných
num_data <- udaje %>%
select_if(is.numeric)
# 2️⃣ Výpočet korelačnej matice
corr_matrix <- cor(num_data, use = "complete.obs")
# 3️⃣ Transformácia pre ggplot (dlhý formát)
corr_melt <- melt(corr_matrix)
# 4️⃣ Vykreslenie heatmapy
ggplot(corr_melt, aes(x = Var1, y = Var2, fill = value)) +
geom_tile(color = "white") +
scale_fill_gradient2(
low = "darkred",
mid = "white",
high = "darkblue",
midpoint = 0,
limit = c(-1, 1),
name = "Korelácia"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1, size = 9),
axis.text.y = element_text(size = 9)
) +
labs(
title = "Korelačná matica numerických premenných",
x = "",
y = ""
)Na základe korelačnej matice môžeme pozorovať, že medzi jednotlivými numerickými premennými existujú viaceré vzťahy rôznej intenzity. Najsilnejšia pozitívna korelácia sa prejavuje medzi počtom obyvateľov (Population 2025) a rozlohou krajiny (Land Area), čo je logické – väčšie krajiny mávajú spravidla aj viac obyvateľov. Naopak, negatívna korelácia sa objavuje medzi mediánovým vekom (Median Age) a mierou plodnosti (Fertility Rate), čo naznačuje, že krajiny s vyšším priemerným vekom populácie majú nižšiu pôrodnosť. Ostatné vzťahy medzi premennými sú len slabé až mierne, čo naznačuje, že väčšina ukazovateľov je medzi sebou relatívne nezávislá.