library(tidyverse) # Načteme si tato data df <- read_csv2("https://is.muni.cz/el/fss/podzim2024/PSYb2320/um/datasets/personality_all.csv", na = c("", "-99", "0")) df %>% distinct(gender, class) # Jak bychom proměnnou gender převedli na faktor? # Převod gender na factor df <- df %>% mutate( ) # Jak bychom převrátili reverzní položky bez / s přepsáním původních sloupců? # Máme k dispozici vektor s názvy reverzních položek reversed_items <- c( str_c("nfc_", 10:16), str_c("ipip_", str_pad(nums, width = 2, pad = 0)) ) # A práci nám usnadňuje to, že všechny položky měly pětibodovou odpovědní škálu df_rev <- df %>% mutate( ) names(df_rev) df_rev <- df %>% mutate( ) names(df_rev) # Jak bychom mohli vytvořit funkci, která bude vytvářet názvy položek? item_range <- function(prefix, num_range, width = 2) { } # NFC: 1 až 16 # Extraversion: 1 6 11 16 21 26 31 36 41 46 # Agreeableness: 2 7 12 17 22 27 32 37 42 47 # Conscientiousness: 3 8 13 18 23 28 33 38 43 48 # Emotional stability: 4 9 14 19 24 29 34 39 44 49 # Intellect: 5 10 15 20 25 30 35 40 45 50 # Když máme list z položkami items <- list( nfc = item_range("nfc_", 1:16), bfi_ext = item_range("ipip_", seq(1, 50, by = 5)), bfi_agr = item_range("ipip_", seq(2, 50, by = 5)), bfi_con = item_range("ipip_", seq(3, 50, by = 5)), bfi_est = item_range("ipip_", seq(4, 50, by = 5)), bfi_int = item_range("ipip_", seq(5, 50, by = 5)) ) # Jak bychom mohli vytvořit funkci, která bude počítat průměry položek # vstupní argumenty: data, položky item_mean <- function(data, items) { } item_mean(df, items = items$nfc) # Jak bychom mohli vytvořit funkci, která bude počítat průměry položek # vstupní argumenty: data, položky, maximální počet missing values item_mean <- function(data, items, max.na) { } # Jak bychom tuto funkci mohli nyní použít k výpočtu celkových skórů každé škály item_mean(df_rev, items = items$nfc, max.na = 2) totals <- items %>% map() totals # Co kdybychom ještě chtěli měnit i hodnoty argumentu max.na max.na <- c(2, rep(1, 5)) max.na map2( ) # Jak bychom sloupce totals připojili k df a přemístili někde na začátek # Jak bychom převedli data do longer formátu, aby hodnoty proměnných nfc až # bfi_int byly v jednom sloupci? long <- df %>% pivot_longer() long # Jak bychom mohli vytvořit funkci, která bude počítat průměr s intervalem # spolehlivosti mean_ci <- function(x, level = .95) { # Vyřaďte z x chybějící hodnoty # Spočítejte průměr m # Spočítejte směrodatnou odchylku s # Spočítejte počet pozorování # Vypočtěte stupně volnost df jako n - 1 # Vypočtěte standardní chybu se jako s / odmocnina z velikosti vzorku # Vypočtěte hladinu alpha jako 1 - úroveň spolehlivosti # vypočtěte 1 - alpha/2 kvantil t-rozdělení se stupni volnosti df # Vypočtěte mezní chybu jako se*q # Uložte do tibblu průměr (m) a meze intervalu spolehlivosti # čili m - me a m + me } # Jak bychom tuto funkci mohli použít pro výpočet souhrnných statistik # podle ročníku a pohlaví? group_means <- long %>% group_by() %>% summarise() # Jak bychom výsledky znázornili graficky? p <- position_dodge(width = .2) group_means %>% ggplot() + geom_pointrange() + geom_line() + facet_wrap()