## ----setup, include = FALSE--------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) library(iDIFr) ## ----simulate----------------------------------------------------------------- set.seed(42) dat <- simulate_dif( n_persons = 600, n_items = 20, n_groups = 2, dif_items = c(3, 7, 12), # these items have DIF dif_effect = 0.9, dif_type = "uniform" ) head(dat[c(1:5, 21)]) # first 5 items + group column ## ----check-groups, eval = FALSE----------------------------------------------- # check_groups(dat, group = ~ group) ## ----check-intersectional, eval = FALSE--------------------------------------- # # Add nationality variable for illustration # dat$nationality <- sample(c("UK", "DE", "FR"), 600, replace = TRUE) # dat$age_band <- sample(c("18-30", "31-45", "46+"), 600, replace = TRUE) # # check_groups(dat, group = ~ group * nationality * age_band) ## ----run-idifr, eval = FALSE-------------------------------------------------- # result <- idifr( # data = dat, # items = 1:20, # group = ~ group, # method = c("LR", "LRT") # ) ## ----explore, eval = FALSE---------------------------------------------------- # # Flagged items with effect sizes # print(result) # # # Full breakdown by method # summary(result) # # # Effect size heatmap # plot(result) # # # Method concordance # plot(result, type = "concordance") # # # Flat data frame for your own analysis # df <- tidy(result) ## ----intersectional, eval = FALSE--------------------------------------------- # result_intersectional <- idifr( # data = dat, # items = 1:20, # group = ~ group * nationality * age_band, # crossing all three variables # method = c("LR", "LRT") # ) # # print(result_intersectional) ## ----merge, eval = FALSE------------------------------------------------------ # grp <- check_groups(dat, group = ~ group * nationality * age_band) # # merged_dat <- merge_groups( # grp, # age_band = list("18-45" = c("18-30", "31-45")) # combine two age bands # ) # # # Re-run with merged groups # result_merged <- idifr(merged_dat, 1:20, # group = ~ group * nationality * age_band, # method = c("LR", "LRT")) ## ----ica-example, eval = FALSE------------------------------------------------ # ica_res <- idifr( # data = dat, # items = 1:20, # group = ~ group * nationality * age_band, # method = "LR", # ica = TRUE # ) # # print(ica_res) # includes the ICA classification section # tidy(ica_res, table = "ica") # flat ICA classification table