# Načítanie balíkov
library(dplyr)
library(ggplot2)
library(broom)
library(gt)
library(corrplot)

# Načítanie dát
data("USArrests")
head(USArrests)

#  Príprava dát 
USArrests$UrbanGroup <- ifelse(USArrests$UrbanPop > median(USArrests$UrbanPop),
                               "HighUrban", "LowUrban")

# Korelačná tabuľka 
cor_matrix <- round(cor(USArrests[,1:4]), 2)

# Korelačná tabuľka (bielo-červený štýl)
cor_matrix %>%
  as.data.frame() %>%
  tibble::rownames_to_column("Variable") %>%
  gt() %>%
  tab_header(title = "Korelačná matica datasetu USArrests") %>%
  data_color(
    columns = -Variable,
    colors = scales::col_numeric(
      palette = c("white", "red"),
      domain = c(0, 1)
    )
  ) %>%
  tab_style(style = cell_text(weight = "bold"), locations = cells_column_labels())
Korelačná matica datasetu USArrests
Variable Murder Assault UrbanPop Rape
Murder 1.00 0.80 0.07 0.56
Assault 0.80 1.00 0.26 0.67
UrbanPop 0.07 0.26 1.00 0.41
Rape 0.56 0.67 0.41 1.00

# Voliteľná vizualizácia
corrplot(cor_matrix, method = "color", addCoef.col = "black",
         tl.col = "black", tl.srt = 45,
         col = colorRampPalette(c("white","red"))(200),
         title = "Korelácie medzi premennými",
         mar = c(0,0,2,0))


#  T-test: Murder ~ UrbanGroup
t_test_result <- t.test(Murder ~ UrbanGroup, data = USArrests)
t_table <- broom::tidy(t_test_result)

t_table %>%
  gt() %>%
  tab_header(title = "T-test: Porovnanie vrážd podľa urbanizácie") %>%
  fmt_number(columns = where(is.numeric), decimals = 3) %>%
  data_color(
    columns = c(statistic, estimate1, estimate2),
    colors = scales::col_numeric(
      palette = c("white", "red"),
      domain = range(t_table$statistic, na.rm = TRUE)
    )
  )
T-test: Porovnanie vrážd podľa urbanizácie
estimate estimate1 estimate2 statistic p.value parameter conf.low conf.high method alternative
0.456 8.025 7.569 0.372 0.712 44.071 −2.013 2.925 Welch Two Sample t-test two.sided

# ANOVA: Rape ~ UrbanGroup
anova_result <- aov(Rape ~ UrbanGroup, data = USArrests)
anova_table <- broom::tidy(anova_result)

anova_table %>%
  gt() %>%
  tab_header(title = "ANOVA: Porovnanie miery znásilnení podľa urbanizácie") %>%
  fmt_number(columns = where(is.numeric), decimals = 3) %>%
  data_color(
    columns = c(sumsq, meansq, statistic),
    colors = scales::col_numeric(
      palette = c("white", "red"),
      domain = range(anova_table$statistic, na.rm = TRUE)
    )
  )
ANOVA: Porovnanie miery znásilnení podľa urbanizácie
term df sumsq meansq statistic p.value
UrbanGroup 1.000 844.017 844.017 11.727 0.001
Residuals 48.000 3,454.712 71.973 NA NA

#  Lineárna regresia
lm_result <- lm(Murder ~ UrbanPop + Assault + Rape, data = USArrests)
lm_table <- broom::tidy(lm_result)

lm_table %>%
  gt() %>%
  tab_header(title = "Lineárna regresia: Predikcia miery vrážd") %>%
  fmt_number(columns = where(is.numeric), decimals = 3) %>%
  data_color(
    columns = c(estimate, statistic),
    colors = scales::col_numeric(
      palette = c("white", "red"),
      domain = range(lm_table$statistic, na.rm = TRUE)
    )
  )
Lineárna regresia: Predikcia miery vrážd
term estimate std.error statistic p.value
(Intercept) 3.277 1.738 1.885 0.066
UrbanPop −0.055 0.028 −1.962 0.056
Assault 0.040 0.006 6.729 0.000
Rape 0.061 0.056 1.102 0.276


summary_info <- broom::glance(lm_result)
summary_info %>%
  gt() %>%
  tab_header(title = "Zhrnutie regresného modelu") %>%
  fmt_number(columns = where(is.numeric), decimals = 3) %>%
  data_color(
    columns = everything(),
    colors = scales::col_numeric(
      palette = c("white", "red"),
      domain = range(summary_info$r.squared, na.rm = TRUE)
    )
  )
Zhrnutie regresného modelu
r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual nobs
0.672 0.651 2.574 31.424 0.000 3.000 −116.140 242.281 251.841 304.832 46.000 50.000

# Boxplot pre ANOVA
ggplot(USArrests, aes(x = UrbanGroup, y = Rape, fill = UrbanGroup)) +
  geom_boxplot(color = "black") +
  scale_fill_manual(values = c("white", "red")) +
  theme_minimal(base_size = 14) +
  labs(title = "Boxplot: Miera znásilnení podľa urbanizácie",
       x = "Urbanizačná skupina", y = "Rape")


# Scatterplot pre regresiu
ggplot(USArrests, aes(x = Assault, y = Murder, color = UrbanPop)) +
  geom_point(size = 3) +
  scale_color_gradient(low = "white", high = "red") +
  theme_minimal(base_size = 14) +
  labs(title = "Scatterplot: Vzťah medzi lúpežami, vraždami a urbanizáciou",
       x = "Assault", y = "Murder")

Závery testov z datasetu:

Korelácie Murder ↔︎ Assault = 0.8 Silná väzba medzi lúpežami a vraždami

T-test p = 0.712 Urbanizácia nemá významný vplyv na vraždy

ANOVA p = 0.001 Urbanizácia má vplyv na mieru znásilnení

Regresia p(modelu) = 0.000, R² = 0.67 Model je silný, hlavný faktor: Assault

Vizualizácie Murder ~ Assault lineárny trend Potvrdzuje závery testov

LS0tCnRpdGxlOiAiUHLDoWNhIHMgw7pkYWptaTIiCmF1dGhvcjogIlRlcsOpemlhIFJ5cMOha292w6EgcyBwb3XFvml0w61tIGRvc3R1cG7DvWNoIGvDs2RvdiBhIENIQVQgR1BUIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7cn0KIyBOYcSNw610YW5pZSBiYWzDrWtvdgpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoYnJvb20pCmxpYnJhcnkoZ3QpCmxpYnJhcnkoY29ycnBsb3QpCgojIE5hxI3DrXRhbmllIGTDoXQKZGF0YSgiVVNBcnJlc3RzIikKaGVhZChVU0FycmVzdHMpCgojICBQcsOtcHJhdmEgZMOhdCAKVVNBcnJlc3RzJFVyYmFuR3JvdXAgPC0gaWZlbHNlKFVTQXJyZXN0cyRVcmJhblBvcCA+IG1lZGlhbihVU0FycmVzdHMkVXJiYW5Qb3ApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhpZ2hVcmJhbiIsICJMb3dVcmJhbiIpCgojIEtvcmVsYcSNbsOhIHRhYnXEvmthIApjb3JfbWF0cml4IDwtIHJvdW5kKGNvcihVU0FycmVzdHNbLDE6NF0pLCAyKQoKIyBLb3JlbGHEjW7DoSB0YWJ1xL5rYSAoYmllbG8txI1lcnZlbsO9IMWhdMO9bCkKY29yX21hdHJpeCAlPiUKICBhcy5kYXRhLmZyYW1lKCkgJT4lCiAgdGliYmxlOjpyb3duYW1lc190b19jb2x1bW4oIlZhcmlhYmxlIikgJT4lCiAgZ3QoKSAlPiUKICB0YWJfaGVhZGVyKHRpdGxlID0gIktvcmVsYcSNbsOhIG1hdGljYSBkYXRhc2V0dSBVU0FycmVzdHMiKSAlPiUKICBkYXRhX2NvbG9yKAogICAgY29sdW1ucyA9IC1WYXJpYWJsZSwKICAgIGNvbG9ycyA9IHNjYWxlczo6Y29sX251bWVyaWMoCiAgICAgIHBhbGV0dGUgPSBjKCJ3aGl0ZSIsICJyZWQiKSwKICAgICAgZG9tYWluID0gYygwLCAxKQogICAgKQogICkgJT4lCiAgdGFiX3N0eWxlKHN0eWxlID0gY2VsbF90ZXh0KHdlaWdodCA9ICJib2xkIiksIGxvY2F0aW9ucyA9IGNlbGxzX2NvbHVtbl9sYWJlbHMoKSkKCiMgVm9saXRlxL5uw6Egdml6dWFsaXrDoWNpYQpjb3JycGxvdChjb3JfbWF0cml4LCBtZXRob2QgPSAiY29sb3IiLCBhZGRDb2VmLmNvbCA9ICJibGFjayIsCiAgICAgICAgIHRsLmNvbCA9ICJibGFjayIsIHRsLnNydCA9IDQ1LAogICAgICAgICBjb2wgPSBjb2xvclJhbXBQYWxldHRlKGMoIndoaXRlIiwicmVkIikpKDIwMCksCiAgICAgICAgIHRpdGxlID0gIktvcmVsw6FjaWUgbWVkemkgcHJlbWVubsO9bWkiLAogICAgICAgICBtYXIgPSBjKDAsMCwyLDApKQoKIyAgVC10ZXN0OiBNdXJkZXIgfiBVcmJhbkdyb3VwCnRfdGVzdF9yZXN1bHQgPC0gdC50ZXN0KE11cmRlciB+IFVyYmFuR3JvdXAsIGRhdGEgPSBVU0FycmVzdHMpCnRfdGFibGUgPC0gYnJvb206OnRpZHkodF90ZXN0X3Jlc3VsdCkKCnRfdGFibGUgJT4lCiAgZ3QoKSAlPiUKICB0YWJfaGVhZGVyKHRpdGxlID0gIlQtdGVzdDogUG9yb3ZuYW5pZSB2csOhxb5kIHBvZMS+YSB1cmJhbml6w6FjaWUiKSAlPiUKICBmbXRfbnVtYmVyKGNvbHVtbnMgPSB3aGVyZShpcy5udW1lcmljKSwgZGVjaW1hbHMgPSAzKSAlPiUKICBkYXRhX2NvbG9yKAogICAgY29sdW1ucyA9IGMoc3RhdGlzdGljLCBlc3RpbWF0ZTEsIGVzdGltYXRlMiksCiAgICBjb2xvcnMgPSBzY2FsZXM6OmNvbF9udW1lcmljKAogICAgICBwYWxldHRlID0gYygid2hpdGUiLCAicmVkIiksCiAgICAgIGRvbWFpbiA9IHJhbmdlKHRfdGFibGUkc3RhdGlzdGljLCBuYS5ybSA9IFRSVUUpCiAgICApCiAgKQoKIyBBTk9WQTogUmFwZSB+IFVyYmFuR3JvdXAKYW5vdmFfcmVzdWx0IDwtIGFvdihSYXBlIH4gVXJiYW5Hcm91cCwgZGF0YSA9IFVTQXJyZXN0cykKYW5vdmFfdGFibGUgPC0gYnJvb206OnRpZHkoYW5vdmFfcmVzdWx0KQoKYW5vdmFfdGFibGUgJT4lCiAgZ3QoKSAlPiUKICB0YWJfaGVhZGVyKHRpdGxlID0gIkFOT1ZBOiBQb3Jvdm5hbmllIG1pZXJ5IHpuw6FzaWxuZW7DrSBwb2TEvmEgdXJiYW5pesOhY2llIikgJT4lCiAgZm10X251bWJlcihjb2x1bW5zID0gd2hlcmUoaXMubnVtZXJpYyksIGRlY2ltYWxzID0gMykgJT4lCiAgZGF0YV9jb2xvcigKICAgIGNvbHVtbnMgPSBjKHN1bXNxLCBtZWFuc3EsIHN0YXRpc3RpYyksCiAgICBjb2xvcnMgPSBzY2FsZXM6OmNvbF9udW1lcmljKAogICAgICBwYWxldHRlID0gYygid2hpdGUiLCAicmVkIiksCiAgICAgIGRvbWFpbiA9IHJhbmdlKGFub3ZhX3RhYmxlJHN0YXRpc3RpYywgbmEucm0gPSBUUlVFKQogICAgKQogICkKCiMgIExpbmXDoXJuYSByZWdyZXNpYQpsbV9yZXN1bHQgPC0gbG0oTXVyZGVyIH4gVXJiYW5Qb3AgKyBBc3NhdWx0ICsgUmFwZSwgZGF0YSA9IFVTQXJyZXN0cykKbG1fdGFibGUgPC0gYnJvb206OnRpZHkobG1fcmVzdWx0KQoKbG1fdGFibGUgJT4lCiAgZ3QoKSAlPiUKICB0YWJfaGVhZGVyKHRpdGxlID0gIkxpbmXDoXJuYSByZWdyZXNpYTogUHJlZGlrY2lhIG1pZXJ5IHZyw6HFvmQiKSAlPiUKICBmbXRfbnVtYmVyKGNvbHVtbnMgPSB3aGVyZShpcy5udW1lcmljKSwgZGVjaW1hbHMgPSAzKSAlPiUKICBkYXRhX2NvbG9yKAogICAgY29sdW1ucyA9IGMoZXN0aW1hdGUsIHN0YXRpc3RpYyksCiAgICBjb2xvcnMgPSBzY2FsZXM6OmNvbF9udW1lcmljKAogICAgICBwYWxldHRlID0gYygid2hpdGUiLCAicmVkIiksCiAgICAgIGRvbWFpbiA9IHJhbmdlKGxtX3RhYmxlJHN0YXRpc3RpYywgbmEucm0gPSBUUlVFKQogICAgKQogICkKCgpzdW1tYXJ5X2luZm8gPC0gYnJvb206OmdsYW5jZShsbV9yZXN1bHQpCnN1bW1hcnlfaW5mbyAlPiUKICBndCgpICU+JQogIHRhYl9oZWFkZXIodGl0bGUgPSAiWmhybnV0aWUgcmVncmVzbsOpaG8gbW9kZWx1IikgJT4lCiAgZm10X251bWJlcihjb2x1bW5zID0gd2hlcmUoaXMubnVtZXJpYyksIGRlY2ltYWxzID0gMykgJT4lCiAgZGF0YV9jb2xvcigKICAgIGNvbHVtbnMgPSBldmVyeXRoaW5nKCksCiAgICBjb2xvcnMgPSBzY2FsZXM6OmNvbF9udW1lcmljKAogICAgICBwYWxldHRlID0gYygid2hpdGUiLCAicmVkIiksCiAgICAgIGRvbWFpbiA9IHJhbmdlKHN1bW1hcnlfaW5mbyRyLnNxdWFyZWQsIG5hLnJtID0gVFJVRSkKICAgICkKICApCgojIEJveHBsb3QgcHJlIEFOT1ZBCmdncGxvdChVU0FycmVzdHMsIGFlcyh4ID0gVXJiYW5Hcm91cCwgeSA9IFJhcGUsIGZpbGwgPSBVcmJhbkdyb3VwKSkgKwogIGdlb21fYm94cGxvdChjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJ3aGl0ZSIsICJyZWQiKSkgKwogIHRoZW1lX21pbmltYWwoYmFzZV9zaXplID0gMTQpICsKICBsYWJzKHRpdGxlID0gIkJveHBsb3Q6IE1pZXJhIHpuw6FzaWxuZW7DrSBwb2TEvmEgdXJiYW5pesOhY2llIiwKICAgICAgIHggPSAiVXJiYW5pemHEjW7DoSBza3VwaW5hIiwgeSA9ICJSYXBlIikKCiMgU2NhdHRlcnBsb3QgcHJlIHJlZ3Jlc2l1CmdncGxvdChVU0FycmVzdHMsIGFlcyh4ID0gQXNzYXVsdCwgeSA9IE11cmRlciwgY29sb3IgPSBVcmJhblBvcCkpICsKICBnZW9tX3BvaW50KHNpemUgPSAzKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQobG93ID0gIndoaXRlIiwgaGlnaCA9ICJyZWQiKSArCiAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxNCkgKwogIGxhYnModGl0bGUgPSAiU2NhdHRlcnBsb3Q6IFZ6xaVhaCBtZWR6aSBsw7pwZcW+YW1pLCB2cmHFvmRhbWkgYSB1cmJhbml6w6FjaW91IiwKICAgICAgIHggPSAiQXNzYXVsdCIsIHkgPSAiTXVyZGVyIikKCmBgYApaw6F2ZXJ5IHRlc3RvdiB6IGRhdGFzZXR1OiAKCioqS29yZWzDoWNpZSoqCU11cmRlciDihpQgQXNzYXVsdCA9IDAuOAlTaWxuw6EgdsOkemJhIG1lZHppIGzDunBlxb5hbWkgYSB2cmHFvmRhbWkKCioqVC10ZXN0KioJcCA9IDAuNzEyCVVyYmFuaXrDoWNpYSBuZW3DoSB2w716bmFtbsO9IHZwbHl2IG5hIHZyYcW+ZHkKCioqQU5PVkEqKglwID0gMC4wMDEJVXJiYW5pesOhY2lhIG3DoSB2cGx5diBuYSBtaWVydSB6bsOhc2lsbmVuw60KCioqUmVncmVzaWEJcChtb2RlbHUpKiogPSAwLjAwMCwgUsKyID0gMC42NwlNb2RlbCBqZSBzaWxuw70sIGhsYXZuw70gZmFrdG9yOiBBc3NhdWx0CgoqKlZpenVhbGl6w6FjaWUqKglNdXJkZXIgfiBBc3NhdWx0IGxpbmXDoXJueSB0cmVuZAlQb3R2cmR6dWplIHrDoXZlcnkgdGVzdG92CgoK