About

Item response theory based analysis of Pew Research science quiz data. The 2013 and 2015, 2019.

This is the source code and detailed output for an upcoming paper.

Init

options(digits = 3)

library(kirkegaard)
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## Loading required package: magrittr
## 
## 
## Attaching package: 'magrittr'
## 
## 
## The following object is masked from 'package:purrr':
## 
##     set_names
## 
## 
## The following object is masked from 'package:tidyr':
## 
##     extract
## 
## 
## Loading required package: weights
## 
## Loading required package: Hmisc
## 
## 
## Attaching package: 'Hmisc'
## 
## 
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## 
## 
## The following objects are masked from 'package:base':
## 
##     format.pval, units
## 
## 
## Loading required package: assertthat
## 
## 
## Attaching package: 'assertthat'
## 
## 
## The following object is masked from 'package:tibble':
## 
##     has_name
## 
## 
## Loading required package: psych
## 
## 
## Attaching package: 'psych'
## 
## 
## The following object is masked from 'package:Hmisc':
## 
##     describe
## 
## 
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
## 
## 
## 
## Attaching package: 'kirkegaard'
## 
## 
## The following object is masked from 'package:psych':
## 
##     rescale
## 
## 
## The following object is masked from 'package:assertthat':
## 
##     are_equal
## 
## 
## The following object is masked from 'package:purrr':
## 
##     is_logical
## 
## 
## The following object is masked from 'package:base':
## 
##     +
load_packages(
  haven,
  mirt,
  rms,
  metafor,
  metaviz
)
## Loading required package: stats4
## Loading required package: lattice
## Loading required package: Matrix
## 
## Attaching package: 'Matrix'
## 
## The following objects are masked from 'package:tidyr':
## 
##     expand, pack, unpack
## 
## Loading required package: metadat
## Loading required package: numDeriv
## 
## Loading the 'metafor' package (version 4.0-0). For an
## introduction to the package please type: help(metafor)
## 
## 
## Attaching package: 'metafor'
## 
## The following object is masked from 'package:rms':
## 
##     vif
theme_set(theme_bw())

Functions

#DIF summary by item
DIF_summary = function(x) {
  c(
    n_items = nrow(x),
    n_favoring_focal_group = sum(x$SIDS > 0),
    n_favoring_ref_group = sum(x$SIDS < 0),
    n_noDIF = sum(x$SIDS == 0),
    prop_favoring_focal_group = sum(x$SIDS > 0)/nrow(x),
    prop_favoring_ref_group = sum(x$SIDS < 0)/nrow(x),
    prop_noDIF = sum(x$SIDS == 0)/nrow(x)
  )
}

save_plot_to_file = function (code, filename, width = 1000, height = 750) 
{
    on.exit(dev.off())
    png(filename = filename, height = height, width = width)
    p <- eval.parent(substitute(code))
    if (!is.null(p)) 
        print(p)
    invisible(p)
}

Analyses

2013 quiz

d2013 = read_sav("data/March 7-10 2013 omnibus/March 7-10 2013 omnibus.public.sav")
d2013 %<>% filter(racethn != 9)
d2013$race2 = d2013$racethn %>% as_factor() %>% str_replace("~Hisp", "") %>% mapvalues(from = "AA", to = "Black") %>% fct_relevel("White")
d2013$race2 %>% table2()
d2013$bw = d2013$race2 %>% mapvalues(from = c("Hispanic", "Other"), to = rep(NA, 2)) %>% fct_relevel("White")
d2013$hw = d2013$race2 %>% mapvalues(from = c("Black", "Other"), to = rep(NA, 2)) %>% fct_relevel("White")

d2013$sex2 = d2013$sex %>% as_factor()
d2013$sex2 %>% table2()
d2013$age_range = d2013$recage %>% as_factor() %>% mapvalues(from = "DK/Ref", to = NA)
d2013$age_range %>% table2()
#score with binary data
d2013_test_responses = d2013 %>% select(pew7a:pew17) %>% map_df(as.numeric)
answers2013 = c(2, 1, 2, 1, 3, 1, 2, 2, 1, 3, 2, 1, 1, 3)
d2013_test = score_items(d2013_test_responses, key = answers2013)

#IRT
d2013_irt_fit = mirt(
  d2013_test,
  model = 1,
  itemtype = "2PL"
)
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.70787
Iteration: 2, Log-Lik: -7253.129, Max-Change: 0.39409
Iteration: 3, Log-Lik: -7228.704, Max-Change: 0.25169
Iteration: 4, Log-Lik: -7220.934, Max-Change: 0.16026
Iteration: 5, Log-Lik: -7218.220, Max-Change: 0.10185
Iteration: 6, Log-Lik: -7217.146, Max-Change: 0.06990
Iteration: 7, Log-Lik: -7216.465, Max-Change: 0.02191
Iteration: 8, Log-Lik: -7216.392, Max-Change: 0.01419
Iteration: 9, Log-Lik: -7216.354, Max-Change: 0.00945
Iteration: 10, Log-Lik: -7216.313, Max-Change: 0.00236
Iteration: 11, Log-Lik: -7216.306, Max-Change: 0.00186
Iteration: 12, Log-Lik: -7216.302, Max-Change: 0.00144
Iteration: 13, Log-Lik: -7216.298, Max-Change: 0.00314
Iteration: 14, Log-Lik: -7216.296, Max-Change: 0.00076
Iteration: 15, Log-Lik: -7216.295, Max-Change: 0.00058
Iteration: 16, Log-Lik: -7216.295, Max-Change: 0.00123
Iteration: 17, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 18, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 19, Log-Lik: -7216.294, Max-Change: 0.00035
Iteration: 20, Log-Lik: -7216.294, Max-Change: 0.00026
Iteration: 21, Log-Lik: -7216.294, Max-Change: 0.00020
Iteration: 22, Log-Lik: -7216.294, Max-Change: 0.00024
Iteration: 23, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 24, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 25, Log-Lik: -7216.294, Max-Change: 0.00007
d2013_irt_fit
## 
## Call:
## mirt(data = d2013_test, model = 1, itemtype = "2PL")
## 
## Full-information item factor analysis with 1 factor(s).
## Converged within 1e-04 tolerance after 25 EM iterations.
## mirt version: 1.38.1 
## M-step optimizer: BFGS 
## EM acceleration: Ramsay 
## Number of rectangular quadrature: 61
## Latent density type: Gaussian 
## 
## Log-likelihood = -7216
## Estimated parameters: 28 
## AIC = 14489
## BIC = 14625; SABIC = 14536
## G2 (16355) = 2744, p = 1
## RMSEA = 0, CFI = NaN, TLI = NaN
d2013_irt_fit %>% summary()
##          F1     h2
## pew7a 0.619 0.3834
## pew7b 0.536 0.2874
## pew7c 0.657 0.4321
## pew7d 0.550 0.3028
## pew8  0.661 0.4371
## pew9  0.843 0.7102
## pew10 0.604 0.3648
## pew11 0.645 0.4166
## pew12 0.740 0.5479
## pew13 0.617 0.3809
## pew14 0.521 0.2710
## pew15 0.581 0.3378
## pew16 0.613 0.3752
## pew17 0.245 0.0602
## 
## SS loadings:  5.31 
## Proportion Var:  0.379 
## 
## Factor correlations: 
## 
##    F1
## F1  1
d2013_irt_fit %>% coef(simplify = T)
## $items
##          a1      d g u
## pew7a 1.342  1.105 0 1
## pew7b 1.081 -0.040 0 1
## pew7c 1.485 -0.084 0 1
## pew7d 1.122  1.594 0 1
## pew8  1.500  2.263 0 1
## pew9  2.664  1.435 0 1
## pew10 1.290 -1.721 0 1
## pew11 1.438  1.918 0 1
## pew12 1.874  2.245 0 1
## pew13 1.335  1.065 0 1
## pew14 1.038  1.479 0 1
## pew15 1.216  0.600 0 1
## pew16 1.319  0.368 0 1
## pew17 0.431 -0.139 0 1
## 
## $means
## F1 
##  0 
## 
## $cov
##    F1
## F1  1
#plots
d2013_irt_fit %>% plot(type = "info")

d2013_irt_fit %>% plot(type = "rxx")

d2013_irt_fit %>% plot(type = "trace")

#scores
d2013_irt_fit_scores = fscores(d2013_irt_fit, full.scores = T, full.scores.SE = T)
d2013$irt = d2013_irt_fit_scores[, 1] %>% standardize(focal_group = d2013$race2 == "White")
empirical_rxx(d2013_irt_fit_scores)
##    F1 
## 0.779
#gaps
#race
GG_denhist(d2013, "irt", "race2", auto_fraction_bounary = F)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

SMD_matrix(d2013$irt, d2013$race2)
##          White  Black Hispanic  Other
## White       NA  0.798    0.374  0.260
## Black    0.798     NA   -0.424 -0.537
## Hispanic 0.374 -0.424       NA -0.114
## Other    0.260 -0.537   -0.114     NA
SMD_matrix(d2013$irt, d2013$race2, reliability = empirical_rxx(d2013_irt_fit_scores))
##          White  Black Hispanic  Other
## White       NA  0.925    0.426  0.296
## Black    0.925     NA   -0.483 -0.615
## Hispanic 0.426 -0.483       NA -0.129
## Other    0.296 -0.615   -0.129     NA
describe2(d2013$irt, d2013$race2)
## New names:
## • `` -> `...1`
#sex
GG_denhist(d2013, "irt", "sex2")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

SMD_matrix(d2013$irt, d2013$sex2)
##         Male Female
## Male      NA  0.317
## Female 0.317     NA
SMD_matrix(d2013$irt, d2013$sex2, reliability = empirical_rxx(d2013_irt_fit_scores))
##        Male Female
## Male     NA   0.36
## Female 0.36     NA
describe2(d2013$irt, d2013$sex2)
## New names:
## • `` -> `...1`
#test bias
d2013_irt_fit_bias_bw = DIF_test(
  items = d2013_test,
  model = 1,
  group = d2013$bw,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.70787
Iteration: 2, Log-Lik: -7253.129, Max-Change: 0.39409
Iteration: 3, Log-Lik: -7228.704, Max-Change: 0.25169
Iteration: 4, Log-Lik: -7220.934, Max-Change: 0.16026
Iteration: 5, Log-Lik: -7218.220, Max-Change: 0.10185
Iteration: 6, Log-Lik: -7217.146, Max-Change: 0.06990
Iteration: 7, Log-Lik: -7216.465, Max-Change: 0.02191
Iteration: 8, Log-Lik: -7216.392, Max-Change: 0.01419
Iteration: 9, Log-Lik: -7216.354, Max-Change: 0.00945
Iteration: 10, Log-Lik: -7216.313, Max-Change: 0.00236
Iteration: 11, Log-Lik: -7216.306, Max-Change: 0.00186
Iteration: 12, Log-Lik: -7216.302, Max-Change: 0.00144
Iteration: 13, Log-Lik: -7216.298, Max-Change: 0.00314
Iteration: 14, Log-Lik: -7216.296, Max-Change: 0.00076
Iteration: 15, Log-Lik: -7216.295, Max-Change: 0.00058
Iteration: 16, Log-Lik: -7216.295, Max-Change: 0.00123
Iteration: 17, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 18, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 19, Log-Lik: -7216.294, Max-Change: 0.00035
Iteration: 20, Log-Lik: -7216.294, Max-Change: 0.00026
Iteration: 21, Log-Lik: -7216.294, Max-Change: 0.00020
Iteration: 22, Log-Lik: -7216.294, Max-Change: 0.00024
Iteration: 23, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 24, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 25, Log-Lik: -7216.294, Max-Change: 0.00007
## 
## Step 2: Initial MI fit
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -6272.517, Max-Change: 0.72637
Iteration: 2, Log-Lik: -6138.429, Max-Change: 0.42655
Iteration: 3, Log-Lik: -6116.411, Max-Change: 0.25089
Iteration: 4, Log-Lik: -6110.120, Max-Change: 0.15721
Iteration: 5, Log-Lik: -6107.384, Max-Change: 0.10292
Iteration: 6, Log-Lik: -6106.040, Max-Change: 0.06942
Iteration: 7, Log-Lik: -6105.008, Max-Change: 0.04896
Iteration: 8, Log-Lik: -6104.786, Max-Change: 0.02733
Iteration: 9, Log-Lik: -6104.688, Max-Change: 0.01707
Iteration: 10, Log-Lik: -6104.619, Max-Change: 0.01526
Iteration: 11, Log-Lik: -6104.595, Max-Change: 0.00839
Iteration: 12, Log-Lik: -6104.587, Max-Change: 0.00510
Iteration: 13, Log-Lik: -6104.582, Max-Change: 0.00385
Iteration: 14, Log-Lik: -6104.580, Max-Change: 0.00233
Iteration: 15, Log-Lik: -6104.579, Max-Change: 0.00152
Iteration: 16, Log-Lik: -6104.578, Max-Change: 0.00145
Iteration: 17, Log-Lik: -6104.578, Max-Change: 0.00081
Iteration: 18, Log-Lik: -6104.578, Max-Change: 0.00050
Iteration: 19, Log-Lik: -6104.578, Max-Change: 0.00038
Iteration: 20, Log-Lik: -6104.578, Max-Change: 0.00024
Iteration: 21, Log-Lik: -6104.578, Max-Change: 0.00016
Iteration: 22, Log-Lik: -6104.578, Max-Change: 0.00021
Iteration: 23, Log-Lik: -6104.578, Max-Change: 0.00010
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -7580.730, Max-Change: 0.61046
Iteration: 2, Log-Lik: -7493.685, Max-Change: 0.40006
Iteration: 3, Log-Lik: -7472.048, Max-Change: 0.25629
Iteration: 4, Log-Lik: -7465.628, Max-Change: 0.15288
Iteration: 5, Log-Lik: -7463.440, Max-Change: 0.10282
Iteration: 6, Log-Lik: -7462.613, Max-Change: 0.06824
Iteration: 7, Log-Lik: -7462.133, Max-Change: 0.02817
Iteration: 8, Log-Lik: -7462.053, Max-Change: 0.01859
Iteration: 9, Log-Lik: -7462.013, Max-Change: 0.01229
Iteration: 10, Log-Lik: -7461.975, Max-Change: 0.00334
Iteration: 11, Log-Lik: -7461.969, Max-Change: 0.00176
Iteration: 12, Log-Lik: -7461.966, Max-Change: 0.00277
Iteration: 13, Log-Lik: -7461.963, Max-Change: 0.00087
Iteration: 14, Log-Lik: -7461.962, Max-Change: 0.00067
Iteration: 15, Log-Lik: -7461.962, Max-Change: 0.00051
Iteration: 16, Log-Lik: -7461.961, Max-Change: 0.00184
Iteration: 17, Log-Lik: -7461.961, Max-Change: 0.00148
Iteration: 18, Log-Lik: -7461.961, Max-Change: 0.00128
Iteration: 19, Log-Lik: -7461.961, Max-Change: 0.00021
Iteration: 20, Log-Lik: -7461.961, Max-Change: 0.00015
Iteration: 21, Log-Lik: -7461.961, Max-Change: 0.00014
Iteration: 22, Log-Lik: -7461.961, Max-Change: 0.00005
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.70787
Iteration: 2, Log-Lik: -7253.129, Max-Change: 0.39409
Iteration: 3, Log-Lik: -7228.704, Max-Change: 0.25169
Iteration: 4, Log-Lik: -7220.934, Max-Change: 0.16026
Iteration: 5, Log-Lik: -7218.220, Max-Change: 0.10185
Iteration: 6, Log-Lik: -7217.146, Max-Change: 0.06990
Iteration: 7, Log-Lik: -7216.465, Max-Change: 0.02191
Iteration: 8, Log-Lik: -7216.392, Max-Change: 0.01419
Iteration: 9, Log-Lik: -7216.354, Max-Change: 0.00945
Iteration: 10, Log-Lik: -7216.313, Max-Change: 0.00236
Iteration: 11, Log-Lik: -7216.306, Max-Change: 0.00186
Iteration: 12, Log-Lik: -7216.302, Max-Change: 0.00144
Iteration: 13, Log-Lik: -7216.298, Max-Change: 0.00314
Iteration: 14, Log-Lik: -7216.296, Max-Change: 0.00076
Iteration: 15, Log-Lik: -7216.295, Max-Change: 0.00058
Iteration: 16, Log-Lik: -7216.295, Max-Change: 0.00123
Iteration: 17, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 18, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 19, Log-Lik: -7216.294, Max-Change: 0.00035
Iteration: 20, Log-Lik: -7216.294, Max-Change: 0.00026
Iteration: 21, Log-Lik: -7216.294, Max-Change: 0.00020
Iteration: 22, Log-Lik: -7216.294, Max-Change: 0.00024
Iteration: 23, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 24, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 25, Log-Lik: -7216.294, Max-Change: 0.00007
## 
## Step 6: Fit with anchor items, liberal threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -6272.517, Max-Change: 0.89410
Iteration: 2, Log-Lik: -6129.060, Max-Change: 0.43203
Iteration: 3, Log-Lik: -6105.575, Max-Change: 0.25143
Iteration: 4, Log-Lik: -6099.522, Max-Change: 0.15434
Iteration: 5, Log-Lik: -6097.119, Max-Change: 0.09902
Iteration: 6, Log-Lik: -6095.954, Max-Change: 0.06568
Iteration: 7, Log-Lik: -6095.016, Max-Change: 0.05531
Iteration: 8, Log-Lik: -6094.798, Max-Change: 0.03124
Iteration: 9, Log-Lik: -6094.694, Max-Change: 0.02077
Iteration: 10, Log-Lik: -6094.624, Max-Change: 0.02416
Iteration: 11, Log-Lik: -6094.575, Max-Change: 0.01141
Iteration: 12, Log-Lik: -6094.563, Max-Change: 0.00682
Iteration: 13, Log-Lik: -6094.557, Max-Change: 0.00492
Iteration: 14, Log-Lik: -6094.554, Max-Change: 0.00329
Iteration: 15, Log-Lik: -6094.553, Max-Change: 0.00236
Iteration: 16, Log-Lik: -6094.552, Max-Change: 0.00292
Iteration: 17, Log-Lik: -6094.551, Max-Change: 0.00143
Iteration: 18, Log-Lik: -6094.551, Max-Change: 0.00087
Iteration: 19, Log-Lik: -6094.551, Max-Change: 0.00061
Iteration: 20, Log-Lik: -6094.550, Max-Change: 0.00042
Iteration: 21, Log-Lik: -6094.550, Max-Change: 0.00034
Iteration: 22, Log-Lik: -6094.550, Max-Change: 0.00045
Iteration: 23, Log-Lik: -6094.550, Max-Change: 0.00022
Iteration: 24, Log-Lik: -6094.550, Max-Change: 0.00013
Iteration: 25, Log-Lik: -6094.550, Max-Change: 0.00009
## 
## Step 7: Fit with anchor items, conservative threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -6272.517, Max-Change: 0.72637
Iteration: 2, Log-Lik: -6138.429, Max-Change: 0.42655
Iteration: 3, Log-Lik: -6116.411, Max-Change: 0.25089
Iteration: 4, Log-Lik: -6110.120, Max-Change: 0.15721
Iteration: 5, Log-Lik: -6107.384, Max-Change: 0.10292
Iteration: 6, Log-Lik: -6106.040, Max-Change: 0.06942
Iteration: 7, Log-Lik: -6105.008, Max-Change: 0.04896
Iteration: 8, Log-Lik: -6104.786, Max-Change: 0.02733
Iteration: 9, Log-Lik: -6104.688, Max-Change: 0.01707
Iteration: 10, Log-Lik: -6104.619, Max-Change: 0.01526
Iteration: 11, Log-Lik: -6104.595, Max-Change: 0.00839
Iteration: 12, Log-Lik: -6104.587, Max-Change: 0.00510
Iteration: 13, Log-Lik: -6104.582, Max-Change: 0.00385
Iteration: 14, Log-Lik: -6104.580, Max-Change: 0.00233
Iteration: 15, Log-Lik: -6104.579, Max-Change: 0.00152
Iteration: 16, Log-Lik: -6104.578, Max-Change: 0.00145
Iteration: 17, Log-Lik: -6104.578, Max-Change: 0.00081
Iteration: 18, Log-Lik: -6104.578, Max-Change: 0.00050
Iteration: 19, Log-Lik: -6104.578, Max-Change: 0.00038
Iteration: 20, Log-Lik: -6104.578, Max-Change: 0.00024
Iteration: 21, Log-Lik: -6104.578, Max-Change: 0.00016
Iteration: 22, Log-Lik: -6104.578, Max-Change: 0.00021
Iteration: 23, Log-Lik: -6104.578, Max-Change: 0.00010
## 
## Step 8: Get scores
d2013_irt_fit_bias_hw = DIF_test(
  items = d2013_test,
  model = 1,
  group = d2013$hw,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.70787
Iteration: 2, Log-Lik: -7253.129, Max-Change: 0.39409
Iteration: 3, Log-Lik: -7228.704, Max-Change: 0.25169
Iteration: 4, Log-Lik: -7220.934, Max-Change: 0.16026
Iteration: 5, Log-Lik: -7218.220, Max-Change: 0.10185
Iteration: 6, Log-Lik: -7217.146, Max-Change: 0.06990
Iteration: 7, Log-Lik: -7216.465, Max-Change: 0.02191
Iteration: 8, Log-Lik: -7216.392, Max-Change: 0.01419
Iteration: 9, Log-Lik: -7216.354, Max-Change: 0.00945
Iteration: 10, Log-Lik: -7216.313, Max-Change: 0.00236
Iteration: 11, Log-Lik: -7216.306, Max-Change: 0.00186
Iteration: 12, Log-Lik: -7216.302, Max-Change: 0.00144
Iteration: 13, Log-Lik: -7216.298, Max-Change: 0.00314
Iteration: 14, Log-Lik: -7216.296, Max-Change: 0.00076
Iteration: 15, Log-Lik: -7216.295, Max-Change: 0.00058
Iteration: 16, Log-Lik: -7216.295, Max-Change: 0.00123
Iteration: 17, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 18, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 19, Log-Lik: -7216.294, Max-Change: 0.00035
Iteration: 20, Log-Lik: -7216.294, Max-Change: 0.00026
Iteration: 21, Log-Lik: -7216.294, Max-Change: 0.00020
Iteration: 22, Log-Lik: -7216.294, Max-Change: 0.00024
Iteration: 23, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 24, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 25, Log-Lik: -7216.294, Max-Change: 0.00007
## 
## Step 2: Initial MI fit
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -6028.595, Max-Change: 0.64075
Iteration: 2, Log-Lik: -5929.281, Max-Change: 0.35496
Iteration: 3, Log-Lik: -5911.364, Max-Change: 0.20853
Iteration: 4, Log-Lik: -5906.160, Max-Change: 0.13208
Iteration: 5, Log-Lik: -5903.960, Max-Change: 0.08765
Iteration: 6, Log-Lik: -5902.903, Max-Change: 0.06240
Iteration: 7, Log-Lik: -5902.099, Max-Change: 0.06037
Iteration: 8, Log-Lik: -5901.931, Max-Change: 0.03274
Iteration: 9, Log-Lik: -5901.854, Max-Change: 0.01994
Iteration: 10, Log-Lik: -5901.793, Max-Change: 0.01674
Iteration: 11, Log-Lik: -5901.777, Max-Change: 0.00931
Iteration: 12, Log-Lik: -5901.769, Max-Change: 0.00572
Iteration: 13, Log-Lik: -5901.762, Max-Change: 0.00489
Iteration: 14, Log-Lik: -5901.760, Max-Change: 0.00272
Iteration: 15, Log-Lik: -5901.759, Max-Change: 0.00167
Iteration: 16, Log-Lik: -5901.758, Max-Change: 0.00153
Iteration: 17, Log-Lik: -5901.757, Max-Change: 0.00082
Iteration: 18, Log-Lik: -5901.757, Max-Change: 0.00050
Iteration: 19, Log-Lik: -5901.757, Max-Change: 0.00047
Iteration: 20, Log-Lik: -5901.757, Max-Change: 0.00025
Iteration: 21, Log-Lik: -5901.757, Max-Change: 0.00015
Iteration: 22, Log-Lik: -5901.757, Max-Change: 0.00014
Iteration: 23, Log-Lik: -5901.757, Max-Change: 0.00008
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -7748.353, Max-Change: 0.37022
Iteration: 2, Log-Lik: -7703.251, Max-Change: 0.21556
Iteration: 3, Log-Lik: -7690.986, Max-Change: 0.11193
Iteration: 4, Log-Lik: -7687.926, Max-Change: 0.06181
Iteration: 5, Log-Lik: -7687.001, Max-Change: 0.03672
Iteration: 6, Log-Lik: -7686.694, Max-Change: 0.02133
Iteration: 7, Log-Lik: -7686.563, Max-Change: 0.01054
Iteration: 8, Log-Lik: -7686.534, Max-Change: 0.00585
Iteration: 9, Log-Lik: -7686.521, Max-Change: 0.00373
Iteration: 10, Log-Lik: -7686.516, Max-Change: 0.00191
Iteration: 11, Log-Lik: -7686.514, Max-Change: 0.00124
Iteration: 12, Log-Lik: -7686.513, Max-Change: 0.00083
Iteration: 13, Log-Lik: -7686.512, Max-Change: 0.00043
Iteration: 14, Log-Lik: -7686.512, Max-Change: 0.00071
Iteration: 15, Log-Lik: -7686.511, Max-Change: 0.00065
Iteration: 16, Log-Lik: -7686.511, Max-Change: 0.00020
Iteration: 17, Log-Lik: -7686.511, Max-Change: 0.00011
Iteration: 18, Log-Lik: -7686.511, Max-Change: 0.00009
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -7575.800, Max-Change: 0.40543
Iteration: 2, Log-Lik: -7511.285, Max-Change: 0.20195
Iteration: 3, Log-Lik: -7496.538, Max-Change: 0.11930
Iteration: 4, Log-Lik: -7492.723, Max-Change: 0.06185
Iteration: 5, Log-Lik: -7491.575, Max-Change: 0.03748
Iteration: 6, Log-Lik: -7491.151, Max-Change: 0.02166
Iteration: 7, Log-Lik: -7490.943, Max-Change: 0.00782
Iteration: 8, Log-Lik: -7490.906, Max-Change: 0.00529
Iteration: 9, Log-Lik: -7490.887, Max-Change: 0.00351
Iteration: 10, Log-Lik: -7490.875, Max-Change: 0.00176
Iteration: 11, Log-Lik: -7490.873, Max-Change: 0.00082
Iteration: 12, Log-Lik: -7490.872, Max-Change: 0.00059
Iteration: 13, Log-Lik: -7490.870, Max-Change: 0.00039
Iteration: 14, Log-Lik: -7490.870, Max-Change: 0.00260
Iteration: 15, Log-Lik: -7490.869, Max-Change: 0.00206
Iteration: 16, Log-Lik: -7490.869, Max-Change: 0.00023
Iteration: 17, Log-Lik: -7490.869, Max-Change: 0.00025
Iteration: 18, Log-Lik: -7490.869, Max-Change: 0.00016
Iteration: 19, Log-Lik: -7490.869, Max-Change: 0.00010
Iteration: 20, Log-Lik: -7490.869, Max-Change: 0.00007
## 
## Step 6: Fit with anchor items, liberal threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -6028.595, Max-Change: 0.89713
Iteration: 2, Log-Lik: -5910.849, Max-Change: 0.44777
Iteration: 3, Log-Lik: -5890.451, Max-Change: 0.27716
Iteration: 4, Log-Lik: -5885.174, Max-Change: 0.17404
Iteration: 5, Log-Lik: -5883.384, Max-Change: 0.11055
Iteration: 6, Log-Lik: -5882.658, Max-Change: 0.07093
Iteration: 7, Log-Lik: -5882.146, Max-Change: 0.05301
Iteration: 8, Log-Lik: -5882.060, Max-Change: 0.03128
Iteration: 9, Log-Lik: -5882.012, Max-Change: 0.02186
Iteration: 10, Log-Lik: -5881.966, Max-Change: 0.02836
Iteration: 11, Log-Lik: -5881.950, Max-Change: 0.01277
Iteration: 12, Log-Lik: -5881.945, Max-Change: 0.00771
Iteration: 13, Log-Lik: -5881.941, Max-Change: 0.00684
Iteration: 14, Log-Lik: -5881.939, Max-Change: 0.00397
Iteration: 15, Log-Lik: -5881.938, Max-Change: 0.00276
Iteration: 16, Log-Lik: -5881.937, Max-Change: 0.00383
Iteration: 17, Log-Lik: -5881.937, Max-Change: 0.00163
Iteration: 18, Log-Lik: -5881.937, Max-Change: 0.00096
Iteration: 19, Log-Lik: -5881.937, Max-Change: 0.00073
Iteration: 20, Log-Lik: -5881.937, Max-Change: 0.00047
Iteration: 21, Log-Lik: -5881.937, Max-Change: 0.00034
Iteration: 22, Log-Lik: -5881.937, Max-Change: 0.00042
Iteration: 23, Log-Lik: -5881.937, Max-Change: 0.00021
Iteration: 24, Log-Lik: -5881.937, Max-Change: 0.00014
Iteration: 25, Log-Lik: -5881.937, Max-Change: 0.00012
Iteration: 26, Log-Lik: -5881.937, Max-Change: 0.00008
## 
## Step 7: Fit with anchor items, conservative threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -6028.595, Max-Change: 0.89688
Iteration: 2, Log-Lik: -5918.369, Max-Change: 0.44746
Iteration: 3, Log-Lik: -5898.685, Max-Change: 0.27716
Iteration: 4, Log-Lik: -5893.483, Max-Change: 0.17439
Iteration: 5, Log-Lik: -5891.570, Max-Change: 0.11128
Iteration: 6, Log-Lik: -5890.729, Max-Change: 0.07184
Iteration: 7, Log-Lik: -5890.097, Max-Change: 0.06012
Iteration: 8, Log-Lik: -5889.987, Max-Change: 0.03238
Iteration: 9, Log-Lik: -5889.935, Max-Change: 0.02058
Iteration: 10, Log-Lik: -5889.890, Max-Change: 0.02034
Iteration: 11, Log-Lik: -5889.877, Max-Change: 0.01023
Iteration: 12, Log-Lik: -5889.872, Max-Change: 0.00627
Iteration: 13, Log-Lik: -5889.867, Max-Change: 0.00561
Iteration: 14, Log-Lik: -5889.866, Max-Change: 0.00301
Iteration: 15, Log-Lik: -5889.865, Max-Change: 0.00193
Iteration: 16, Log-Lik: -5889.864, Max-Change: 0.00205
Iteration: 17, Log-Lik: -5889.864, Max-Change: 0.00101
Iteration: 18, Log-Lik: -5889.864, Max-Change: 0.00061
Iteration: 19, Log-Lik: -5889.864, Max-Change: 0.00055
Iteration: 20, Log-Lik: -5889.864, Max-Change: 0.00030
Iteration: 21, Log-Lik: -5889.864, Max-Change: 0.00020
Iteration: 22, Log-Lik: -5889.864, Max-Change: 0.00024
Iteration: 23, Log-Lik: -5889.864, Max-Change: 0.00012
Iteration: 24, Log-Lik: -5889.864, Max-Change: 0.00007
## 
## Step 8: Get scores
d2013_irt_fit_bias_bw$effect_size_test
## $liberal
##           Effect Size   Value
## 1                STDS  0.1147
## 2                UTDS  0.3138
## 3              UETSDS  0.1279
## 4               ETSSD  0.0487
## 5         Starks.DTFR  0.0906
## 6               UDTFR  0.3021
## 7              UETSDN  0.1232
## 8 theta.of.max.test.D -1.5552
## 9           Test.Dmax  0.1774
## 
## $conservative
##           Effect Size Value
## 1                STDS  0.00
## 2                UTDS  0.00
## 3              UETSDS  0.00
## 4               ETSSD  0.00
## 5         Starks.DTFR  0.00
## 6               UDTFR  0.00
## 7              UETSDN  0.00
## 8 theta.of.max.test.D -0.94
## 9           Test.Dmax  0.00
d2013_irt_fit_bias_bw$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.533
## item.2   0.131 0.131  0.119 0.119  0.834         -0.701  0.150       0.416
## item.3   0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.257
## item.4   0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.666
## item.5   0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.712
## item.6   0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.387
## item.7   0.082 0.082  0.071 0.076  1.186         -0.393  0.101       0.149
## item.8   0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.677
## item.9   0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.670
## item.10  0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.520
## item.11  0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.670
## item.12  0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.444
## item.13 -0.098 0.101 -0.100 0.107 -0.576          0.460 -0.229       0.302
## item.14  0.000 0.000  0.000 0.000  0.000         -0.932  0.000       0.390
##         mean.ES.ref
## item.1        0.533
## item.2        0.285
## item.3        0.257
## item.4        0.666
## item.5        0.712
## item.6        0.387
## item.7        0.067
## item.8        0.677
## item.9        0.670
## item.10       0.520
## item.11       0.670
## item.12       0.444
## item.13       0.401
## item.14       0.390
## 
## $conservative
##         SIDS UIDS SIDN UIDN ESSD theta.of.max.D max.D mean.ES.foc mean.ES.ref
## item.1     0    0    0    0    0          -0.94     0       0.537       0.537
## item.2     0    0    0    0    0          -0.94     0       0.313       0.313
## item.3     0    0    0    0    0          -0.94     0       0.258       0.258
## item.4     0    0    0    0    0          -0.94     0       0.669       0.669
## item.5     0    0    0    0    0          -0.94     0       0.717       0.717
## item.6     0    0    0    0    0          -0.94     0       0.391       0.391
## item.7     0    0    0    0    0          -0.94     0       0.082       0.082
## item.8     0    0    0    0    0          -0.94     0       0.682       0.682
## item.9     0    0    0    0    0          -0.94     0       0.677       0.677
## item.10    0    0    0    0    0          -0.94     0       0.524       0.524
## item.11    0    0    0    0    0          -0.94     0       0.674       0.674
## item.12    0    0    0    0    0          -0.94     0       0.446       0.446
## item.13    0    0    0    0    0          -0.94     0       0.388       0.388
## item.14    0    0    0    0    0          -0.94     0       0.390       0.390
d2013_irt_fit_bias_bw$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                        14                         0                         0 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                        14                         0                         0 
##                prop_noDIF 
##                         1
save_plot_to_file(d2013_irt_fit_bias_bw$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2013_dif_bw.png")

d2013_irt_fit_bias_hw$effect_size_test
## $liberal
##           Effect Size    Value
## 1                STDS -0.02041
## 2                UTDS  0.60150
## 3              UETSDS  0.32897
## 4               ETSSD -0.00735
## 5         Starks.DTFR -0.00885
## 6               UDTFR  0.59950
## 7              UETSDN  0.31623
## 8 theta.of.max.test.D -1.52179
## 9           Test.Dmax  0.46456
## 
## $conservative
##           Effect Size    Value
## 1                STDS -0.00527
## 2                UTDS  0.31335
## 3              UETSDS  0.21080
## 4               ETSSD -0.00194
## 5         Starks.DTFR  0.00213
## 6               UDTFR  0.31259
## 7              UETSDN  0.20446
## 8 theta.of.max.test.D -1.45642
## 9           Test.Dmax  0.31697
d2013_irt_fit_bias_hw$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.646
## item.2   0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.415
## item.3   0.129 0.129  0.128 0.128  0.507         -0.421  0.179       0.517
## item.4   0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.737
## item.5   0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.806
## item.6   0.145 0.154  0.150 0.159  0.475         -1.169  0.365       0.722
## item.7   0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.143
## item.8   0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.755
## item.9   0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.773
## item.10 -0.152 0.170 -0.148 0.167 -0.744          0.475 -0.263       0.487
## item.11  0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.744
## item.12  0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.543
## item.13 -0.142 0.149 -0.138 0.146 -0.663          0.596 -0.255       0.393
## item.14  0.000 0.000  0.000 0.000  0.000         -0.791  0.000       0.438
##         mean.ES.ref
## item.1        0.646
## item.2        0.415
## item.3        0.388
## item.4        0.737
## item.5        0.806
## item.6        0.577
## item.7        0.143
## item.8        0.755
## item.9        0.773
## item.10       0.639
## item.11       0.744
## item.12       0.543
## item.13       0.535
## item.14       0.438
## 
## $conservative
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.646
## item.2   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.410
## item.3   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.395
## item.4   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.737
## item.5   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.808
## item.6   0.147 0.152  0.147 0.154  0.492         -1.151  0.352       0.721
## item.7   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.137
## item.8   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.757
## item.9   0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.777
## item.10 -0.152 0.161 -0.145 0.159 -0.759          0.310 -0.247       0.487
## item.11  0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.745
## item.12  0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.540
## item.13  0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.521
## item.14  0.000 0.000  0.000 0.000  0.000         -0.797  0.000       0.437
##         mean.ES.ref
## item.1        0.646
## item.2        0.410
## item.3        0.395
## item.4        0.737
## item.5        0.808
## item.6        0.574
## item.7        0.137
## item.8        0.757
## item.9        0.777
## item.10       0.640
## item.11       0.745
## item.12       0.540
## item.13       0.521
## item.14       0.437
d2013_irt_fit_bias_hw$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                   14.0000                    1.0000                    1.0000 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                   12.0000                    0.0714                    0.0714 
##                prop_noDIF 
##                    0.8571
save_plot_to_file(d2013_irt_fit_bias_hw$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2013_dif_hw.png")

d2013_irt_fit_bias_sex = DIF_test(
  items = d2013_test,
  model = 1,
  group = d2013$sex2,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.70787
Iteration: 2, Log-Lik: -7253.129, Max-Change: 0.39409
Iteration: 3, Log-Lik: -7228.704, Max-Change: 0.25169
Iteration: 4, Log-Lik: -7220.934, Max-Change: 0.16026
Iteration: 5, Log-Lik: -7218.220, Max-Change: 0.10185
Iteration: 6, Log-Lik: -7217.146, Max-Change: 0.06990
Iteration: 7, Log-Lik: -7216.465, Max-Change: 0.02191
Iteration: 8, Log-Lik: -7216.392, Max-Change: 0.01419
Iteration: 9, Log-Lik: -7216.354, Max-Change: 0.00945
Iteration: 10, Log-Lik: -7216.313, Max-Change: 0.00236
Iteration: 11, Log-Lik: -7216.306, Max-Change: 0.00186
Iteration: 12, Log-Lik: -7216.302, Max-Change: 0.00144
Iteration: 13, Log-Lik: -7216.298, Max-Change: 0.00314
Iteration: 14, Log-Lik: -7216.296, Max-Change: 0.00076
Iteration: 15, Log-Lik: -7216.295, Max-Change: 0.00058
Iteration: 16, Log-Lik: -7216.295, Max-Change: 0.00123
Iteration: 17, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 18, Log-Lik: -7216.294, Max-Change: 0.00085
Iteration: 19, Log-Lik: -7216.294, Max-Change: 0.00035
Iteration: 20, Log-Lik: -7216.294, Max-Change: 0.00026
Iteration: 21, Log-Lik: -7216.294, Max-Change: 0.00020
Iteration: 22, Log-Lik: -7216.294, Max-Change: 0.00024
Iteration: 23, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 24, Log-Lik: -7216.294, Max-Change: 0.00017
Iteration: 25, Log-Lik: -7216.294, Max-Change: 0.00007
## 
## Step 2: Initial MI fit
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.68509
Iteration: 2, Log-Lik: -7241.855, Max-Change: 0.38674
Iteration: 3, Log-Lik: -7221.581, Max-Change: 0.23133
Iteration: 4, Log-Lik: -7213.901, Max-Change: 0.15324
Iteration: 5, Log-Lik: -7209.060, Max-Change: 0.11048
Iteration: 6, Log-Lik: -7205.622, Max-Change: 0.08498
Iteration: 7, Log-Lik: -7202.031, Max-Change: 0.11282
Iteration: 8, Log-Lik: -7198.545, Max-Change: 0.04564
Iteration: 9, Log-Lik: -7197.709, Max-Change: 0.02680
Iteration: 10, Log-Lik: -7197.103, Max-Change: 0.02341
Iteration: 11, Log-Lik: -7196.765, Max-Change: 0.01942
Iteration: 12, Log-Lik: -7196.532, Max-Change: 0.01894
Iteration: 13, Log-Lik: -7196.374, Max-Change: 0.02684
Iteration: 14, Log-Lik: -7196.003, Max-Change: 0.01118
Iteration: 15, Log-Lik: -7195.938, Max-Change: 0.00627
Iteration: 16, Log-Lik: -7195.908, Max-Change: 0.00559
Iteration: 17, Log-Lik: -7195.887, Max-Change: 0.00573
Iteration: 18, Log-Lik: -7195.872, Max-Change: 0.00538
Iteration: 19, Log-Lik: -7195.862, Max-Change: 0.00658
Iteration: 20, Log-Lik: -7195.836, Max-Change: 0.00285
Iteration: 21, Log-Lik: -7195.831, Max-Change: 0.00161
Iteration: 22, Log-Lik: -7195.829, Max-Change: 0.00148
Iteration: 23, Log-Lik: -7195.828, Max-Change: 0.00151
Iteration: 24, Log-Lik: -7195.827, Max-Change: 0.00145
Iteration: 25, Log-Lik: -7195.826, Max-Change: 0.00173
Iteration: 26, Log-Lik: -7195.824, Max-Change: 0.00075
Iteration: 27, Log-Lik: -7195.824, Max-Change: 0.00043
Iteration: 28, Log-Lik: -7195.824, Max-Change: 0.00042
Iteration: 29, Log-Lik: -7195.824, Max-Change: 0.00041
Iteration: 30, Log-Lik: -7195.823, Max-Change: 0.00039
Iteration: 31, Log-Lik: -7195.823, Max-Change: 0.00047
Iteration: 32, Log-Lik: -7195.823, Max-Change: 0.00020
Iteration: 33, Log-Lik: -7195.823, Max-Change: 0.00012
Iteration: 34, Log-Lik: -7195.823, Max-Change: 0.00011
Iteration: 35, Log-Lik: -7195.823, Max-Change: 0.00010
Iteration: 36, Log-Lik: -7195.823, Max-Change: 0.00011
Iteration: 37, Log-Lik: -7195.823, Max-Change: 0.00013
Iteration: 38, Log-Lik: -7195.823, Max-Change: 0.00006
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -7872.748, Max-Change: 0.41373
Iteration: 2, Log-Lik: -7833.231, Max-Change: 0.31982
Iteration: 3, Log-Lik: -7817.782, Max-Change: 0.23521
Iteration: 4, Log-Lik: -7812.339, Max-Change: 0.16884
Iteration: 5, Log-Lik: -7810.383, Max-Change: 0.12608
Iteration: 6, Log-Lik: -7809.565, Max-Change: 0.09337
Iteration: 7, Log-Lik: -7808.882, Max-Change: 0.04030
Iteration: 8, Log-Lik: -7808.814, Max-Change: 0.03142
Iteration: 9, Log-Lik: -7808.775, Max-Change: 0.02487
Iteration: 10, Log-Lik: -7808.715, Max-Change: 0.00935
Iteration: 11, Log-Lik: -7808.712, Max-Change: 0.00493
Iteration: 12, Log-Lik: -7808.710, Max-Change: 0.00457
Iteration: 13, Log-Lik: -7808.708, Max-Change: 0.00501
Iteration: 14, Log-Lik: -7808.708, Max-Change: 0.00296
Iteration: 15, Log-Lik: -7808.707, Max-Change: 0.00048
Iteration: 16, Log-Lik: -7808.707, Max-Change: 0.00048
Iteration: 17, Log-Lik: -7808.707, Max-Change: 0.00045
Iteration: 18, Log-Lik: -7808.707, Max-Change: 0.00202
Iteration: 19, Log-Lik: -7808.707, Max-Change: 0.00089
Iteration: 20, Log-Lik: -7808.707, Max-Change: 0.00084
Iteration: 21, Log-Lik: -7808.707, Max-Change: 0.00079
Iteration: 22, Log-Lik: -7808.707, Max-Change: 0.00115
Iteration: 23, Log-Lik: -7808.707, Max-Change: 0.00019
Iteration: 24, Log-Lik: -7808.707, Max-Change: 0.00018
Iteration: 25, Log-Lik: -7808.707, Max-Change: 0.00017
Iteration: 26, Log-Lik: -7808.707, Max-Change: 0.00016
Iteration: 27, Log-Lik: -7808.707, Max-Change: 0.00015
Iteration: 28, Log-Lik: -7808.707, Max-Change: 0.00014
Iteration: 29, Log-Lik: -7808.707, Max-Change: 0.00014
Iteration: 30, Log-Lik: -7808.707, Max-Change: 0.00013
Iteration: 31, Log-Lik: -7808.707, Max-Change: 0.00012
Iteration: 32, Log-Lik: -7808.707, Max-Change: 0.00012
Iteration: 33, Log-Lik: -7808.707, Max-Change: 0.00011
Iteration: 34, Log-Lik: -7808.707, Max-Change: 0.00011
Iteration: 35, Log-Lik: -7808.707, Max-Change: 0.00010
Iteration: 36, Log-Lik: -7808.707, Max-Change: 0.00010
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -7600.545, Max-Change: 0.61362
Iteration: 2, Log-Lik: -7522.345, Max-Change: 0.42256
Iteration: 3, Log-Lik: -7502.906, Max-Change: 0.28264
Iteration: 4, Log-Lik: -7496.989, Max-Change: 0.18404
Iteration: 5, Log-Lik: -7494.956, Max-Change: 0.12136
Iteration: 6, Log-Lik: -7494.181, Max-Change: 0.08301
Iteration: 7, Log-Lik: -7493.668, Max-Change: 0.03001
Iteration: 8, Log-Lik: -7493.626, Max-Change: 0.02035
Iteration: 9, Log-Lik: -7493.603, Max-Change: 0.01236
Iteration: 10, Log-Lik: -7493.591, Max-Change: 0.00771
Iteration: 11, Log-Lik: -7493.586, Max-Change: 0.00538
Iteration: 12, Log-Lik: -7493.583, Max-Change: 0.00292
Iteration: 13, Log-Lik: -7493.581, Max-Change: 0.00223
Iteration: 14, Log-Lik: -7493.580, Max-Change: 0.00371
Iteration: 15, Log-Lik: -7493.579, Max-Change: 0.00073
Iteration: 16, Log-Lik: -7493.579, Max-Change: 0.00050
Iteration: 17, Log-Lik: -7493.579, Max-Change: 0.00050
Iteration: 18, Log-Lik: -7493.579, Max-Change: 0.00039
Iteration: 19, Log-Lik: -7493.579, Max-Change: 0.00027
Iteration: 20, Log-Lik: -7493.579, Max-Change: 0.00024
Iteration: 21, Log-Lik: -7493.579, Max-Change: 0.00022
Iteration: 22, Log-Lik: -7493.579, Max-Change: 0.00019
Iteration: 23, Log-Lik: -7493.579, Max-Change: 0.00017
Iteration: 24, Log-Lik: -7493.579, Max-Change: 0.00016
Iteration: 25, Log-Lik: -7493.579, Max-Change: 0.00015
Iteration: 26, Log-Lik: -7493.579, Max-Change: 0.00013
Iteration: 27, Log-Lik: -7493.579, Max-Change: 0.00012
Iteration: 28, Log-Lik: -7493.579, Max-Change: 0.00011
Iteration: 29, Log-Lik: -7493.579, Max-Change: 0.00010
Iteration: 30, Log-Lik: -7493.579, Max-Change: 0.00010
## 
## Step 6: Fit with anchor items, liberal threshold
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.80112
Iteration: 2, Log-Lik: -7194.770, Max-Change: 0.38655
Iteration: 3, Log-Lik: -7172.411, Max-Change: 0.22024
Iteration: 4, Log-Lik: -7165.779, Max-Change: 0.13464
Iteration: 5, Log-Lik: -7162.409, Max-Change: 0.08951
Iteration: 6, Log-Lik: -7160.104, Max-Change: 0.06436
Iteration: 7, Log-Lik: -7157.146, Max-Change: 0.09851
Iteration: 8, Log-Lik: -7154.997, Max-Change: 0.04509
Iteration: 9, Log-Lik: -7154.102, Max-Change: 0.03657
Iteration: 10, Log-Lik: -7153.095, Max-Change: 0.06208
Iteration: 11, Log-Lik: -7151.956, Max-Change: 0.02594
Iteration: 12, Log-Lik: -7151.596, Max-Change: 0.02351
Iteration: 13, Log-Lik: -7151.165, Max-Change: 0.03150
Iteration: 14, Log-Lik: -7150.798, Max-Change: 0.01512
Iteration: 15, Log-Lik: -7150.640, Max-Change: 0.01760
Iteration: 16, Log-Lik: -7150.508, Max-Change: 0.02648
Iteration: 17, Log-Lik: -7150.212, Max-Change: 0.01022
Iteration: 18, Log-Lik: -7150.146, Max-Change: 0.01030
Iteration: 19, Log-Lik: -7150.077, Max-Change: 0.00887
Iteration: 20, Log-Lik: -7150.032, Max-Change: 0.00873
Iteration: 21, Log-Lik: -7150.001, Max-Change: 0.00902
Iteration: 22, Log-Lik: -7149.981, Max-Change: 0.01223
Iteration: 23, Log-Lik: -7149.907, Max-Change: 0.00455
Iteration: 24, Log-Lik: -7149.893, Max-Change: 0.00461
Iteration: 25, Log-Lik: -7149.880, Max-Change: 0.00380
Iteration: 26, Log-Lik: -7149.872, Max-Change: 0.00445
Iteration: 27, Log-Lik: -7149.865, Max-Change: 0.00448
Iteration: 28, Log-Lik: -7149.860, Max-Change: 0.00563
Iteration: 29, Log-Lik: -7149.844, Max-Change: 0.00210
Iteration: 30, Log-Lik: -7149.841, Max-Change: 0.00218
Iteration: 31, Log-Lik: -7149.838, Max-Change: 0.00193
Iteration: 32, Log-Lik: -7149.836, Max-Change: 0.00218
Iteration: 33, Log-Lik: -7149.834, Max-Change: 0.00213
Iteration: 34, Log-Lik: -7149.833, Max-Change: 0.00268
Iteration: 35, Log-Lik: -7149.829, Max-Change: 0.00100
Iteration: 36, Log-Lik: -7149.828, Max-Change: 0.00108
Iteration: 37, Log-Lik: -7149.828, Max-Change: 0.00086
Iteration: 38, Log-Lik: -7149.827, Max-Change: 0.00110
Iteration: 39, Log-Lik: -7149.827, Max-Change: 0.00112
Iteration: 40, Log-Lik: -7149.826, Max-Change: 0.00134
Iteration: 41, Log-Lik: -7149.825, Max-Change: 0.00049
Iteration: 42, Log-Lik: -7149.825, Max-Change: 0.00048
Iteration: 43, Log-Lik: -7149.825, Max-Change: 0.00044
Iteration: 44, Log-Lik: -7149.825, Max-Change: 0.00056
Iteration: 45, Log-Lik: -7149.825, Max-Change: 0.00053
Iteration: 46, Log-Lik: -7149.825, Max-Change: 0.00067
Iteration: 47, Log-Lik: -7149.824, Max-Change: 0.00025
Iteration: 48, Log-Lik: -7149.824, Max-Change: 0.00024
Iteration: 49, Log-Lik: -7149.824, Max-Change: 0.00020
Iteration: 50, Log-Lik: -7149.824, Max-Change: 0.00026
Iteration: 51, Log-Lik: -7149.824, Max-Change: 0.00026
Iteration: 52, Log-Lik: -7149.824, Max-Change: 0.00035
Iteration: 53, Log-Lik: -7149.824, Max-Change: 0.00013
Iteration: 54, Log-Lik: -7149.824, Max-Change: 0.00013
Iteration: 55, Log-Lik: -7149.824, Max-Change: 0.00012
Iteration: 56, Log-Lik: -7149.824, Max-Change: 0.00013
Iteration: 57, Log-Lik: -7149.824, Max-Change: 0.00013
Iteration: 58, Log-Lik: -7149.824, Max-Change: 0.00018
Iteration: 59, Log-Lik: -7149.824, Max-Change: 0.00007
## 
## Step 7: Fit with anchor items, conservative threshold
## 
Iteration: 1, Log-Lik: -7361.986, Max-Change: 0.80082
Iteration: 2, Log-Lik: -7207.003, Max-Change: 0.37858
Iteration: 3, Log-Lik: -7185.014, Max-Change: 0.21394
Iteration: 4, Log-Lik: -7178.452, Max-Change: 0.13270
Iteration: 5, Log-Lik: -7174.888, Max-Change: 0.09079
Iteration: 6, Log-Lik: -7172.421, Max-Change: 0.06714
Iteration: 7, Log-Lik: -7169.416, Max-Change: 0.09960
Iteration: 8, Log-Lik: -7167.232, Max-Change: 0.04304
Iteration: 9, Log-Lik: -7166.516, Max-Change: 0.03122
Iteration: 10, Log-Lik: -7165.779, Max-Change: 0.03710
Iteration: 11, Log-Lik: -7165.324, Max-Change: 0.01954
Iteration: 12, Log-Lik: -7165.099, Max-Change: 0.01865
Iteration: 13, Log-Lik: -7164.947, Max-Change: 0.03209
Iteration: 14, Log-Lik: -7164.556, Max-Change: 0.01209
Iteration: 15, Log-Lik: -7164.492, Max-Change: 0.00798
Iteration: 16, Log-Lik: -7164.449, Max-Change: 0.00693
Iteration: 17, Log-Lik: -7164.421, Max-Change: 0.00723
Iteration: 18, Log-Lik: -7164.401, Max-Change: 0.00676
Iteration: 19, Log-Lik: -7164.389, Max-Change: 0.00961
Iteration: 20, Log-Lik: -7164.349, Max-Change: 0.00369
Iteration: 21, Log-Lik: -7164.342, Max-Change: 0.00228
Iteration: 22, Log-Lik: -7164.338, Max-Change: 0.00238
Iteration: 23, Log-Lik: -7164.336, Max-Change: 0.00241
Iteration: 24, Log-Lik: -7164.334, Max-Change: 0.00223
Iteration: 25, Log-Lik: -7164.333, Max-Change: 0.00304
Iteration: 26, Log-Lik: -7164.328, Max-Change: 0.00118
Iteration: 27, Log-Lik: -7164.328, Max-Change: 0.00072
Iteration: 28, Log-Lik: -7164.327, Max-Change: 0.00076
Iteration: 29, Log-Lik: -7164.327, Max-Change: 0.00081
Iteration: 30, Log-Lik: -7164.327, Max-Change: 0.00072
Iteration: 31, Log-Lik: -7164.327, Max-Change: 0.00101
Iteration: 32, Log-Lik: -7164.326, Max-Change: 0.00039
Iteration: 33, Log-Lik: -7164.326, Max-Change: 0.00023
Iteration: 34, Log-Lik: -7164.326, Max-Change: 0.00026
Iteration: 35, Log-Lik: -7164.326, Max-Change: 0.00026
Iteration: 36, Log-Lik: -7164.326, Max-Change: 0.00020
Iteration: 37, Log-Lik: -7164.326, Max-Change: 0.00031
Iteration: 38, Log-Lik: -7164.326, Max-Change: 0.00013
Iteration: 39, Log-Lik: -7164.326, Max-Change: 0.00012
Iteration: 40, Log-Lik: -7164.326, Max-Change: 0.00008
## 
## Step 8: Get scores
d2013_irt_fit_bias_sex$effect_size_test
## $liberal
##           Effect Size   Value
## 1                STDS  0.1430
## 2                UTDS  0.6288
## 3              UETSDS  0.1526
## 4               ETSSD  0.0585
## 5         Starks.DTFR  0.1062
## 6               UDTFR  0.5774
## 7              UETSDN  0.1409
## 8 theta.of.max.test.D -2.1753
## 9           Test.Dmax -0.2075
## 
## $conservative
##           Effect Size   Value
## 1                STDS  0.1547
## 2                UTDS  0.3666
## 3              UETSDS  0.1671
## 4               ETSSD  0.0615
## 5         Starks.DTFR  0.1510
## 6               UDTFR  0.3367
## 7              UETSDN  0.1666
## 8 theta.of.max.test.D -1.3125
## 9           Test.Dmax  0.4019
d2013_irt_fit_bias_sex$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.666  0.000       0.663
## item.2   0.000 0.000  0.000 0.000  0.000         -0.666  0.000       0.441
## item.3  -0.102 0.102 -0.086 0.086 -0.468         -0.114 -0.131       0.373
## item.4   0.000 0.000  0.000 0.000  0.000         -0.666  0.000       0.765
## item.5   0.021 0.049  0.001 0.055  0.137         -2.175 -0.183       0.840
## item.6   0.000 0.000  0.000 0.000  0.000         -0.666  0.000       0.632
## item.7   0.000 0.000  0.000 0.000  0.000         -0.666  0.000       0.150
## item.8   0.000 0.000  0.000 0.000  0.000         -0.666  0.000       0.788
## item.9   0.143 0.143  0.128 0.128  0.681         -1.141  0.273       0.859
## item.10  0.077 0.082  0.060 0.072  0.384         -0.143  0.115       0.696
## item.11  0.111 0.111  0.098 0.098  0.774         -0.824  0.135       0.805
## item.12 -0.068 0.068 -0.057 0.059 -0.354          0.025 -0.092       0.539
## item.13 -0.040 0.074 -0.037 0.079 -0.185         -1.300 -0.143       0.506
## item.14  0.000 0.000  0.000 0.000  0.000         -0.666  0.000       0.443
##         mean.ES.ref
## item.1        0.663
## item.2        0.441
## item.3        0.475
## item.4        0.765
## item.5        0.818
## item.6        0.632
## item.7        0.150
## item.8        0.788
## item.9        0.716
## item.10       0.618
## item.11       0.695
## item.12       0.606
## item.13       0.546
## item.14       0.443
## 
## $conservative
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.663
## item.2   0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.443
## item.3  -0.106 0.106 -0.093 0.093 -0.472          0.055 -0.146       0.373
## item.4   0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.764
## item.5   0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.826
## item.6   0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.631
## item.7   0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.154
## item.8   0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.787
## item.9   0.148 0.148  0.140 0.140  0.682         -1.259  0.309       0.859
## item.10  0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.657
## item.11  0.112 0.112  0.104 0.104  0.756         -1.040  0.144       0.806
## item.12  0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.573
## item.13  0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.521
## item.14  0.000 0.000  0.000 0.000  0.000         -0.700  0.000       0.444
##         mean.ES.ref
## item.1        0.663
## item.2        0.443
## item.3        0.479
## item.4        0.764
## item.5        0.826
## item.6        0.631
## item.7        0.154
## item.8        0.787
## item.9        0.711
## item.10       0.657
## item.11       0.693
## item.12       0.573
## item.13       0.521
## item.14       0.444
d2013_irt_fit_bias_sex$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                   14.0000                    2.0000                    1.0000 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                   11.0000                    0.1429                    0.0714 
##                prop_noDIF 
##                    0.7857
d2013_irt_fit_bias_sex$fits$anchor_conservative %>% plot(type = "trace")

save_plot_to_file(d2013_irt_fit_bias_sex$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2013_dif_sex.png")

#test bias adjusted scores
d2013$irt_adj = case_when(
  d2013$race2 == "Black" ~ d2013$irt - d2013_irt_fit_bias_bw$effect_size_test$conservative$Value[4],
  d2013$race2 == "Hispanic" ~ d2013$irt - d2013_irt_fit_bias_hw$effect_size_test$conservative$Value[4],
  d2013$sex2 == "Female" ~ d2013$irt - d2013_irt_fit_bias_sex$effect_size_test$conservative$Value[4],
  TRUE ~ d2013$irt
)

2015 quiz

d2015 = haven::read_sav("data/W6_Aug14/ATP W6.sav")
d2015$KNOSCT4_W6 = d2015$KNOSCT4_1_W6
d2015 %<>% filter(F_RACETHN_TYPOLOGY != 9)

d2015$race2 = d2015$F_RACETHN_TYPOLOGY %>% as_factor() %>% str_replace(" non-Hispanic", "") %>% fct_relevel("White")
d2015$race2 %>% table2()
d2015$bw = d2015$race2 %>% mapvalues(from = c("Hispanic", "Other"), to = rep(NA, 2)) %>% fct_relevel("White")
d2015$hw = d2015$race2 %>% mapvalues(from = c("Black", "Other"), to = rep(NA, 2)) %>% fct_relevel("White")

d2015$sex2 = d2015$F_SEX_FINAL %>% as_factor() %>% mapvalues(from = "Other", to = NA) %>% as_factor()
d2015$sex2 %>% table2()
d2015$age_range = d2015$F_AGECAT_TYPOLOGY %>% as_factor()
d2015$age_range %>% table2()
#remove some missing data rows
d2015 = d2015 %>% filter(!is.na(race2), !is.na(sex2), KNOSCT4_W6 != 99)

#score with binary data
answers2015 = c(4, 1, 3, 1, 3, 2, 2, 2, 1, 1, 2, 2)
d2015_test = d2015[str_glue("KNOSCT{1:12}_W6") %>% as.character()]
d2015_test = score_items(d2015_test, key = answers2015)

#IRT
d2015_irt_fit = mirt(
  d2015_test,
  model = 1,
  itemtype = "2PL"
)
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 0.61282
Iteration: 2, Log-Lik: -18536.958, Max-Change: 0.38350
Iteration: 3, Log-Lik: -18485.058, Max-Change: 0.25570
Iteration: 4, Log-Lik: -18468.443, Max-Change: 0.14438
Iteration: 5, Log-Lik: -18463.737, Max-Change: 0.07629
Iteration: 6, Log-Lik: -18462.225, Max-Change: 0.04793
Iteration: 7, Log-Lik: -18461.418, Max-Change: 0.02553
Iteration: 8, Log-Lik: -18461.224, Max-Change: 0.01508
Iteration: 9, Log-Lik: -18461.141, Max-Change: 0.00923
Iteration: 10, Log-Lik: -18461.078, Max-Change: 0.00247
Iteration: 11, Log-Lik: -18461.063, Max-Change: 0.00200
Iteration: 12, Log-Lik: -18461.054, Max-Change: 0.00123
Iteration: 13, Log-Lik: -18461.045, Max-Change: 0.00098
Iteration: 14, Log-Lik: -18461.044, Max-Change: 0.00072
Iteration: 15, Log-Lik: -18461.043, Max-Change: 0.00057
Iteration: 16, Log-Lik: -18461.042, Max-Change: 0.00010
Iteration: 17, Log-Lik: -18461.042, Max-Change: 0.00010
d2015_irt_fit
## 
## Call:
## mirt(data = d2015_test, model = 1, itemtype = "2PL")
## 
## Full-information item factor analysis with 1 factor(s).
## Converged within 1e-04 tolerance after 17 EM iterations.
## mirt version: 1.38.1 
## M-step optimizer: BFGS 
## EM acceleration: Ramsay 
## Number of rectangular quadrature: 61
## Latent density type: Gaussian 
## 
## Log-likelihood = -18461
## Estimated parameters: 24 
## AIC = 36970
## BIC = 37116; SABIC = 37040
d2015_irt_fit %>% summary()
##                F1    h2
## KNOSCT1_W6  0.572 0.328
## KNOSCT2_W6  0.574 0.329
## KNOSCT3_W6  0.626 0.391
## KNOSCT4_W6  0.821 0.675
## KNOSCT5_W6  0.573 0.329
## KNOSCT6_W6  0.434 0.189
## KNOSCT7_W6  0.363 0.132
## KNOSCT8_W6  0.666 0.444
## KNOSCT9_W6  0.540 0.292
## KNOSCT10_W6 0.802 0.643
## KNOSCT11_W6 0.555 0.308
## KNOSCT12_W6 0.530 0.281
## 
## SS loadings:  4.34 
## Proportion Var:  0.362 
## 
## Factor correlations: 
## 
##    F1
## F1  1
d2015_irt_fit %>% coef(simplify = T)
## $items
##                a1      d g u
## KNOSCT1_W6  1.188  2.039 0 1
## KNOSCT2_W6  1.192  1.460 0 1
## KNOSCT3_W6  1.365  2.950 0 1
## KNOSCT4_W6  2.452  3.121 0 1
## KNOSCT5_W6  1.191  1.626 0 1
## KNOSCT6_W6  0.821 -0.513 0 1
## KNOSCT7_W6  0.664 -0.048 0 1
## KNOSCT8_W6  1.520 -0.296 0 1
## KNOSCT9_W6  1.093  1.080 0 1
## KNOSCT10_W6 2.285  3.519 0 1
## KNOSCT11_W6 1.135  1.952 0 1
## KNOSCT12_W6 1.065  1.583 0 1
## 
## $means
## F1 
##  0 
## 
## $cov
##    F1
## F1  1
#plots
d2015_irt_fit %>% plot(type = "info")

d2015_irt_fit %>% plot(type = "rxx")

d2015_irt_fit %>% plot(type = "trace")

#scores
d2015_irt_fit_scores = fscores(d2015_irt_fit, full.scores = T, full.scores.SE = T)
d2015$irt = d2015_irt_fit_scores[, 1] %>% standardize(focal_group = d2015$race2 == "White")
empirical_rxx(d2015_irt_fit_scores)
##    F1 
## 0.689
#gaps
#race
GG_denhist(d2015, "irt", "race2", auto_fraction_bounary = F)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

SMD_matrix(d2015$irt, d2015$race2)
##          White  Black Hispanic  Other
## White       NA  1.116    0.563  0.207
## Black    1.116     NA   -0.553 -0.909
## Hispanic 0.563 -0.553       NA -0.356
## Other    0.207 -0.909   -0.356     NA
SMD_matrix(d2015$irt, d2015$race2, reliability = empirical_rxx(d2015_irt_fit_scores))
##          White  Black Hispanic  Other
## White       NA  1.450    0.691  0.250
## Black    1.450     NA   -0.678 -1.150
## Hispanic 0.691 -0.678       NA -0.432
## Other    0.250 -1.150   -0.432     NA
describe2(d2015$irt, d2015$race2)
## New names:
## • `` -> `...1`
#sex
GG_denhist(d2015, "irt", "sex2")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

SMD_matrix(d2015$irt, d2015$sex2)
##         Male Female
## Male      NA  0.541
## Female 0.541     NA
SMD_matrix(d2015$irt, d2015$sex2, reliability = empirical_rxx(d2015_irt_fit_scores))
##         Male Female
## Male      NA  0.663
## Female 0.663     NA
describe2(d2015$irt, d2015$sex2)
## New names:
## • `` -> `...1`
#test bias
d2015_irt_fit_bias_bw = DIF_test(
  items = d2015_test,
  model = 1,
  group = d2015$bw,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 0.61282
Iteration: 2, Log-Lik: -18536.958, Max-Change: 0.38350
Iteration: 3, Log-Lik: -18485.058, Max-Change: 0.25570
Iteration: 4, Log-Lik: -18468.443, Max-Change: 0.14438
Iteration: 5, Log-Lik: -18463.737, Max-Change: 0.07629
Iteration: 6, Log-Lik: -18462.225, Max-Change: 0.04793
Iteration: 7, Log-Lik: -18461.418, Max-Change: 0.02553
Iteration: 8, Log-Lik: -18461.224, Max-Change: 0.01508
Iteration: 9, Log-Lik: -18461.141, Max-Change: 0.00923
Iteration: 10, Log-Lik: -18461.078, Max-Change: 0.00247
Iteration: 11, Log-Lik: -18461.063, Max-Change: 0.00200
Iteration: 12, Log-Lik: -18461.054, Max-Change: 0.00123
Iteration: 13, Log-Lik: -18461.045, Max-Change: 0.00098
Iteration: 14, Log-Lik: -18461.044, Max-Change: 0.00072
Iteration: 15, Log-Lik: -18461.043, Max-Change: 0.00057
Iteration: 16, Log-Lik: -18461.042, Max-Change: 0.00010
Iteration: 17, Log-Lik: -18461.042, Max-Change: 0.00010
## 
## Step 2: Initial MI fit
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -15979.795, Max-Change: 0.83192
Iteration: 2, Log-Lik: -15694.005, Max-Change: 0.38219
Iteration: 3, Log-Lik: -15641.912, Max-Change: 0.24568
Iteration: 4, Log-Lik: -15627.893, Max-Change: 0.15791
Iteration: 5, Log-Lik: -15622.515, Max-Change: 0.10288
Iteration: 6, Log-Lik: -15620.136, Max-Change: 0.06778
Iteration: 7, Log-Lik: -15618.653, Max-Change: 0.03767
Iteration: 8, Log-Lik: -15618.253, Max-Change: 0.02394
Iteration: 9, Log-Lik: -15618.052, Max-Change: 0.01622
Iteration: 10, Log-Lik: -15617.923, Max-Change: 0.01410
Iteration: 11, Log-Lik: -15617.865, Max-Change: 0.00860
Iteration: 12, Log-Lik: -15617.841, Max-Change: 0.00568
Iteration: 13, Log-Lik: -15617.828, Max-Change: 0.00420
Iteration: 14, Log-Lik: -15617.822, Max-Change: 0.00284
Iteration: 15, Log-Lik: -15617.818, Max-Change: 0.00201
Iteration: 16, Log-Lik: -15617.816, Max-Change: 0.00205
Iteration: 17, Log-Lik: -15617.814, Max-Change: 0.00119
Iteration: 18, Log-Lik: -15617.814, Max-Change: 0.00077
Iteration: 19, Log-Lik: -15617.813, Max-Change: 0.00054
Iteration: 20, Log-Lik: -15617.813, Max-Change: 0.00038
Iteration: 21, Log-Lik: -15617.813, Max-Change: 0.00027
Iteration: 22, Log-Lik: -15617.813, Max-Change: 0.00032
Iteration: 23, Log-Lik: -15617.813, Max-Change: 0.00018
Iteration: 24, Log-Lik: -15617.813, Max-Change: 0.00011
Iteration: 25, Log-Lik: -15617.813, Max-Change: 0.00008
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -19546.518, Max-Change: 0.48594
Iteration: 2, Log-Lik: -19428.941, Max-Change: 0.35467
Iteration: 3, Log-Lik: -19388.189, Max-Change: 0.22723
Iteration: 4, Log-Lik: -19374.082, Max-Change: 0.16195
Iteration: 5, Log-Lik: -19368.116, Max-Change: 0.11661
Iteration: 6, Log-Lik: -19365.722, Max-Change: 0.06874
Iteration: 7, Log-Lik: -19364.638, Max-Change: 0.04204
Iteration: 8, Log-Lik: -19364.338, Max-Change: 0.02708
Iteration: 9, Log-Lik: -19364.209, Max-Change: 0.02177
Iteration: 10, Log-Lik: -19364.090, Max-Change: 0.00167
Iteration: 11, Log-Lik: -19364.087, Max-Change: 0.00087
Iteration: 12, Log-Lik: -19364.087, Max-Change: 0.00028
Iteration: 13, Log-Lik: -19364.086, Max-Change: 0.00027
Iteration: 14, Log-Lik: -19364.086, Max-Change: 0.00025
Iteration: 15, Log-Lik: -19364.086, Max-Change: 0.00023
Iteration: 16, Log-Lik: -19364.086, Max-Change: 0.00067
Iteration: 17, Log-Lik: -19364.086, Max-Change: 0.00059
Iteration: 18, Log-Lik: -19364.086, Max-Change: 0.00031
Iteration: 19, Log-Lik: -19364.086, Max-Change: 0.00016
Iteration: 20, Log-Lik: -19364.086, Max-Change: 0.00054
Iteration: 21, Log-Lik: -19364.086, Max-Change: 0.00024
Iteration: 22, Log-Lik: -19364.086, Max-Change: 0.00013
Iteration: 23, Log-Lik: -19364.086, Max-Change: 0.00044
Iteration: 24, Log-Lik: -19364.086, Max-Change: 0.00019
Iteration: 25, Log-Lik: -19364.086, Max-Change: 0.00011
Iteration: 26, Log-Lik: -19364.086, Max-Change: 0.00039
Iteration: 27, Log-Lik: -19364.086, Max-Change: 0.00016
Iteration: 28, Log-Lik: -19364.086, Max-Change: 0.00009
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -19248.429, Max-Change: 0.55062
Iteration: 2, Log-Lik: -19103.600, Max-Change: 0.36793
Iteration: 3, Log-Lik: -19061.872, Max-Change: 0.24647
Iteration: 4, Log-Lik: -19048.069, Max-Change: 0.14119
Iteration: 5, Log-Lik: -19043.751, Max-Change: 0.09810
Iteration: 6, Log-Lik: -19042.128, Max-Change: 0.05013
Iteration: 7, Log-Lik: -19041.501, Max-Change: 0.04475
Iteration: 8, Log-Lik: -19041.184, Max-Change: 0.03253
Iteration: 9, Log-Lik: -19041.041, Max-Change: 0.01287
Iteration: 10, Log-Lik: -19041.018, Max-Change: 0.02138
Iteration: 11, Log-Lik: -19040.965, Max-Change: 0.00931
Iteration: 12, Log-Lik: -19040.944, Max-Change: 0.00612
Iteration: 13, Log-Lik: -19040.928, Max-Change: 0.00135
Iteration: 14, Log-Lik: -19040.926, Max-Change: 0.00116
Iteration: 15, Log-Lik: -19040.924, Max-Change: 0.00163
Iteration: 16, Log-Lik: -19040.923, Max-Change: 0.00104
Iteration: 17, Log-Lik: -19040.923, Max-Change: 0.00021
Iteration: 18, Log-Lik: -19040.923, Max-Change: 0.00015
Iteration: 19, Log-Lik: -19040.923, Max-Change: 0.00014
Iteration: 20, Log-Lik: -19040.923, Max-Change: 0.00012
Iteration: 21, Log-Lik: -19040.923, Max-Change: 0.00053
Iteration: 22, Log-Lik: -19040.923, Max-Change: 0.00037
Iteration: 23, Log-Lik: -19040.923, Max-Change: 0.00027
Iteration: 24, Log-Lik: -19040.923, Max-Change: 0.00020
Iteration: 25, Log-Lik: -19040.923, Max-Change: 0.00009
## 
## Step 6: Fit with anchor items, liberal threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -15979.795, Max-Change: 0.83180
Iteration: 2, Log-Lik: -15658.677, Max-Change: 0.38077
Iteration: 3, Log-Lik: -15600.944, Max-Change: 0.23805
Iteration: 4, Log-Lik: -15585.612, Max-Change: 0.14171
Iteration: 5, Log-Lik: -15580.312, Max-Change: 0.11485
Iteration: 6, Log-Lik: -15577.929, Max-Change: 0.09762
Iteration: 7, Log-Lik: -15576.141, Max-Change: 0.05623
Iteration: 8, Log-Lik: -15575.522, Max-Change: 0.05150
Iteration: 9, Log-Lik: -15575.172, Max-Change: 0.05047
Iteration: 10, Log-Lik: -15575.026, Max-Change: 0.08212
Iteration: 11, Log-Lik: -15574.626, Max-Change: 0.01916
Iteration: 12, Log-Lik: -15574.533, Max-Change: 0.01238
Iteration: 13, Log-Lik: -15574.486, Max-Change: 0.01721
Iteration: 14, Log-Lik: -15574.454, Max-Change: 0.01611
Iteration: 15, Log-Lik: -15574.431, Max-Change: 0.01401
Iteration: 16, Log-Lik: -15574.422, Max-Change: 0.02274
Iteration: 17, Log-Lik: -15574.388, Max-Change: 0.00509
Iteration: 18, Log-Lik: -15574.380, Max-Change: 0.00334
Iteration: 19, Log-Lik: -15574.377, Max-Change: 0.00508
Iteration: 20, Log-Lik: -15574.374, Max-Change: 0.00463
Iteration: 21, Log-Lik: -15574.372, Max-Change: 0.00415
Iteration: 22, Log-Lik: -15574.371, Max-Change: 0.00672
Iteration: 23, Log-Lik: -15574.368, Max-Change: 0.00150
Iteration: 24, Log-Lik: -15574.367, Max-Change: 0.00100
Iteration: 25, Log-Lik: -15574.367, Max-Change: 0.00134
Iteration: 26, Log-Lik: -15574.366, Max-Change: 0.00137
Iteration: 27, Log-Lik: -15574.366, Max-Change: 0.00119
Iteration: 28, Log-Lik: -15574.366, Max-Change: 0.00135
Iteration: 29, Log-Lik: -15574.366, Max-Change: 0.00046
Iteration: 30, Log-Lik: -15574.366, Max-Change: 0.00031
Iteration: 31, Log-Lik: -15574.366, Max-Change: 0.00037
Iteration: 32, Log-Lik: -15574.366, Max-Change: 0.00040
Iteration: 33, Log-Lik: -15574.366, Max-Change: 0.00033
Iteration: 34, Log-Lik: -15574.366, Max-Change: 0.00023
Iteration: 35, Log-Lik: -15574.366, Max-Change: 0.00014
Iteration: 36, Log-Lik: -15574.366, Max-Change: 0.00010
## 
## Step 7: Fit with anchor items, conservative threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -15979.795, Max-Change: 0.83186
Iteration: 2, Log-Lik: -15662.003, Max-Change: 0.38408
Iteration: 3, Log-Lik: -15605.899, Max-Change: 0.23615
Iteration: 4, Log-Lik: -15591.702, Max-Change: 0.14693
Iteration: 5, Log-Lik: -15586.530, Max-Change: 0.10196
Iteration: 6, Log-Lik: -15584.260, Max-Change: 0.09538
Iteration: 7, Log-Lik: -15582.640, Max-Change: 0.04839
Iteration: 8, Log-Lik: -15582.180, Max-Change: 0.04700
Iteration: 9, Log-Lik: -15581.937, Max-Change: 0.04646
Iteration: 10, Log-Lik: -15581.833, Max-Change: 0.07022
Iteration: 11, Log-Lik: -15581.641, Max-Change: 0.01579
Iteration: 12, Log-Lik: -15581.590, Max-Change: 0.00898
Iteration: 13, Log-Lik: -15581.567, Max-Change: 0.00856
Iteration: 14, Log-Lik: -15581.554, Max-Change: 0.00925
Iteration: 15, Log-Lik: -15581.546, Max-Change: 0.00845
Iteration: 16, Log-Lik: -15581.542, Max-Change: 0.01304
Iteration: 17, Log-Lik: -15581.534, Max-Change: 0.00313
Iteration: 18, Log-Lik: -15581.532, Max-Change: 0.00176
Iteration: 19, Log-Lik: -15581.531, Max-Change: 0.00168
Iteration: 20, Log-Lik: -15581.530, Max-Change: 0.00189
Iteration: 21, Log-Lik: -15581.530, Max-Change: 0.00172
Iteration: 22, Log-Lik: -15581.530, Max-Change: 0.00212
Iteration: 23, Log-Lik: -15581.529, Max-Change: 0.00058
Iteration: 24, Log-Lik: -15581.529, Max-Change: 0.00038
Iteration: 25, Log-Lik: -15581.529, Max-Change: 0.00027
Iteration: 26, Log-Lik: -15581.529, Max-Change: 0.00037
Iteration: 27, Log-Lik: -15581.529, Max-Change: 0.00031
Iteration: 28, Log-Lik: -15581.529, Max-Change: 0.00019
Iteration: 29, Log-Lik: -15581.529, Max-Change: 0.00012
Iteration: 30, Log-Lik: -15581.529, Max-Change: 0.00008
## 
## Step 8: Get scores
d2015_irt_fit_bias_hw = DIF_test(
  items = d2015_test,
  model = 1,
  group = d2015$hw,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 0.61282
Iteration: 2, Log-Lik: -18536.958, Max-Change: 0.38350
Iteration: 3, Log-Lik: -18485.058, Max-Change: 0.25570
Iteration: 4, Log-Lik: -18468.443, Max-Change: 0.14438
Iteration: 5, Log-Lik: -18463.737, Max-Change: 0.07629
Iteration: 6, Log-Lik: -18462.225, Max-Change: 0.04793
Iteration: 7, Log-Lik: -18461.418, Max-Change: 0.02553
Iteration: 8, Log-Lik: -18461.224, Max-Change: 0.01508
Iteration: 9, Log-Lik: -18461.141, Max-Change: 0.00923
Iteration: 10, Log-Lik: -18461.078, Max-Change: 0.00247
Iteration: 11, Log-Lik: -18461.063, Max-Change: 0.00200
Iteration: 12, Log-Lik: -18461.054, Max-Change: 0.00123
Iteration: 13, Log-Lik: -18461.045, Max-Change: 0.00098
Iteration: 14, Log-Lik: -18461.044, Max-Change: 0.00072
Iteration: 15, Log-Lik: -18461.043, Max-Change: 0.00057
Iteration: 16, Log-Lik: -18461.042, Max-Change: 0.00010
Iteration: 17, Log-Lik: -18461.042, Max-Change: 0.00010
## 
## Step 2: Initial MI fit
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -15537.651, Max-Change: 0.60305
Iteration: 2, Log-Lik: -15351.148, Max-Change: 0.34746
Iteration: 3, Log-Lik: -15312.940, Max-Change: 0.19806
Iteration: 4, Log-Lik: -15302.643, Max-Change: 0.11881
Iteration: 5, Log-Lik: -15298.930, Max-Change: 0.07401
Iteration: 6, Log-Lik: -15297.367, Max-Change: 0.04939
Iteration: 7, Log-Lik: -15296.386, Max-Change: 0.04407
Iteration: 8, Log-Lik: -15296.148, Max-Change: 0.02763
Iteration: 9, Log-Lik: -15296.026, Max-Change: 0.01856
Iteration: 10, Log-Lik: -15295.931, Max-Change: 0.01662
Iteration: 11, Log-Lik: -15295.902, Max-Change: 0.00959
Iteration: 12, Log-Lik: -15295.890, Max-Change: 0.00613
Iteration: 13, Log-Lik: -15295.881, Max-Change: 0.00493
Iteration: 14, Log-Lik: -15295.878, Max-Change: 0.00297
Iteration: 15, Log-Lik: -15295.876, Max-Change: 0.00196
Iteration: 16, Log-Lik: -15295.875, Max-Change: 0.00172
Iteration: 17, Log-Lik: -15295.874, Max-Change: 0.00100
Iteration: 18, Log-Lik: -15295.874, Max-Change: 0.00065
Iteration: 19, Log-Lik: -15295.874, Max-Change: 0.00055
Iteration: 20, Log-Lik: -15295.874, Max-Change: 0.00032
Iteration: 21, Log-Lik: -15295.874, Max-Change: 0.00021
Iteration: 22, Log-Lik: -15295.874, Max-Change: 0.00019
Iteration: 23, Log-Lik: -15295.874, Max-Change: 0.00012
Iteration: 24, Log-Lik: -15295.874, Max-Change: 0.00007
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -19062.703, Max-Change: 0.61701
Iteration: 2, Log-Lik: -18880.106, Max-Change: 0.37378
Iteration: 3, Log-Lik: -18830.653, Max-Change: 0.22036
Iteration: 4, Log-Lik: -18815.058, Max-Change: 0.15398
Iteration: 5, Log-Lik: -18809.673, Max-Change: 0.09380
Iteration: 6, Log-Lik: -18807.710, Max-Change: 0.06511
Iteration: 7, Log-Lik: -18806.816, Max-Change: 0.04287
Iteration: 8, Log-Lik: -18806.497, Max-Change: 0.02801
Iteration: 9, Log-Lik: -18806.354, Max-Change: 0.01698
Iteration: 10, Log-Lik: -18806.263, Max-Change: 0.00943
Iteration: 11, Log-Lik: -18806.238, Max-Change: 0.00636
Iteration: 12, Log-Lik: -18806.225, Max-Change: 0.00263
Iteration: 13, Log-Lik: -18806.220, Max-Change: 0.00209
Iteration: 14, Log-Lik: -18806.216, Max-Change: 0.00165
Iteration: 15, Log-Lik: -18806.213, Max-Change: 0.00242
Iteration: 16, Log-Lik: -18806.211, Max-Change: 0.00138
Iteration: 17, Log-Lik: -18806.210, Max-Change: 0.00032
Iteration: 18, Log-Lik: -18806.210, Max-Change: 0.00025
Iteration: 19, Log-Lik: -18806.210, Max-Change: 0.00022
Iteration: 20, Log-Lik: -18806.209, Max-Change: 0.00019
Iteration: 21, Log-Lik: -18806.209, Max-Change: 0.00017
Iteration: 22, Log-Lik: -18806.209, Max-Change: 0.00048
Iteration: 23, Log-Lik: -18806.209, Max-Change: 0.00042
Iteration: 24, Log-Lik: -18806.209, Max-Change: 0.00036
Iteration: 25, Log-Lik: -18806.209, Max-Change: 0.00012
Iteration: 26, Log-Lik: -18806.209, Max-Change: 0.00005
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 0.61282
Iteration: 2, Log-Lik: -18536.958, Max-Change: 0.38350
Iteration: 3, Log-Lik: -18485.058, Max-Change: 0.25570
Iteration: 4, Log-Lik: -18468.443, Max-Change: 0.14438
Iteration: 5, Log-Lik: -18463.737, Max-Change: 0.07629
Iteration: 6, Log-Lik: -18462.225, Max-Change: 0.04793
Iteration: 7, Log-Lik: -18461.418, Max-Change: 0.02553
Iteration: 8, Log-Lik: -18461.224, Max-Change: 0.01508
Iteration: 9, Log-Lik: -18461.141, Max-Change: 0.00923
Iteration: 10, Log-Lik: -18461.078, Max-Change: 0.00247
Iteration: 11, Log-Lik: -18461.063, Max-Change: 0.00200
Iteration: 12, Log-Lik: -18461.054, Max-Change: 0.00123
Iteration: 13, Log-Lik: -18461.045, Max-Change: 0.00098
Iteration: 14, Log-Lik: -18461.044, Max-Change: 0.00072
Iteration: 15, Log-Lik: -18461.043, Max-Change: 0.00057
Iteration: 16, Log-Lik: -18461.042, Max-Change: 0.00010
Iteration: 17, Log-Lik: -18461.042, Max-Change: 0.00010
## 
## Step 6: Fit with anchor items, liberal threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -15537.651, Max-Change: 0.60303
Iteration: 2, Log-Lik: -15344.562, Max-Change: 0.36134
Iteration: 3, Log-Lik: -15304.563, Max-Change: 0.19643
Iteration: 4, Log-Lik: -15294.344, Max-Change: 0.11672
Iteration: 5, Log-Lik: -15290.723, Max-Change: 0.07148
Iteration: 6, Log-Lik: -15289.152, Max-Change: 0.05470
Iteration: 7, Log-Lik: -15288.089, Max-Change: 0.05270
Iteration: 8, Log-Lik: -15287.793, Max-Change: 0.03574
Iteration: 9, Log-Lik: -15287.625, Max-Change: 0.02897
Iteration: 10, Log-Lik: -15287.487, Max-Change: 0.02694
Iteration: 11, Log-Lik: -15287.423, Max-Change: 0.01448
Iteration: 12, Log-Lik: -15287.401, Max-Change: 0.00918
Iteration: 13, Log-Lik: -15287.389, Max-Change: 0.00674
Iteration: 14, Log-Lik: -15287.383, Max-Change: 0.00484
Iteration: 15, Log-Lik: -15287.380, Max-Change: 0.00407
Iteration: 16, Log-Lik: -15287.377, Max-Change: 0.00394
Iteration: 17, Log-Lik: -15287.375, Max-Change: 0.00206
Iteration: 18, Log-Lik: -15287.375, Max-Change: 0.00128
Iteration: 19, Log-Lik: -15287.375, Max-Change: 0.00089
Iteration: 20, Log-Lik: -15287.374, Max-Change: 0.00073
Iteration: 21, Log-Lik: -15287.374, Max-Change: 0.00047
Iteration: 22, Log-Lik: -15287.374, Max-Change: 0.00039
Iteration: 23, Log-Lik: -15287.374, Max-Change: 0.00026
Iteration: 24, Log-Lik: -15287.374, Max-Change: 0.00021
Iteration: 25, Log-Lik: -15287.374, Max-Change: 0.00022
Iteration: 26, Log-Lik: -15287.374, Max-Change: 0.00012
Iteration: 27, Log-Lik: -15287.374, Max-Change: 0.00008
## 
## Step 7: Fit with anchor items, conservative threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -15537.651, Max-Change: 0.60305
Iteration: 2, Log-Lik: -15351.148, Max-Change: 0.34746
Iteration: 3, Log-Lik: -15312.940, Max-Change: 0.19806
Iteration: 4, Log-Lik: -15302.643, Max-Change: 0.11881
Iteration: 5, Log-Lik: -15298.930, Max-Change: 0.07401
Iteration: 6, Log-Lik: -15297.367, Max-Change: 0.04939
Iteration: 7, Log-Lik: -15296.386, Max-Change: 0.04407
Iteration: 8, Log-Lik: -15296.148, Max-Change: 0.02763
Iteration: 9, Log-Lik: -15296.026, Max-Change: 0.01856
Iteration: 10, Log-Lik: -15295.931, Max-Change: 0.01662
Iteration: 11, Log-Lik: -15295.902, Max-Change: 0.00959
Iteration: 12, Log-Lik: -15295.890, Max-Change: 0.00613
Iteration: 13, Log-Lik: -15295.881, Max-Change: 0.00493
Iteration: 14, Log-Lik: -15295.878, Max-Change: 0.00297
Iteration: 15, Log-Lik: -15295.876, Max-Change: 0.00196
Iteration: 16, Log-Lik: -15295.875, Max-Change: 0.00172
Iteration: 17, Log-Lik: -15295.874, Max-Change: 0.00100
Iteration: 18, Log-Lik: -15295.874, Max-Change: 0.00065
Iteration: 19, Log-Lik: -15295.874, Max-Change: 0.00055
Iteration: 20, Log-Lik: -15295.874, Max-Change: 0.00032
Iteration: 21, Log-Lik: -15295.874, Max-Change: 0.00021
Iteration: 22, Log-Lik: -15295.874, Max-Change: 0.00019
Iteration: 23, Log-Lik: -15295.874, Max-Change: 0.00012
Iteration: 24, Log-Lik: -15295.874, Max-Change: 0.00007
## 
## Step 8: Get scores
d2015_irt_fit_bias_bw$effect_size_test
## $liberal
##           Effect Size  Value
## 1                STDS  0.251
## 2                UTDS  0.546
## 3              UETSDS  0.251
## 4               ETSSD  0.143
## 5         Starks.DTFR  0.191
## 6               UDTFR  0.579
## 7              UETSDN  0.232
## 8 theta.of.max.test.D -1.021
## 9           Test.Dmax  0.337
## 
## $conservative
##           Effect Size   Value
## 1                STDS  0.1678
## 2                UTDS  0.3706
## 3              UETSDS  0.1714
## 4               ETSSD  0.0948
## 5         Starks.DTFR  0.1103
## 6               UDTFR  0.3943
## 7              UETSDN  0.1750
## 8 theta.of.max.test.D -1.1665
## 9           Test.Dmax  0.2353
d2015_irt_fit_bias_bw$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.063  0.000       0.668
## item.2  -0.025 0.077 -0.026 0.085 -0.135         -2.447 -0.157       0.538
## item.3   0.000 0.000  0.000 0.000  0.000         -0.063  0.000       0.788
## item.4   0.000 0.000  0.000 0.000  0.000         -0.063  0.000       0.583
## item.5   0.000 0.000  0.000 0.000  0.000         -0.063  0.000       0.593
## item.6   0.182 0.182  0.161 0.176  2.983         -2.622  0.245       0.345
## item.7   0.000 0.000  0.000 0.000  0.000         -0.063  0.000       0.320
## item.8   0.083 0.092  0.049 0.105  0.952         -1.681  0.122       0.213
## item.9   0.000 0.000  0.000 0.000  0.000         -0.063  0.000       0.476
## item.10  0.000 0.000  0.000 0.000  0.000         -0.063  0.000       0.694
## item.11 -0.082 0.101 -0.086 0.112 -0.463         -2.622 -0.264       0.621
## item.12  0.093 0.095  0.093 0.100  0.722         -2.622  0.211       0.670
##         mean.ES.ref
## item.1        0.668
## item.2        0.563
## item.3        0.788
## item.4        0.583
## item.5        0.593
## item.6        0.163
## item.7        0.320
## item.8        0.130
## item.9        0.476
## item.10       0.694
## item.11       0.702
## item.12       0.576
## 
## $conservative
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.672
## item.2   0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.553
## item.3   0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.791
## item.4   0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.590
## item.5   0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.597
## item.6   0.178 0.178  0.157 0.176  2.831         -2.594  0.252       0.345
## item.7   0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.323
## item.8   0.076 0.092  0.043 0.109  0.848         -0.004 -0.138       0.213
## item.9   0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.481
## item.10  0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.698
## item.11 -0.087 0.101 -0.090 0.110 -0.495         -2.594 -0.260       0.621
## item.12  0.000 0.000  0.000 0.000  0.000         -0.004  0.000       0.614
##         mean.ES.ref
## item.1        0.672
## item.2        0.553
## item.3        0.791
## item.4        0.590
## item.5        0.597
## item.6        0.167
## item.7        0.323
## item.8        0.137
## item.9        0.481
## item.10       0.698
## item.11       0.707
## item.12       0.614
d2015_irt_fit_bias_bw$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                   12.0000                    2.0000                    1.0000 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                    9.0000                    0.1667                    0.0833 
##                prop_noDIF 
##                    0.7500
d2015_irt_fit_bias_bw$fits$anchor_conservative %>% plot(type = "trace")

save_plot_to_file(d2015_irt_fit_bias_bw$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2015_dif_bw.png")

d2015_irt_fit_bias_hw$effect_size_test
## $liberal
##           Effect Size    Value
## 1                STDS  0.00378
## 2                UTDS  0.15572
## 3              UETSDS  0.06192
## 4               ETSSD  0.00187
## 5         Starks.DTFR -0.00840
## 6               UDTFR  0.16558
## 7              UETSDN  0.06718
## 8 theta.of.max.test.D -2.24090
## 9           Test.Dmax -0.12230
## 
## $conservative
##           Effect Size Value
## 1                STDS  0.00
## 2                UTDS  0.00
## 3              UETSDS  0.00
## 4               ETSSD  0.00
## 5         Starks.DTFR  0.00
## 6               UDTFR  0.00
## 7              UETSDN  0.00
## 8 theta.of.max.test.D -1.08
## 9           Test.Dmax  0.00
d2015_irt_fit_bias_hw$effect_size_items
## $liberal
##          SIDS  UIDS   SIDN  UIDN  ESSD theta.of.max.D  max.D mean.ES.foc
## item.1  0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.773
## item.2  0.004 0.089 -0.004 0.092 0.017         -2.241 -0.213       0.693
## item.3  0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.868
## item.4  0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.781
## item.5  0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.721
## item.6  0.000 0.066 -0.005 0.074 0.000          0.825 -0.172       0.277
## item.7  0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.423
## item.8  0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.303
## item.9  0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.621
## item.10 0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.832
## item.11 0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.789
## item.12 0.000 0.000  0.000 0.000 0.000         -0.989  0.000       0.713
##         mean.ES.ref
## item.1        0.773
## item.2        0.689
## item.3        0.868
## item.4        0.781
## item.5        0.721
## item.6        0.277
## item.7        0.423
## item.8        0.303
## item.9        0.621
## item.10       0.832
## item.11       0.789
## item.12       0.713
## 
## $conservative
##         SIDS UIDS SIDN UIDN ESSD theta.of.max.D max.D mean.ES.foc mean.ES.ref
## item.1     0    0    0    0    0          -1.08     0       0.773       0.773
## item.2     0    0    0    0    0          -1.08     0       0.683       0.683
## item.3     0    0    0    0    0          -1.08     0       0.869       0.869
## item.4     0    0    0    0    0          -1.08     0       0.782       0.782
## item.5     0    0    0    0    0          -1.08     0       0.722       0.722
## item.6     0    0    0    0    0          -1.08     0       0.280       0.280
## item.7     0    0    0    0    0          -1.08     0       0.423       0.423
## item.8     0    0    0    0    0          -1.08     0       0.300       0.300
## item.9     0    0    0    0    0          -1.08     0       0.620       0.620
## item.10    0    0    0    0    0          -1.08     0       0.833       0.833
## item.11    0    0    0    0    0          -1.08     0       0.789       0.789
## item.12    0    0    0    0    0          -1.08     0       0.712       0.712
d2015_irt_fit_bias_hw$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                        12                         0                         0 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                        12                         0                         0 
##                prop_noDIF 
##                         1
d2015_irt_fit_bias_hw$fits$anchor_conservative %>% plot(type = "trace")

d2015_irt_fit_bias_hw$fits$anchor_liberal %>% plot(type = "trace")

save_plot_to_file(d2015_irt_fit_bias_hw$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2015_dif_hw.png")
save_plot_to_file(d2015_irt_fit_bias_hw$fits$anchor_liberal %>% plot(type = "trace"), filename = "figs/2015_dif_hw_lowstandards.png")

d2015_irt_fit_bias_sex = DIF_test(
  items = d2015_test,
  model = 1,
  group = d2015$sex2,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 0.61282
Iteration: 2, Log-Lik: -18536.958, Max-Change: 0.38350
Iteration: 3, Log-Lik: -18485.058, Max-Change: 0.25570
Iteration: 4, Log-Lik: -18468.443, Max-Change: 0.14438
Iteration: 5, Log-Lik: -18463.737, Max-Change: 0.07629
Iteration: 6, Log-Lik: -18462.225, Max-Change: 0.04793
Iteration: 7, Log-Lik: -18461.418, Max-Change: 0.02553
Iteration: 8, Log-Lik: -18461.224, Max-Change: 0.01508
Iteration: 9, Log-Lik: -18461.141, Max-Change: 0.00923
Iteration: 10, Log-Lik: -18461.078, Max-Change: 0.00247
Iteration: 11, Log-Lik: -18461.063, Max-Change: 0.00200
Iteration: 12, Log-Lik: -18461.054, Max-Change: 0.00123
Iteration: 13, Log-Lik: -18461.045, Max-Change: 0.00098
Iteration: 14, Log-Lik: -18461.044, Max-Change: 0.00072
Iteration: 15, Log-Lik: -18461.043, Max-Change: 0.00057
Iteration: 16, Log-Lik: -18461.042, Max-Change: 0.00010
Iteration: 17, Log-Lik: -18461.042, Max-Change: 0.00010
## 
## Step 2: Initial MI fit
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 0.61607
Iteration: 2, Log-Lik: -18469.730, Max-Change: 0.40125
Iteration: 3, Log-Lik: -18412.973, Max-Change: 0.25217
Iteration: 4, Log-Lik: -18390.043, Max-Change: 0.16397
Iteration: 5, Log-Lik: -18376.537, Max-Change: 0.11849
Iteration: 6, Log-Lik: -18367.218, Max-Change: 0.09530
Iteration: 7, Log-Lik: -18360.405, Max-Change: 0.07919
Iteration: 8, Log-Lik: -18355.350, Max-Change: 0.06233
Iteration: 9, Log-Lik: -18351.611, Max-Change: 0.05303
Iteration: 10, Log-Lik: -18348.836, Max-Change: 0.05184
Iteration: 11, Log-Lik: -18342.983, Max-Change: 0.02447
Iteration: 12, Log-Lik: -18341.952, Max-Change: 0.01473
Iteration: 13, Log-Lik: -18341.433, Max-Change: 0.01650
Iteration: 14, Log-Lik: -18341.049, Max-Change: 0.01665
Iteration: 15, Log-Lik: -18340.759, Max-Change: 0.01553
Iteration: 16, Log-Lik: -18340.555, Max-Change: 0.01467
Iteration: 17, Log-Lik: -18340.059, Max-Change: 0.00612
Iteration: 18, Log-Lik: -18339.973, Max-Change: 0.00373
Iteration: 19, Log-Lik: -18339.930, Max-Change: 0.00482
Iteration: 20, Log-Lik: -18339.896, Max-Change: 0.00501
Iteration: 21, Log-Lik: -18339.871, Max-Change: 0.00471
Iteration: 22, Log-Lik: -18339.848, Max-Change: 0.00478
Iteration: 23, Log-Lik: -18339.803, Max-Change: 0.00152
Iteration: 24, Log-Lik: -18339.795, Max-Change: 0.00113
Iteration: 25, Log-Lik: -18339.791, Max-Change: 0.00150
Iteration: 26, Log-Lik: -18339.788, Max-Change: 0.00155
Iteration: 27, Log-Lik: -18339.785, Max-Change: 0.00143
Iteration: 28, Log-Lik: -18339.782, Max-Change: 0.00172
Iteration: 29, Log-Lik: -18339.777, Max-Change: 0.00045
Iteration: 30, Log-Lik: -18339.776, Max-Change: 0.00043
Iteration: 31, Log-Lik: -18339.776, Max-Change: 0.00046
Iteration: 32, Log-Lik: -18339.775, Max-Change: 0.00050
Iteration: 33, Log-Lik: -18339.775, Max-Change: 0.00044
Iteration: 34, Log-Lik: -18339.774, Max-Change: 0.00067
Iteration: 35, Log-Lik: -18339.774, Max-Change: 0.00016
Iteration: 36, Log-Lik: -18339.773, Max-Change: 0.00015
Iteration: 37, Log-Lik: -18339.773, Max-Change: 0.00018
Iteration: 38, Log-Lik: -18339.773, Max-Change: 0.00015
Iteration: 39, Log-Lik: -18339.773, Max-Change: 0.00014
Iteration: 40, Log-Lik: -18339.773, Max-Change: 0.00026
Iteration: 41, Log-Lik: -18339.773, Max-Change: 0.00006
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -19591.795, Max-Change: 0.41798
Iteration: 2, Log-Lik: -19502.476, Max-Change: 0.30012
Iteration: 3, Log-Lik: -19471.671, Max-Change: 0.18932
Iteration: 4, Log-Lik: -19461.103, Max-Change: 0.13942
Iteration: 5, Log-Lik: -19456.685, Max-Change: 0.08459
Iteration: 6, Log-Lik: -19455.150, Max-Change: 0.07595
Iteration: 7, Log-Lik: -19454.183, Max-Change: 0.01984
Iteration: 8, Log-Lik: -19453.845, Max-Change: 0.01133
Iteration: 9, Log-Lik: -19453.799, Max-Change: 0.00703
Iteration: 10, Log-Lik: -19453.784, Max-Change: 0.00265
Iteration: 11, Log-Lik: -19453.781, Max-Change: 0.00142
Iteration: 12, Log-Lik: -19453.779, Max-Change: 0.00096
Iteration: 13, Log-Lik: -19453.778, Max-Change: 0.00026
Iteration: 14, Log-Lik: -19453.778, Max-Change: 0.00021
Iteration: 15, Log-Lik: -19453.778, Max-Change: 0.00095
Iteration: 16, Log-Lik: -19453.778, Max-Change: 0.00014
Iteration: 17, Log-Lik: -19453.778, Max-Change: 0.00064
Iteration: 18, Log-Lik: -19453.778, Max-Change: 0.00018
Iteration: 19, Log-Lik: -19453.778, Max-Change: 0.00011
Iteration: 20, Log-Lik: -19453.778, Max-Change: 0.00051
Iteration: 21, Log-Lik: -19453.778, Max-Change: 0.00018
Iteration: 22, Log-Lik: -19453.778, Max-Change: 0.00010
Iteration: 23, Log-Lik: -19453.778, Max-Change: 0.00036
Iteration: 24, Log-Lik: -19453.778, Max-Change: 0.00016
Iteration: 25, Log-Lik: -19453.778, Max-Change: 0.00009
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -19440.795, Max-Change: 0.47748
Iteration: 2, Log-Lik: -19335.916, Max-Change: 0.31954
Iteration: 3, Log-Lik: -19303.273, Max-Change: 0.20574
Iteration: 4, Log-Lik: -19292.555, Max-Change: 0.14208
Iteration: 5, Log-Lik: -19288.303, Max-Change: 0.09856
Iteration: 6, Log-Lik: -19286.580, Max-Change: 0.06703
Iteration: 7, Log-Lik: -19285.590, Max-Change: 0.02949
Iteration: 8, Log-Lik: -19285.473, Max-Change: 0.01950
Iteration: 9, Log-Lik: -19285.425, Max-Change: 0.01314
Iteration: 10, Log-Lik: -19285.390, Max-Change: 0.00456
Iteration: 11, Log-Lik: -19285.385, Max-Change: 0.00443
Iteration: 12, Log-Lik: -19285.381, Max-Change: 0.00291
Iteration: 13, Log-Lik: -19285.380, Max-Change: 0.00241
Iteration: 14, Log-Lik: -19285.379, Max-Change: 0.00035
Iteration: 15, Log-Lik: -19285.379, Max-Change: 0.00035
Iteration: 16, Log-Lik: -19285.379, Max-Change: 0.00031
Iteration: 17, Log-Lik: -19285.379, Max-Change: 0.00139
Iteration: 18, Log-Lik: -19285.379, Max-Change: 0.00097
Iteration: 19, Log-Lik: -19285.378, Max-Change: 0.00080
Iteration: 20, Log-Lik: -19285.378, Max-Change: 0.00026
Iteration: 21, Log-Lik: -19285.378, Max-Change: 0.00062
Iteration: 22, Log-Lik: -19285.378, Max-Change: 0.00031
Iteration: 23, Log-Lik: -19285.378, Max-Change: 0.00011
Iteration: 24, Log-Lik: -19285.378, Max-Change: 0.00052
Iteration: 25, Log-Lik: -19285.378, Max-Change: 0.00011
Iteration: 26, Log-Lik: -19285.378, Max-Change: 0.00042
Iteration: 27, Log-Lik: -19285.378, Max-Change: 0.00017
Iteration: 28, Log-Lik: -19285.378, Max-Change: 0.00009
## 
## Step 6: Fit with anchor items, liberal threshold
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 1.45294
Iteration: 2, Log-Lik: -18385.212, Max-Change: 0.52970
Iteration: 3, Log-Lik: -18328.634, Max-Change: 0.30971
Iteration: 4, Log-Lik: -18310.236, Max-Change: 0.16407
Iteration: 5, Log-Lik: -18301.455, Max-Change: 0.23578
Iteration: 6, Log-Lik: -18295.307, Max-Change: 0.15262
Iteration: 7, Log-Lik: -18290.876, Max-Change: 0.12944
Iteration: 8, Log-Lik: -18287.465, Max-Change: 0.11495
Iteration: 9, Log-Lik: -18284.782, Max-Change: 0.08956
Iteration: 10, Log-Lik: -18281.456, Max-Change: 0.04372
Iteration: 11, Log-Lik: -18278.267, Max-Change: 0.02467
Iteration: 12, Log-Lik: -18277.257, Max-Change: 0.02326
Iteration: 13, Log-Lik: -18276.200, Max-Change: 0.01841
Iteration: 14, Log-Lik: -18275.534, Max-Change: 0.01795
Iteration: 15, Log-Lik: -18275.108, Max-Change: 0.01945
Iteration: 16, Log-Lik: -18274.824, Max-Change: 0.01990
Iteration: 17, Log-Lik: -18273.981, Max-Change: 0.01090
Iteration: 18, Log-Lik: -18273.805, Max-Change: 0.00807
Iteration: 19, Log-Lik: -18273.667, Max-Change: 0.00785
Iteration: 20, Log-Lik: -18273.572, Max-Change: 0.00874
Iteration: 21, Log-Lik: -18273.496, Max-Change: 0.00859
Iteration: 22, Log-Lik: -18273.456, Max-Change: 0.00965
Iteration: 23, Log-Lik: -18273.297, Max-Change: 0.00500
Iteration: 24, Log-Lik: -18273.261, Max-Change: 0.00350
Iteration: 25, Log-Lik: -18273.235, Max-Change: 0.00363
Iteration: 26, Log-Lik: -18273.216, Max-Change: 0.00391
Iteration: 27, Log-Lik: -18273.200, Max-Change: 0.00383
Iteration: 28, Log-Lik: -18273.193, Max-Change: 0.00490
Iteration: 29, Log-Lik: -18273.159, Max-Change: 0.00245
Iteration: 30, Log-Lik: -18273.150, Max-Change: 0.00173
Iteration: 31, Log-Lik: -18273.144, Max-Change: 0.00163
Iteration: 32, Log-Lik: -18273.140, Max-Change: 0.00176
Iteration: 33, Log-Lik: -18273.136, Max-Change: 0.00177
Iteration: 34, Log-Lik: -18273.134, Max-Change: 0.00262
Iteration: 35, Log-Lik: -18273.126, Max-Change: 0.00126
Iteration: 36, Log-Lik: -18273.123, Max-Change: 0.00090
Iteration: 37, Log-Lik: -18273.122, Max-Change: 0.00081
Iteration: 38, Log-Lik: -18273.121, Max-Change: 0.00085
Iteration: 39, Log-Lik: -18273.120, Max-Change: 0.00084
Iteration: 40, Log-Lik: -18273.119, Max-Change: 0.00144
Iteration: 41, Log-Lik: -18273.117, Max-Change: 0.00067
Iteration: 42, Log-Lik: -18273.116, Max-Change: 0.00049
Iteration: 43, Log-Lik: -18273.115, Max-Change: 0.00045
Iteration: 44, Log-Lik: -18273.115, Max-Change: 0.00046
Iteration: 45, Log-Lik: -18273.115, Max-Change: 0.00046
Iteration: 46, Log-Lik: -18273.114, Max-Change: 0.00081
Iteration: 47, Log-Lik: -18273.114, Max-Change: 0.00037
Iteration: 48, Log-Lik: -18273.113, Max-Change: 0.00027
Iteration: 49, Log-Lik: -18273.113, Max-Change: 0.00025
Iteration: 50, Log-Lik: -18273.113, Max-Change: 0.00028
Iteration: 51, Log-Lik: -18273.113, Max-Change: 0.00027
Iteration: 52, Log-Lik: -18273.113, Max-Change: 0.00047
Iteration: 53, Log-Lik: -18273.113, Max-Change: 0.00021
Iteration: 54, Log-Lik: -18273.113, Max-Change: 0.00015
Iteration: 55, Log-Lik: -18273.113, Max-Change: 0.00015
Iteration: 56, Log-Lik: -18273.113, Max-Change: 0.00015
Iteration: 57, Log-Lik: -18273.113, Max-Change: 0.00013
Iteration: 58, Log-Lik: -18273.112, Max-Change: 0.00027
Iteration: 59, Log-Lik: -18273.112, Max-Change: 0.00012
Iteration: 60, Log-Lik: -18273.112, Max-Change: 0.00009
## 
## Step 7: Fit with anchor items, conservative threshold
## 
Iteration: 1, Log-Lik: -18737.340, Max-Change: 1.54306
Iteration: 2, Log-Lik: -18393.349, Max-Change: 0.45315
Iteration: 3, Log-Lik: -18338.431, Max-Change: 0.25174
Iteration: 4, Log-Lik: -18319.694, Max-Change: 0.17457
Iteration: 5, Log-Lik: -18309.766, Max-Change: 0.18603
Iteration: 6, Log-Lik: -18302.647, Max-Change: 0.16418
Iteration: 7, Log-Lik: -18297.398, Max-Change: 0.11755
Iteration: 8, Log-Lik: -18293.354, Max-Change: 0.12666
Iteration: 9, Log-Lik: -18290.130, Max-Change: 0.06429
Iteration: 10, Log-Lik: -18286.621, Max-Change: 0.06652
Iteration: 11, Log-Lik: -18284.580, Max-Change: 0.04076
Iteration: 12, Log-Lik: -18283.109, Max-Change: 0.05352
Iteration: 13, Log-Lik: -18281.895, Max-Change: 0.03524
Iteration: 14, Log-Lik: -18279.130, Max-Change: 0.01911
Iteration: 15, Log-Lik: -18278.552, Max-Change: 0.01347
Iteration: 16, Log-Lik: -18278.138, Max-Change: 0.01458
Iteration: 17, Log-Lik: -18277.850, Max-Change: 0.01569
Iteration: 18, Log-Lik: -18277.621, Max-Change: 0.01518
Iteration: 19, Log-Lik: -18277.492, Max-Change: 0.01482
Iteration: 20, Log-Lik: -18277.031, Max-Change: 0.00779
Iteration: 21, Log-Lik: -18276.931, Max-Change: 0.00560
Iteration: 22, Log-Lik: -18276.862, Max-Change: 0.00629
Iteration: 23, Log-Lik: -18276.812, Max-Change: 0.00671
Iteration: 24, Log-Lik: -18276.772, Max-Change: 0.00645
Iteration: 25, Log-Lik: -18276.752, Max-Change: 0.00676
Iteration: 26, Log-Lik: -18276.669, Max-Change: 0.00345
Iteration: 27, Log-Lik: -18276.649, Max-Change: 0.00240
Iteration: 28, Log-Lik: -18276.636, Max-Change: 0.00273
Iteration: 29, Log-Lik: -18276.626, Max-Change: 0.00287
Iteration: 30, Log-Lik: -18276.618, Max-Change: 0.00277
Iteration: 31, Log-Lik: -18276.614, Max-Change: 0.00328
Iteration: 32, Log-Lik: -18276.597, Max-Change: 0.00162
Iteration: 33, Log-Lik: -18276.593, Max-Change: 0.00114
Iteration: 34, Log-Lik: -18276.590, Max-Change: 0.00118
Iteration: 35, Log-Lik: -18276.588, Max-Change: 0.00122
Iteration: 36, Log-Lik: -18276.586, Max-Change: 0.00123
Iteration: 37, Log-Lik: -18276.585, Max-Change: 0.00167
Iteration: 38, Log-Lik: -18276.581, Max-Change: 0.00080
Iteration: 39, Log-Lik: -18276.580, Max-Change: 0.00057
Iteration: 40, Log-Lik: -18276.579, Max-Change: 0.00055
Iteration: 41, Log-Lik: -18276.579, Max-Change: 0.00061
Iteration: 42, Log-Lik: -18276.578, Max-Change: 0.00060
Iteration: 43, Log-Lik: -18276.578, Max-Change: 0.00087
Iteration: 44, Log-Lik: -18276.577, Max-Change: 0.00041
Iteration: 45, Log-Lik: -18276.577, Max-Change: 0.00029
Iteration: 46, Log-Lik: -18276.576, Max-Change: 0.00029
Iteration: 47, Log-Lik: -18276.576, Max-Change: 0.00031
Iteration: 48, Log-Lik: -18276.576, Max-Change: 0.00031
Iteration: 49, Log-Lik: -18276.576, Max-Change: 0.00047
Iteration: 50, Log-Lik: -18276.576, Max-Change: 0.00021
Iteration: 51, Log-Lik: -18276.576, Max-Change: 0.00016
Iteration: 52, Log-Lik: -18276.576, Max-Change: 0.00015
Iteration: 53, Log-Lik: -18276.575, Max-Change: 0.00015
Iteration: 54, Log-Lik: -18276.575, Max-Change: 0.00016
Iteration: 55, Log-Lik: -18276.575, Max-Change: 0.00026
Iteration: 56, Log-Lik: -18276.575, Max-Change: 0.00012
Iteration: 57, Log-Lik: -18276.575, Max-Change: 0.00008
## 
## Step 8: Get scores
d2015_irt_fit_bias_sex$effect_size_test
## $liberal
##           Effect Size   Value
## 1                STDS -0.0811
## 2                UTDS  0.3873
## 3              UETSDS  0.0924
## 4               ETSSD -0.0446
## 5         Starks.DTFR -0.0809
## 6               UDTFR  0.3928
## 7              UETSDN  0.1016
## 8 theta.of.max.test.D  0.6517
## 9           Test.Dmax -0.1989
## 
## $conservative
##           Effect Size   Value
## 1                STDS -0.0718
## 2                UTDS  0.3486
## 3              UETSDS  0.0718
## 4               ETSSD -0.0402
## 5         Starks.DTFR -0.0842
## 6               UDTFR  0.3492
## 7              UETSDN  0.0842
## 8 theta.of.max.test.D  0.5906
## 9           Test.Dmax -0.1312
d2015_irt_fit_bias_sex$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.579  0.000       0.812
## item.2   0.000 0.000  0.000 0.000  0.000         -0.579  0.000       0.723
## item.3   0.000 0.000  0.000 0.000  0.000         -0.579  0.000       0.896
## item.4   0.000 0.000  0.000 0.000  0.000         -0.579  0.000       0.824
## item.5  -0.005 0.039  0.003 0.043 -0.030         -2.508  0.125       0.743
## item.6   0.003 0.050 -0.003 0.061  0.024          0.652 -0.116       0.326
## item.7  -0.116 0.116 -0.112 0.112 -1.121         -0.708 -0.122       0.393
## item.8   0.000 0.000  0.000 0.000  0.000         -0.579  0.000       0.363
## item.9   0.000 0.000  0.000 0.000  0.000         -0.579  0.000       0.662
## item.10 -0.066 0.067 -0.061 0.064 -0.376         -1.437 -0.159       0.847
## item.11  0.023 0.034  0.015 0.035  0.168         -2.829 -0.103       0.818
## item.12  0.081 0.081  0.078 0.078  0.519         -1.499  0.114       0.788
##         mean.ES.ref
## item.1        0.812
## item.2        0.723
## item.3        0.896
## item.4        0.824
## item.5        0.748
## item.6        0.323
## item.7        0.510
## item.8        0.363
## item.9        0.662
## item.10       0.914
## item.11       0.795
## item.12       0.707
## 
## $conservative
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.580  0.000       0.811
## item.2   0.000 0.000  0.000 0.000  0.000         -0.580  0.000       0.722
## item.3   0.000 0.000  0.000 0.000  0.000         -0.580  0.000       0.896
## item.4   0.000 0.000  0.000 0.000  0.000         -0.580  0.000       0.825
## item.5   0.000 0.000  0.000 0.000  0.000         -0.580  0.000       0.750
## item.6   0.007 0.045  0.001 0.057  0.061          0.591 -0.101       0.326
## item.7  -0.114 0.114 -0.110 0.110 -1.118         -0.930 -0.121       0.393
## item.8   0.000 0.000  0.000 0.000  0.000         -0.580  0.000       0.360
## item.9   0.000 0.000  0.000 0.000  0.000         -0.580  0.000       0.661
## item.10 -0.070 0.070 -0.065 0.067 -0.405         -1.476 -0.169       0.847
## item.11  0.023 0.037  0.013 0.039  0.173         -2.755 -0.120       0.818
## item.12  0.082 0.082  0.077 0.077  0.535         -1.347  0.108       0.788
##         mean.ES.ref
## item.1        0.811
## item.2        0.722
## item.3        0.896
## item.4        0.825
## item.5        0.750
## item.6        0.318
## item.7        0.507
## item.8        0.360
## item.9        0.661
## item.10       0.917
## item.11       0.795
## item.12       0.706
d2015_irt_fit_bias_sex$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                    12.000                     3.000                     2.000 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                     7.000                     0.250                     0.167 
##                prop_noDIF 
##                     0.583
d2015_irt_fit_bias_sex$fits$anchor_conservative %>% plot(type = "trace")

save_plot_to_file(d2015_irt_fit_bias_sex$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2015_dif_sex.png")

#test bias adjusted scores
d2015$irt_adj = case_when(
  d2015$race2 == "Black" ~ d2015$irt - d2015_irt_fit_bias_bw$effect_size_test$conservative$Value[4],
  d2015$race2 == "Hispanic" ~ d2015$irt - d2015_irt_fit_bias_hw$effect_size_test$conservative$Value[4],
  d2015$sex2 == "Female" ~ d2015$irt - d2015_irt_fit_bias_sex$effect_size_test$conservative$Value[4],
  TRUE ~ d2015$irt
)

2019 quiz

The data are not public yet, but Pew published their own IRT results in their complete report.

d2019 = haven::read_sav("data/W42_Jan19/ATP W42.sav")
d2019_table = d2019 %>% df_var_table()
d2019 %<>% filter(F_RACETHN != 9)
d2019$race = d2019$F_RACECMB %>% as_factor()
d2019$race2 = d2019$F_RACETHN %>% as_factor() %>% str_replace(" non-Hispanic", "") %>% fct_relevel("White")
d2019$race2 %>% table2()
d2019$bw = d2019$race2 %>% mapvalues(from = c("Hispanic", "Other"), to = rep(NA, 2)) 
d2019$hw = d2019$race2 %>% mapvalues(from = c("Black", "Other"), to = rep(NA, 2))

d2019$sex = d2019$F_SEX %>% as_factor()
d2019$sex2 = d2019$F_SEX %>% as_factor() %>% mapvalues(from = c("Refused"), to = c(NA))
d2019$sex2 %>% table2()
d2019$age_range = d2019$F_AGECAT %>% as_factor() %>% mapvalues(from = "DK/REF", to = NA)
d2019$age_range %>% table2()
d2019_test = d2019 %>% select(contains("CORRECT"))

#IRT
d2019_irt_fit = mirt(
  d2019_test,
  model = 1,
  itemtype = "2PL"
)
## 
Iteration: 1, Log-Lik: -26154.929, Max-Change: 0.72462
Iteration: 2, Log-Lik: -25145.047, Max-Change: 0.42286
Iteration: 3, Log-Lik: -24878.516, Max-Change: 0.26797
Iteration: 4, Log-Lik: -24791.941, Max-Change: 0.16199
Iteration: 5, Log-Lik: -24758.048, Max-Change: 0.11870
Iteration: 6, Log-Lik: -24744.327, Max-Change: 0.08392
Iteration: 7, Log-Lik: -24737.817, Max-Change: 0.04658
Iteration: 8, Log-Lik: -24735.028, Max-Change: 0.03049
Iteration: 9, Log-Lik: -24733.570, Max-Change: 0.02259
Iteration: 10, Log-Lik: -24732.221, Max-Change: 0.00753
Iteration: 11, Log-Lik: -24731.955, Max-Change: 0.00548
Iteration: 12, Log-Lik: -24731.779, Max-Change: 0.00440
Iteration: 13, Log-Lik: -24731.388, Max-Change: 0.00300
Iteration: 14, Log-Lik: -24731.363, Max-Change: 0.00276
Iteration: 15, Log-Lik: -24731.345, Max-Change: 0.00206
Iteration: 16, Log-Lik: -24731.316, Max-Change: 0.00193
Iteration: 17, Log-Lik: -24731.309, Max-Change: 0.00111
Iteration: 18, Log-Lik: -24731.306, Max-Change: 0.00101
Iteration: 19, Log-Lik: -24731.297, Max-Change: 0.00036
Iteration: 20, Log-Lik: -24731.296, Max-Change: 0.00034
Iteration: 21, Log-Lik: -24731.296, Max-Change: 0.00031
Iteration: 22, Log-Lik: -24731.295, Max-Change: 0.00067
Iteration: 23, Log-Lik: -24731.295, Max-Change: 0.00050
Iteration: 24, Log-Lik: -24731.295, Max-Change: 0.00026
Iteration: 25, Log-Lik: -24731.295, Max-Change: 0.00014
Iteration: 26, Log-Lik: -24731.295, Max-Change: 0.00036
Iteration: 27, Log-Lik: -24731.295, Max-Change: 0.00013
Iteration: 28, Log-Lik: -24731.295, Max-Change: 0.00008
d2019_irt_fit
## 
## Call:
## mirt(data = d2019_test, model = 1, itemtype = "2PL")
## 
## Full-information item factor analysis with 1 factor(s).
## Converged within 1e-04 tolerance after 28 EM iterations.
## mirt version: 1.38.1 
## M-step optimizer: BFGS 
## EM acceleration: Ramsay 
## Number of rectangular quadrature: 61
## Latent density type: Gaussian 
## 
## Log-likelihood = -24731
## Estimated parameters: 22 
## AIC = 49507
## BIC = 49647; SABIC = 49577
## G2 (2025) = 1976, p = 0.778
## RMSEA = 0, CFI = NaN, TLI = NaN
d2019_irt_fit %>% summary()
##                       F1    h2
## KNOW1_CORRECT_W42  0.758 0.574
## KNOW2_CORRECT_W42  0.712 0.507
## KNOW3_CORRECT_W42  0.843 0.711
## KNOW4_CORRECT_W42  0.684 0.468
## KNOW5_CORRECT_W42  0.673 0.453
## KNOW6_CORRECT_W42  0.684 0.467
## KNOW7_CORRECT_W42  0.825 0.681
## KNOW9_CORRECT_W42  0.722 0.521
## KNOW10_CORRECT_W42 0.807 0.651
## KNOW11_CORRECT_W42 0.850 0.722
## KNOW12_CORRECT_W42 0.710 0.504
## 
## SS loadings:  6.26 
## Proportion Var:  0.569 
## 
## Factor correlations: 
## 
##    F1
## F1  1
d2019_irt_fit %>% coef(simplify = T)
## $items
##                      a1      d g u
## KNOW1_CORRECT_W42  1.98  1.358 0 1
## KNOW2_CORRECT_W42  1.73  0.823 0 1
## KNOW3_CORRECT_W42  2.67  0.593 0 1
## KNOW4_CORRECT_W42  1.60  0.856 0 1
## KNOW5_CORRECT_W42  1.55  0.662 0 1
## KNOW6_CORRECT_W42  1.59  0.151 0 1
## KNOW7_CORRECT_W42  2.49  2.526 0 1
## KNOW9_CORRECT_W42  1.78  0.658 0 1
## KNOW10_CORRECT_W42 2.33 -0.754 0 1
## KNOW11_CORRECT_W42 2.74  2.985 0 1
## KNOW12_CORRECT_W42 1.72  0.507 0 1
## 
## $means
## F1 
##  0 
## 
## $cov
##    F1
## F1  1
#plots
d2019_irt_fit %>% plot(type = "info")

d2019_irt_fit %>% plot(type = "rxx")

d2019_irt_fit %>% plot(type = "trace")

#scores
d2019_irt_fit_scores = fscores(d2019_irt_fit, full.scores = T, full.scores.SE = T)
d2019$irt = d2019_irt_fit_scores[, 1] %>% standardize(focal_group = d2019$race2 == "White")
empirical_rxx(d2019_irt_fit_scores)
##    F1 
## 0.819
#gaps
#race
GG_denhist(d2019, "irt", "race2")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

SMD_matrix(d2019$irt, d2019$race2)
##           White Black Hispanic   Other
## White        NA  1.21    0.553  0.0901
## Black    1.2133    NA   -0.660 -1.1232
## Hispanic 0.5535 -0.66       NA -0.4634
## Other    0.0901 -1.12   -0.463      NA
SMD_matrix(d2019$irt, d2019$race2, reliability = empirical_rxx(d2019_irt_fit_scores))
##           White  Black Hispanic   Other
## White        NA  1.399    0.617  0.0995
## Black    1.3988     NA   -0.738 -1.2869
## Hispanic 0.6169 -0.738       NA -0.5152
## Other    0.0995 -1.287   -0.515      NA
describe2(d2019$irt, d2019$race2)
## New names:
## • `` -> `...1`
#sex
GG_denhist(d2019, "irt", "sex2")
## Warning in GG_denhist(d2019, "irt", "sex2"): Grouping variable contained
## missing values. These were removed. If you want an NA group, convert to
## explicit value.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

SMD_matrix(d2019$irt, d2019$sex2)
##        Male Female
## Male     NA   0.55
## Female 0.55     NA
SMD_matrix(d2019$irt, d2019$sex2, reliability = empirical_rxx(d2019_irt_fit_scores))
##         Male Female
## Male      NA  0.613
## Female 0.613     NA
describe2(d2019$irt, d2019$sex2)
## New names:
## • `` -> `...1`
#test bias
d2019_irt_fit_bias_bw = DIF_test(
  items = d2019_test,
  model = 1,
  group = d2019$bw,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -26154.929, Max-Change: 0.72462
Iteration: 2, Log-Lik: -25145.047, Max-Change: 0.42286
Iteration: 3, Log-Lik: -24878.516, Max-Change: 0.26797
Iteration: 4, Log-Lik: -24791.941, Max-Change: 0.16199
Iteration: 5, Log-Lik: -24758.048, Max-Change: 0.11870
Iteration: 6, Log-Lik: -24744.327, Max-Change: 0.08392
Iteration: 7, Log-Lik: -24737.817, Max-Change: 0.04658
Iteration: 8, Log-Lik: -24735.028, Max-Change: 0.03049
Iteration: 9, Log-Lik: -24733.570, Max-Change: 0.02259
Iteration: 10, Log-Lik: -24732.221, Max-Change: 0.00753
Iteration: 11, Log-Lik: -24731.955, Max-Change: 0.00548
Iteration: 12, Log-Lik: -24731.779, Max-Change: 0.00440
Iteration: 13, Log-Lik: -24731.388, Max-Change: 0.00300
Iteration: 14, Log-Lik: -24731.363, Max-Change: 0.00276
Iteration: 15, Log-Lik: -24731.345, Max-Change: 0.00206
Iteration: 16, Log-Lik: -24731.316, Max-Change: 0.00193
Iteration: 17, Log-Lik: -24731.309, Max-Change: 0.00111
Iteration: 18, Log-Lik: -24731.306, Max-Change: 0.00101
Iteration: 19, Log-Lik: -24731.297, Max-Change: 0.00036
Iteration: 20, Log-Lik: -24731.296, Max-Change: 0.00034
Iteration: 21, Log-Lik: -24731.296, Max-Change: 0.00031
Iteration: 22, Log-Lik: -24731.295, Max-Change: 0.00067
Iteration: 23, Log-Lik: -24731.295, Max-Change: 0.00050
Iteration: 24, Log-Lik: -24731.295, Max-Change: 0.00026
Iteration: 25, Log-Lik: -24731.295, Max-Change: 0.00014
Iteration: 26, Log-Lik: -24731.295, Max-Change: 0.00036
Iteration: 27, Log-Lik: -24731.295, Max-Change: 0.00013
Iteration: 28, Log-Lik: -24731.295, Max-Change: 0.00008
## 
## Step 2: Initial MI fit
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -19863.781, Max-Change: 1.10435
Iteration: 2, Log-Lik: -18709.076, Max-Change: 0.36253
Iteration: 3, Log-Lik: -18573.550, Max-Change: 0.18933
Iteration: 4, Log-Lik: -18534.299, Max-Change: 0.11191
Iteration: 5, Log-Lik: -18516.108, Max-Change: 0.08639
Iteration: 6, Log-Lik: -18506.500, Max-Change: 0.06810
Iteration: 7, Log-Lik: -18501.126, Max-Change: 0.05195
Iteration: 8, Log-Lik: -18498.034, Max-Change: 0.03922
Iteration: 9, Log-Lik: -18496.224, Max-Change: 0.03068
Iteration: 10, Log-Lik: -18494.255, Max-Change: 0.03740
Iteration: 11, Log-Lik: -18493.843, Max-Change: 0.01914
Iteration: 12, Log-Lik: -18493.704, Max-Change: 0.01097
Iteration: 13, Log-Lik: -18493.610, Max-Change: 0.00838
Iteration: 14, Log-Lik: -18493.581, Max-Change: 0.00480
Iteration: 15, Log-Lik: -18493.568, Max-Change: 0.00304
Iteration: 16, Log-Lik: -18493.555, Max-Change: 0.00338
Iteration: 17, Log-Lik: -18493.551, Max-Change: 0.00165
Iteration: 18, Log-Lik: -18493.550, Max-Change: 0.00089
Iteration: 19, Log-Lik: -18493.550, Max-Change: 0.00054
Iteration: 20, Log-Lik: -18493.549, Max-Change: 0.00034
Iteration: 21, Log-Lik: -18493.549, Max-Change: 0.00025
Iteration: 22, Log-Lik: -18493.549, Max-Change: 0.00026
Iteration: 23, Log-Lik: -18493.549, Max-Change: 0.00013
Iteration: 24, Log-Lik: -18493.549, Max-Change: 0.00007
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -29918.023, Max-Change: 0.57349
Iteration: 2, Log-Lik: -29628.104, Max-Change: 0.45173
Iteration: 3, Log-Lik: -29515.604, Max-Change: 0.32749
Iteration: 4, Log-Lik: -29477.747, Max-Change: 0.25110
Iteration: 5, Log-Lik: -29463.568, Max-Change: 0.14373
Iteration: 6, Log-Lik: -29459.259, Max-Change: 0.09846
Iteration: 7, Log-Lik: -29456.652, Max-Change: 0.04097
Iteration: 8, Log-Lik: -29456.428, Max-Change: 0.02542
Iteration: 9, Log-Lik: -29456.329, Max-Change: 0.02074
Iteration: 10, Log-Lik: -29456.217, Max-Change: 0.00317
Iteration: 11, Log-Lik: -29456.214, Max-Change: 0.00229
Iteration: 12, Log-Lik: -29456.212, Max-Change: 0.00144
Iteration: 13, Log-Lik: -29456.210, Max-Change: 0.00042
Iteration: 14, Log-Lik: -29456.210, Max-Change: 0.00037
Iteration: 15, Log-Lik: -29456.210, Max-Change: 0.00031
Iteration: 16, Log-Lik: -29456.209, Max-Change: 0.00014
Iteration: 17, Log-Lik: -29456.209, Max-Change: 0.00059
Iteration: 18, Log-Lik: -29456.209, Max-Change: 0.00036
Iteration: 19, Log-Lik: -29456.209, Max-Change: 0.00010
Iteration: 20, Log-Lik: -29456.209, Max-Change: 0.00010
Iteration: 21, Log-Lik: -29456.209, Max-Change: 0.00010
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -29072.573, Max-Change: 0.76118
Iteration: 2, Log-Lik: -28502.424, Max-Change: 0.52079
Iteration: 3, Log-Lik: -28346.576, Max-Change: 0.39989
Iteration: 4, Log-Lik: -28293.285, Max-Change: 0.24988
Iteration: 5, Log-Lik: -28275.395, Max-Change: 0.19611
Iteration: 6, Log-Lik: -28268.330, Max-Change: 0.11762
Iteration: 7, Log-Lik: -28265.676, Max-Change: 0.07914
Iteration: 8, Log-Lik: -28264.496, Max-Change: 0.04537
Iteration: 9, Log-Lik: -28263.936, Max-Change: 0.02893
Iteration: 10, Log-Lik: -28263.481, Max-Change: 0.01104
Iteration: 11, Log-Lik: -28263.366, Max-Change: 0.00664
Iteration: 12, Log-Lik: -28263.302, Max-Change: 0.00908
Iteration: 13, Log-Lik: -28263.210, Max-Change: 0.00276
Iteration: 14, Log-Lik: -28263.198, Max-Change: 0.00154
Iteration: 15, Log-Lik: -28263.192, Max-Change: 0.00116
Iteration: 16, Log-Lik: -28263.183, Max-Change: 0.00029
Iteration: 17, Log-Lik: -28263.183, Max-Change: 0.00026
Iteration: 18, Log-Lik: -28263.183, Max-Change: 0.00022
Iteration: 19, Log-Lik: -28263.183, Max-Change: 0.00013
Iteration: 20, Log-Lik: -28263.183, Max-Change: 0.00012
Iteration: 21, Log-Lik: -28263.183, Max-Change: 0.00010
Iteration: 22, Log-Lik: -28263.183, Max-Change: 0.00009
## 
## Step 6: Fit with anchor items, liberal threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -19863.781, Max-Change: 1.10435
Iteration: 2, Log-Lik: -18688.491, Max-Change: 0.45648
Iteration: 3, Log-Lik: -18531.692, Max-Change: 0.27602
Iteration: 4, Log-Lik: -18486.835, Max-Change: 0.16407
Iteration: 5, Log-Lik: -18470.456, Max-Change: 0.11150
Iteration: 6, Log-Lik: -18462.998, Max-Change: 0.09112
Iteration: 7, Log-Lik: -18458.940, Max-Change: 0.07593
Iteration: 8, Log-Lik: -18456.419, Max-Change: 0.07395
Iteration: 9, Log-Lik: -18454.681, Max-Change: 0.06443
Iteration: 10, Log-Lik: -18452.401, Max-Change: 0.09840
Iteration: 11, Log-Lik: -18450.709, Max-Change: 0.03664
Iteration: 12, Log-Lik: -18450.348, Max-Change: 0.03505
Iteration: 13, Log-Lik: -18450.055, Max-Change: 0.02339
Iteration: 14, Log-Lik: -18449.898, Max-Change: 0.02701
Iteration: 15, Log-Lik: -18449.790, Max-Change: 0.02515
Iteration: 16, Log-Lik: -18449.733, Max-Change: 0.02921
Iteration: 17, Log-Lik: -18449.520, Max-Change: 0.01055
Iteration: 18, Log-Lik: -18449.486, Max-Change: 0.00855
Iteration: 19, Log-Lik: -18449.461, Max-Change: 0.00714
Iteration: 20, Log-Lik: -18449.445, Max-Change: 0.00843
Iteration: 21, Log-Lik: -18449.432, Max-Change: 0.00794
Iteration: 22, Log-Lik: -18449.426, Max-Change: 0.00972
Iteration: 23, Log-Lik: -18449.398, Max-Change: 0.00379
Iteration: 24, Log-Lik: -18449.393, Max-Change: 0.00290
Iteration: 25, Log-Lik: -18449.390, Max-Change: 0.00271
Iteration: 26, Log-Lik: -18449.387, Max-Change: 0.00296
Iteration: 27, Log-Lik: -18449.386, Max-Change: 0.00287
Iteration: 28, Log-Lik: -18449.385, Max-Change: 0.00359
Iteration: 29, Log-Lik: -18449.380, Max-Change: 0.00145
Iteration: 30, Log-Lik: -18449.380, Max-Change: 0.00098
Iteration: 31, Log-Lik: -18449.379, Max-Change: 0.00107
Iteration: 32, Log-Lik: -18449.379, Max-Change: 0.00116
Iteration: 33, Log-Lik: -18449.378, Max-Change: 0.00114
Iteration: 34, Log-Lik: -18449.378, Max-Change: 0.00140
Iteration: 35, Log-Lik: -18449.378, Max-Change: 0.00059
Iteration: 36, Log-Lik: -18449.377, Max-Change: 0.00037
Iteration: 37, Log-Lik: -18449.377, Max-Change: 0.00043
Iteration: 38, Log-Lik: -18449.377, Max-Change: 0.00047
Iteration: 39, Log-Lik: -18449.377, Max-Change: 0.00041
Iteration: 40, Log-Lik: -18449.377, Max-Change: 0.00055
Iteration: 41, Log-Lik: -18449.377, Max-Change: 0.00024
Iteration: 42, Log-Lik: -18449.377, Max-Change: 0.00017
Iteration: 43, Log-Lik: -18449.377, Max-Change: 0.00018
Iteration: 44, Log-Lik: -18449.377, Max-Change: 0.00016
Iteration: 45, Log-Lik: -18449.377, Max-Change: 0.00018
Iteration: 46, Log-Lik: -18449.377, Max-Change: 0.00022
Iteration: 47, Log-Lik: -18449.377, Max-Change: 0.00010
Iteration: 48, Log-Lik: -18449.377, Max-Change: 0.00007
## 
## Step 7: Fit with anchor items, conservative threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -19863.781, Max-Change: 1.10432
Iteration: 2, Log-Lik: -18702.044, Max-Change: 0.46340
Iteration: 3, Log-Lik: -18545.207, Max-Change: 0.27321
Iteration: 4, Log-Lik: -18501.459, Max-Change: 0.17798
Iteration: 5, Log-Lik: -18483.278, Max-Change: 0.14059
Iteration: 6, Log-Lik: -18473.684, Max-Change: 0.11947
Iteration: 7, Log-Lik: -18467.868, Max-Change: 0.10206
Iteration: 8, Log-Lik: -18464.123, Max-Change: 0.09643
Iteration: 9, Log-Lik: -18461.526, Max-Change: 0.08368
Iteration: 10, Log-Lik: -18458.353, Max-Change: 0.08504
Iteration: 11, Log-Lik: -18456.279, Max-Change: 0.03436
Iteration: 12, Log-Lik: -18455.797, Max-Change: 0.05177
Iteration: 13, Log-Lik: -18455.434, Max-Change: 0.02942
Iteration: 14, Log-Lik: -18455.247, Max-Change: 0.03581
Iteration: 15, Log-Lik: -18455.124, Max-Change: 0.03216
Iteration: 16, Log-Lik: -18455.069, Max-Change: 0.03594
Iteration: 17, Log-Lik: -18454.861, Max-Change: 0.00779
Iteration: 18, Log-Lik: -18454.831, Max-Change: 0.00630
Iteration: 19, Log-Lik: -18454.817, Max-Change: 0.00797
Iteration: 20, Log-Lik: -18454.807, Max-Change: 0.00778
Iteration: 21, Log-Lik: -18454.799, Max-Change: 0.00721
Iteration: 22, Log-Lik: -18454.796, Max-Change: 0.00785
Iteration: 23, Log-Lik: -18454.781, Max-Change: 0.00206
Iteration: 24, Log-Lik: -18454.779, Max-Change: 0.00164
Iteration: 25, Log-Lik: -18454.778, Max-Change: 0.00205
Iteration: 26, Log-Lik: -18454.777, Max-Change: 0.00206
Iteration: 27, Log-Lik: -18454.776, Max-Change: 0.00197
Iteration: 28, Log-Lik: -18454.776, Max-Change: 0.00196
Iteration: 29, Log-Lik: -18454.775, Max-Change: 0.00059
Iteration: 30, Log-Lik: -18454.775, Max-Change: 0.00035
Iteration: 31, Log-Lik: -18454.775, Max-Change: 0.00042
Iteration: 32, Log-Lik: -18454.774, Max-Change: 0.00055
Iteration: 33, Log-Lik: -18454.774, Max-Change: 0.00056
Iteration: 34, Log-Lik: -18454.774, Max-Change: 0.00041
Iteration: 35, Log-Lik: -18454.774, Max-Change: 0.00019
Iteration: 36, Log-Lik: -18454.774, Max-Change: 0.00011
Iteration: 37, Log-Lik: -18454.774, Max-Change: 0.00009
## 
## Step 8: Get scores
d2019_irt_fit_bias_hw = DIF_test(
  items = d2019_test,
  model = 1,
  group = d2019$hw,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -26154.929, Max-Change: 0.72462
Iteration: 2, Log-Lik: -25145.047, Max-Change: 0.42286
Iteration: 3, Log-Lik: -24878.516, Max-Change: 0.26797
Iteration: 4, Log-Lik: -24791.941, Max-Change: 0.16199
Iteration: 5, Log-Lik: -24758.048, Max-Change: 0.11870
Iteration: 6, Log-Lik: -24744.327, Max-Change: 0.08392
Iteration: 7, Log-Lik: -24737.817, Max-Change: 0.04658
Iteration: 8, Log-Lik: -24735.028, Max-Change: 0.03049
Iteration: 9, Log-Lik: -24733.570, Max-Change: 0.02259
Iteration: 10, Log-Lik: -24732.221, Max-Change: 0.00753
Iteration: 11, Log-Lik: -24731.955, Max-Change: 0.00548
Iteration: 12, Log-Lik: -24731.779, Max-Change: 0.00440
Iteration: 13, Log-Lik: -24731.388, Max-Change: 0.00300
Iteration: 14, Log-Lik: -24731.363, Max-Change: 0.00276
Iteration: 15, Log-Lik: -24731.345, Max-Change: 0.00206
Iteration: 16, Log-Lik: -24731.316, Max-Change: 0.00193
Iteration: 17, Log-Lik: -24731.309, Max-Change: 0.00111
Iteration: 18, Log-Lik: -24731.306, Max-Change: 0.00101
Iteration: 19, Log-Lik: -24731.297, Max-Change: 0.00036
Iteration: 20, Log-Lik: -24731.296, Max-Change: 0.00034
Iteration: 21, Log-Lik: -24731.296, Max-Change: 0.00031
Iteration: 22, Log-Lik: -24731.295, Max-Change: 0.00067
Iteration: 23, Log-Lik: -24731.295, Max-Change: 0.00050
Iteration: 24, Log-Lik: -24731.295, Max-Change: 0.00026
Iteration: 25, Log-Lik: -24731.295, Max-Change: 0.00014
Iteration: 26, Log-Lik: -24731.295, Max-Change: 0.00036
Iteration: 27, Log-Lik: -24731.295, Max-Change: 0.00013
Iteration: 28, Log-Lik: -24731.295, Max-Change: 0.00008
## 
## Step 2: Initial MI fit
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -20874.945, Max-Change: 0.80583
Iteration: 2, Log-Lik: -19978.677, Max-Change: 0.33692
Iteration: 3, Log-Lik: -19862.294, Max-Change: 0.17978
Iteration: 4, Log-Lik: -19830.132, Max-Change: 0.14436
Iteration: 5, Log-Lik: -19815.316, Max-Change: 0.13514
Iteration: 6, Log-Lik: -19807.213, Max-Change: 0.10805
Iteration: 7, Log-Lik: -19802.526, Max-Change: 0.08257
Iteration: 8, Log-Lik: -19799.754, Max-Change: 0.06243
Iteration: 9, Log-Lik: -19798.097, Max-Change: 0.04720
Iteration: 10, Log-Lik: -19796.433, Max-Change: 0.06490
Iteration: 11, Log-Lik: -19795.898, Max-Change: 0.03116
Iteration: 12, Log-Lik: -19795.735, Max-Change: 0.01758
Iteration: 13, Log-Lik: -19795.640, Max-Change: 0.01302
Iteration: 14, Log-Lik: -19795.600, Max-Change: 0.00813
Iteration: 15, Log-Lik: -19795.576, Max-Change: 0.00563
Iteration: 16, Log-Lik: -19795.551, Max-Change: 0.00771
Iteration: 17, Log-Lik: -19795.541, Max-Change: 0.00374
Iteration: 18, Log-Lik: -19795.538, Max-Change: 0.00215
Iteration: 19, Log-Lik: -19795.536, Max-Change: 0.00163
Iteration: 20, Log-Lik: -19795.535, Max-Change: 0.00104
Iteration: 21, Log-Lik: -19795.534, Max-Change: 0.00075
Iteration: 22, Log-Lik: -19795.533, Max-Change: 0.00125
Iteration: 23, Log-Lik: -19795.533, Max-Change: 0.00056
Iteration: 24, Log-Lik: -19795.533, Max-Change: 0.00031
Iteration: 25, Log-Lik: -19795.532, Max-Change: 0.00023
Iteration: 26, Log-Lik: -19795.532, Max-Change: 0.00015
Iteration: 27, Log-Lik: -19795.532, Max-Change: 0.00011
Iteration: 28, Log-Lik: -19795.532, Max-Change: 0.00020
Iteration: 29, Log-Lik: -19795.532, Max-Change: 0.00009
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -29911.471, Max-Change: 0.39006
Iteration: 2, Log-Lik: -29685.840, Max-Change: 0.28887
Iteration: 3, Log-Lik: -29602.975, Max-Change: 0.19148
Iteration: 4, Log-Lik: -29575.995, Max-Change: 0.12162
Iteration: 5, Log-Lik: -29567.284, Max-Change: 0.07802
Iteration: 6, Log-Lik: -29564.346, Max-Change: 0.04837
Iteration: 7, Log-Lik: -29563.104, Max-Change: 0.02412
Iteration: 8, Log-Lik: -29562.895, Max-Change: 0.01533
Iteration: 9, Log-Lik: -29562.812, Max-Change: 0.01079
Iteration: 10, Log-Lik: -29562.757, Max-Change: 0.00466
Iteration: 11, Log-Lik: -29562.748, Max-Change: 0.00253
Iteration: 12, Log-Lik: -29562.745, Max-Change: 0.00187
Iteration: 13, Log-Lik: -29562.742, Max-Change: 0.00098
Iteration: 14, Log-Lik: -29562.742, Max-Change: 0.00074
Iteration: 15, Log-Lik: -29562.742, Max-Change: 0.00056
Iteration: 16, Log-Lik: -29562.742, Max-Change: 0.00025
Iteration: 17, Log-Lik: -29562.742, Max-Change: 0.00022
Iteration: 18, Log-Lik: -29562.742, Max-Change: 0.00020
Iteration: 19, Log-Lik: -29562.742, Max-Change: 0.00015
Iteration: 20, Log-Lik: -29562.742, Max-Change: 0.00014
Iteration: 21, Log-Lik: -29562.742, Max-Change: 0.00012
Iteration: 22, Log-Lik: -29562.742, Max-Change: 0.00011
Iteration: 23, Log-Lik: -29562.742, Max-Change: 0.00010
Iteration: 24, Log-Lik: -29562.742, Max-Change: 0.00009
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -28995.389, Max-Change: 0.48774
Iteration: 2, Log-Lik: -28521.146, Max-Change: 0.34334
Iteration: 3, Log-Lik: -28391.243, Max-Change: 0.20797
Iteration: 4, Log-Lik: -28354.618, Max-Change: 0.14866
Iteration: 5, Log-Lik: -28341.627, Max-Change: 0.09387
Iteration: 6, Log-Lik: -28337.270, Max-Change: 0.05978
Iteration: 7, Log-Lik: -28335.298, Max-Change: 0.02713
Iteration: 8, Log-Lik: -28335.029, Max-Change: 0.01642
Iteration: 9, Log-Lik: -28334.927, Max-Change: 0.01096
Iteration: 10, Log-Lik: -28334.858, Max-Change: 0.00346
Iteration: 11, Log-Lik: -28334.851, Max-Change: 0.00194
Iteration: 12, Log-Lik: -28334.847, Max-Change: 0.00110
Iteration: 13, Log-Lik: -28334.844, Max-Change: 0.00059
Iteration: 14, Log-Lik: -28334.843, Max-Change: 0.00035
Iteration: 15, Log-Lik: -28334.843, Max-Change: 0.00029
Iteration: 16, Log-Lik: -28334.843, Max-Change: 0.00027
Iteration: 17, Log-Lik: -28334.843, Max-Change: 0.00024
Iteration: 18, Log-Lik: -28334.843, Max-Change: 0.00022
Iteration: 19, Log-Lik: -28334.843, Max-Change: 0.00020
Iteration: 20, Log-Lik: -28334.842, Max-Change: 0.00018
Iteration: 21, Log-Lik: -28334.842, Max-Change: 0.00016
Iteration: 22, Log-Lik: -28334.842, Max-Change: 0.00014
Iteration: 23, Log-Lik: -28334.842, Max-Change: 0.00013
Iteration: 24, Log-Lik: -28334.842, Max-Change: 0.00011
Iteration: 25, Log-Lik: -28334.842, Max-Change: 0.00010
## 
## Step 6: Fit with anchor items, liberal threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -20874.945, Max-Change: 0.92314
Iteration: 2, Log-Lik: -19943.875, Max-Change: 0.44038
Iteration: 3, Log-Lik: -19809.769, Max-Change: 0.26687
Iteration: 4, Log-Lik: -19771.695, Max-Change: 0.16148
Iteration: 5, Log-Lik: -19758.446, Max-Change: 0.09827
Iteration: 6, Log-Lik: -19753.086, Max-Change: 0.06032
Iteration: 7, Log-Lik: -19750.541, Max-Change: 0.05477
Iteration: 8, Log-Lik: -19749.114, Max-Change: 0.05062
Iteration: 9, Log-Lik: -19748.192, Max-Change: 0.04582
Iteration: 10, Log-Lik: -19747.226, Max-Change: 0.10399
Iteration: 11, Log-Lik: -19746.280, Max-Change: 0.04296
Iteration: 12, Log-Lik: -19746.028, Max-Change: 0.02800
Iteration: 13, Log-Lik: -19745.799, Max-Change: 0.03252
Iteration: 14, Log-Lik: -19745.668, Max-Change: 0.01965
Iteration: 15, Log-Lik: -19745.583, Max-Change: 0.01562
Iteration: 16, Log-Lik: -19745.533, Max-Change: 0.03946
Iteration: 17, Log-Lik: -19745.356, Max-Change: 0.01424
Iteration: 18, Log-Lik: -19745.328, Max-Change: 0.00866
Iteration: 19, Log-Lik: -19745.307, Max-Change: 0.00802
Iteration: 20, Log-Lik: -19745.293, Max-Change: 0.00602
Iteration: 21, Log-Lik: -19745.282, Max-Change: 0.00515
Iteration: 22, Log-Lik: -19745.275, Max-Change: 0.01378
Iteration: 23, Log-Lik: -19745.252, Max-Change: 0.00500
Iteration: 24, Log-Lik: -19745.248, Max-Change: 0.00306
Iteration: 25, Log-Lik: -19745.245, Max-Change: 0.00285
Iteration: 26, Log-Lik: -19745.243, Max-Change: 0.00214
Iteration: 27, Log-Lik: -19745.242, Max-Change: 0.00185
Iteration: 28, Log-Lik: -19745.241, Max-Change: 0.00500
Iteration: 29, Log-Lik: -19745.238, Max-Change: 0.00182
Iteration: 30, Log-Lik: -19745.237, Max-Change: 0.00112
Iteration: 31, Log-Lik: -19745.237, Max-Change: 0.00105
Iteration: 32, Log-Lik: -19745.236, Max-Change: 0.00079
Iteration: 33, Log-Lik: -19745.236, Max-Change: 0.00068
Iteration: 34, Log-Lik: -19745.236, Max-Change: 0.00185
Iteration: 35, Log-Lik: -19745.236, Max-Change: 0.00068
Iteration: 36, Log-Lik: -19745.236, Max-Change: 0.00042
Iteration: 37, Log-Lik: -19745.236, Max-Change: 0.00039
Iteration: 38, Log-Lik: -19745.236, Max-Change: 0.00029
Iteration: 39, Log-Lik: -19745.235, Max-Change: 0.00025
Iteration: 40, Log-Lik: -19745.235, Max-Change: 0.00068
Iteration: 41, Log-Lik: -19745.235, Max-Change: 0.00025
Iteration: 42, Log-Lik: -19745.235, Max-Change: 0.00016
Iteration: 43, Log-Lik: -19745.235, Max-Change: 0.00015
Iteration: 44, Log-Lik: -19745.235, Max-Change: 0.00011
Iteration: 45, Log-Lik: -19745.235, Max-Change: 0.00009
## 
## Step 7: Fit with anchor items, conservative threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -20874.945, Max-Change: 0.92285
Iteration: 2, Log-Lik: -19950.476, Max-Change: 0.44086
Iteration: 3, Log-Lik: -19817.312, Max-Change: 0.26701
Iteration: 4, Log-Lik: -19780.393, Max-Change: 0.16122
Iteration: 5, Log-Lik: -19767.298, Max-Change: 0.09786
Iteration: 6, Log-Lik: -19761.646, Max-Change: 0.07088
Iteration: 7, Log-Lik: -19758.759, Max-Change: 0.06332
Iteration: 8, Log-Lik: -19757.075, Max-Change: 0.05478
Iteration: 9, Log-Lik: -19756.004, Max-Change: 0.04671
Iteration: 10, Log-Lik: -19754.866, Max-Change: 0.08978
Iteration: 11, Log-Lik: -19754.131, Max-Change: 0.03788
Iteration: 12, Log-Lik: -19753.945, Max-Change: 0.02302
Iteration: 13, Log-Lik: -19753.812, Max-Change: 0.02172
Iteration: 14, Log-Lik: -19753.745, Max-Change: 0.01350
Iteration: 15, Log-Lik: -19753.702, Max-Change: 0.01027
Iteration: 16, Log-Lik: -19753.672, Max-Change: 0.02193
Iteration: 17, Log-Lik: -19753.614, Max-Change: 0.00814
Iteration: 18, Log-Lik: -19753.605, Max-Change: 0.00463
Iteration: 19, Log-Lik: -19753.600, Max-Change: 0.00353
Iteration: 20, Log-Lik: -19753.597, Max-Change: 0.00268
Iteration: 21, Log-Lik: -19753.594, Max-Change: 0.00220
Iteration: 22, Log-Lik: -19753.593, Max-Change: 0.00546
Iteration: 23, Log-Lik: -19753.588, Max-Change: 0.00194
Iteration: 24, Log-Lik: -19753.588, Max-Change: 0.00108
Iteration: 25, Log-Lik: -19753.588, Max-Change: 0.00078
Iteration: 26, Log-Lik: -19753.587, Max-Change: 0.00061
Iteration: 27, Log-Lik: -19753.587, Max-Change: 0.00051
Iteration: 28, Log-Lik: -19753.587, Max-Change: 0.00128
Iteration: 29, Log-Lik: -19753.587, Max-Change: 0.00046
Iteration: 30, Log-Lik: -19753.587, Max-Change: 0.00026
Iteration: 31, Log-Lik: -19753.587, Max-Change: 0.00020
Iteration: 32, Log-Lik: -19753.587, Max-Change: 0.00015
Iteration: 33, Log-Lik: -19753.587, Max-Change: 0.00013
Iteration: 34, Log-Lik: -19753.587, Max-Change: 0.00032
Iteration: 35, Log-Lik: -19753.587, Max-Change: 0.00011
Iteration: 36, Log-Lik: -19753.587, Max-Change: 0.00007
## 
## Step 8: Get scores
d2019_irt_fit_bias_bw$effect_size_test
## $liberal
##           Effect Size   Value
## 1                STDS  0.1470
## 2                UTDS  0.4400
## 3              UETSDS  0.1470
## 4               ETSSD  0.0594
## 5         Starks.DTFR  0.1394
## 6               UDTFR  0.4368
## 7              UETSDN  0.1403
## 8 theta.of.max.test.D -0.2163
## 9           Test.Dmax  0.1939
## 
## $conservative
##           Effect Size   Value
## 1                STDS  0.1528
## 2                UTDS  0.3621
## 3              UETSDS  0.1832
## 4               ETSSD  0.0647
## 5         Starks.DTFR  0.1738
## 6               UDTFR  0.3602
## 7              UETSDN  0.2054
## 8 theta.of.max.test.D -0.1431
## 9           Test.Dmax  0.6195
d2019_irt_fit_bias_bw$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.771  0.000       0.381
## item.2   0.000 0.000  0.000 0.000  0.000         -0.771  0.000       0.339
## item.3   0.071 0.072  0.068 0.068  0.287         -0.785  0.144       0.248
## item.4  -0.062 0.064 -0.055 0.058 -0.282         -1.601 -0.088       0.329
## item.5  -0.006 0.044 -0.011 0.047 -0.029          0.254 -0.115       0.327
## item.6   0.096 0.096  0.093 0.093  0.473         -0.555  0.156       0.289
## item.7   0.030 0.068  0.023 0.065  0.107         -2.104  0.117       0.524
## item.8   0.000 0.000  0.000 0.000  0.000         -0.771  0.000       0.299
## item.9   0.056 0.056  0.064 0.064  0.295          0.073  0.281       0.146
## item.10  0.000 0.000  0.000 0.000  0.000         -0.771  0.000       0.548
## item.11 -0.039 0.040 -0.042 0.043 -0.199         -0.005 -0.112       0.237
##         mean.ES.ref
## item.1        0.381
## item.2        0.339
## item.3        0.177
## item.4        0.391
## item.5        0.332
## item.6        0.193
## item.7        0.493
## item.8        0.299
## item.9        0.089
## item.10       0.548
## item.11       0.276
## 
## $conservative
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000         -0.798  0.000       0.380
## item.2   0.000 0.000  0.000 0.000  0.000         -0.798  0.000       0.337
## item.3   0.084 0.084  0.078 0.078  0.353         -0.646  0.179       0.248
## item.4  -0.064 0.072 -0.051 0.064 -0.306         -1.739 -0.102       0.329
## item.5   0.000 0.000  0.000 0.000  0.000         -0.798  0.000       0.334
## item.6   0.103 0.103  0.099 0.099  0.534         -0.422  0.188       0.289
## item.7   0.000 0.000  0.000 0.000  0.000         -0.798  0.000       0.518
## item.8   0.000 0.000  0.000 0.000  0.000         -0.798  0.000       0.296
## item.9   0.067 0.068  0.083 0.083  0.366          0.046  0.364       0.145
## item.10  0.000 0.000  0.000 0.000  0.000         -0.798  0.000       0.553
## item.11 -0.036 0.036 -0.035 0.035 -0.193         -0.323 -0.068       0.237
##         mean.ES.ref
## item.1        0.380
## item.2        0.337
## item.3        0.164
## item.4        0.393
## item.5        0.334
## item.6        0.187
## item.7        0.518
## item.8        0.296
## item.9        0.079
## item.10       0.553
## item.11       0.273
d2019_irt_fit_bias_bw$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                    11.000                     3.000                     2.000 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                     6.000                     0.273                     0.182 
##                prop_noDIF 
##                     0.545
d2019_irt_fit_bias_bw$fits$anchor_conservative %>% plot(type = "trace")

save_plot_to_file(d2019_irt_fit_bias_bw$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2019_dif_bw.png")

d2019_irt_fit_bias_hw$effect_size_test
## $liberal
##           Effect Size     Value
## 1                STDS  0.001455
## 2                UTDS  0.376944
## 3              UETSDS  0.073181
## 4               ETSSD  0.000449
## 5         Starks.DTFR  0.005348
## 6               UDTFR  0.404098
## 7              UETSDN  0.066285
## 8 theta.of.max.test.D  0.733243
## 9           Test.Dmax -0.133201
## 
## $conservative
##           Effect Size    Value
## 1                STDS  0.01804
## 2                UTDS  0.28878
## 3              UETSDS  0.10762
## 4               ETSSD  0.00554
## 5         Starks.DTFR  0.01258
## 6               UDTFR  0.31637
## 7              UETSDN  0.09940
## 8 theta.of.max.test.D -2.02034
## 9           Test.Dmax  0.20135
d2019_irt_fit_bias_hw$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000          0.733  0.000       0.607
## item.2   0.000 0.000  0.000 0.000  0.000          0.733  0.000       0.545
## item.3   0.047 0.063  0.054 0.067  0.133         -0.937  0.135       0.490
## item.4  -0.039 0.048 -0.039 0.047 -0.136         -1.562 -0.095       0.543
## item.5  -0.057 0.057 -0.062 0.062 -0.205         -0.118 -0.095       0.485
## item.6   0.086 0.086  0.094 0.094  0.294         -0.875  0.143       0.495
## item.7  -0.025 0.044 -0.034 0.048 -0.085         -0.702 -0.082       0.688
## item.8   0.000 0.000  0.000 0.000  0.000          0.733  0.000       0.515
## item.9   0.024 0.042  0.032 0.044  0.078         -0.565  0.074       0.323
## item.10 -0.035 0.037 -0.040 0.041 -0.118         -1.065 -0.081       0.711
## item.11  0.000 0.000  0.000 0.000  0.000          0.733  0.000       0.502
##         mean.ES.ref
## item.1        0.607
## item.2        0.545
## item.3        0.442
## item.4        0.581
## item.5        0.541
## item.6        0.409
## item.7        0.713
## item.8        0.515
## item.9        0.299
## item.10       0.746
## item.11       0.502
## 
## $conservative
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1   0.000 0.000  0.000 0.000  0.000          0.769  0.000       0.606
## item.2   0.000 0.000  0.000 0.000  0.000          0.769  0.000       0.545
## item.3   0.046 0.063  0.053 0.068  0.128         -0.958  0.136       0.489
## item.4   0.000 0.000  0.000 0.000  0.000          0.769  0.000       0.568
## item.5  -0.056 0.058 -0.062 0.063 -0.204         -0.057 -0.099       0.484
## item.6   0.084 0.085  0.093 0.094  0.289         -0.902  0.143       0.494
## item.7  -0.023 0.046 -0.033 0.050 -0.077         -0.680 -0.083       0.687
## item.8   0.000 0.000  0.000 0.000  0.000          0.769  0.000       0.515
## item.9   0.000 0.000  0.000 0.000  0.000          0.769  0.000       0.307
## item.10 -0.032 0.037 -0.039 0.042 -0.109         -0.999 -0.080       0.711
## item.11  0.000 0.000  0.000 0.000  0.000          0.769  0.000       0.502
##         mean.ES.ref
## item.1        0.606
## item.2        0.545
## item.3        0.443
## item.4        0.568
## item.5        0.541
## item.6        0.410
## item.7        0.710
## item.8        0.515
## item.9        0.307
## item.10       0.743
## item.11       0.502
d2019_irt_fit_bias_hw$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                    11.000                     2.000                     3.000 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                     6.000                     0.182                     0.273 
##                prop_noDIF 
##                     0.545
save_plot_to_file(d2019_irt_fit_bias_hw$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2019_dif_hw.png")

d2019_irt_fit_bias_sex = DIF_test(
  items = d2019_test,
  model = 1,
  group = d2019$sex2,
  itemtype = "2PL"
)
## There are 8 steps
## Step 1: Initial joint fit
## 
Iteration: 1, Log-Lik: -26154.929, Max-Change: 0.72462
Iteration: 2, Log-Lik: -25145.047, Max-Change: 0.42286
Iteration: 3, Log-Lik: -24878.516, Max-Change: 0.26797
Iteration: 4, Log-Lik: -24791.941, Max-Change: 0.16199
Iteration: 5, Log-Lik: -24758.048, Max-Change: 0.11870
Iteration: 6, Log-Lik: -24744.327, Max-Change: 0.08392
Iteration: 7, Log-Lik: -24737.817, Max-Change: 0.04658
Iteration: 8, Log-Lik: -24735.028, Max-Change: 0.03049
Iteration: 9, Log-Lik: -24733.570, Max-Change: 0.02259
Iteration: 10, Log-Lik: -24732.221, Max-Change: 0.00753
Iteration: 11, Log-Lik: -24731.955, Max-Change: 0.00548
Iteration: 12, Log-Lik: -24731.779, Max-Change: 0.00440
Iteration: 13, Log-Lik: -24731.388, Max-Change: 0.00300
Iteration: 14, Log-Lik: -24731.363, Max-Change: 0.00276
Iteration: 15, Log-Lik: -24731.345, Max-Change: 0.00206
Iteration: 16, Log-Lik: -24731.316, Max-Change: 0.00193
Iteration: 17, Log-Lik: -24731.309, Max-Change: 0.00111
Iteration: 18, Log-Lik: -24731.306, Max-Change: 0.00101
Iteration: 19, Log-Lik: -24731.297, Max-Change: 0.00036
Iteration: 20, Log-Lik: -24731.296, Max-Change: 0.00034
Iteration: 21, Log-Lik: -24731.296, Max-Change: 0.00031
Iteration: 22, Log-Lik: -24731.295, Max-Change: 0.00067
Iteration: 23, Log-Lik: -24731.295, Max-Change: 0.00050
Iteration: 24, Log-Lik: -24731.295, Max-Change: 0.00026
Iteration: 25, Log-Lik: -24731.295, Max-Change: 0.00014
Iteration: 26, Log-Lik: -24731.295, Max-Change: 0.00036
Iteration: 27, Log-Lik: -24731.295, Max-Change: 0.00013
Iteration: 28, Log-Lik: -24731.295, Max-Change: 0.00008
## 
## Step 2: Initial MI fit
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -26147.005, Max-Change: 0.71306
Iteration: 2, Log-Lik: -24877.552, Max-Change: 0.32033
Iteration: 3, Log-Lik: -24747.979, Max-Change: 0.16592
Iteration: 4, Log-Lik: -24699.998, Max-Change: 0.12129
Iteration: 5, Log-Lik: -24667.739, Max-Change: 0.11072
Iteration: 6, Log-Lik: -24643.662, Max-Change: 0.09345
Iteration: 7, Log-Lik: -24625.297, Max-Change: 0.07774
Iteration: 8, Log-Lik: -24611.163, Max-Change: 0.06432
Iteration: 9, Log-Lik: -24600.296, Max-Change: 0.05726
Iteration: 10, Log-Lik: -24591.755, Max-Change: 0.05086
Iteration: 11, Log-Lik: -24585.072, Max-Change: 0.04324
Iteration: 12, Log-Lik: -24579.847, Max-Change: 0.04173
Iteration: 13, Log-Lik: -24575.714, Max-Change: 0.03766
Iteration: 14, Log-Lik: -24572.437, Max-Change: 0.03337
Iteration: 15, Log-Lik: -24569.844, Max-Change: 0.03013
Iteration: 16, Log-Lik: -24566.146, Max-Change: 0.05278
Iteration: 17, Log-Lik: -24562.133, Max-Change: 0.02152
Iteration: 18, Log-Lik: -24561.357, Max-Change: 0.01160
Iteration: 19, Log-Lik: -24560.797, Max-Change: 0.01097
Iteration: 20, Log-Lik: -24560.475, Max-Change: 0.01067
Iteration: 21, Log-Lik: -24560.223, Max-Change: 0.01010
Iteration: 22, Log-Lik: -24559.790, Max-Change: 0.01306
Iteration: 23, Log-Lik: -24559.407, Max-Change: 0.00563
Iteration: 24, Log-Lik: -24559.326, Max-Change: 0.00364
Iteration: 25, Log-Lik: -24559.254, Max-Change: 0.00378
Iteration: 26, Log-Lik: -24559.215, Max-Change: 0.00365
Iteration: 27, Log-Lik: -24559.185, Max-Change: 0.00349
Iteration: 28, Log-Lik: -24559.114, Max-Change: 0.00395
Iteration: 29, Log-Lik: -24559.069, Max-Change: 0.00140
Iteration: 30, Log-Lik: -24559.058, Max-Change: 0.00146
Iteration: 31, Log-Lik: -24559.043, Max-Change: 0.00135
Iteration: 32, Log-Lik: -24559.037, Max-Change: 0.00130
Iteration: 33, Log-Lik: -24559.032, Max-Change: 0.00122
Iteration: 34, Log-Lik: -24559.016, Max-Change: 0.00194
Iteration: 35, Log-Lik: -24559.008, Max-Change: 0.00056
Iteration: 36, Log-Lik: -24559.006, Max-Change: 0.00063
Iteration: 37, Log-Lik: -24559.000, Max-Change: 0.00099
Iteration: 38, Log-Lik: -24558.998, Max-Change: 0.00044
Iteration: 39, Log-Lik: -24558.997, Max-Change: 0.00044
Iteration: 40, Log-Lik: -24558.993, Max-Change: 0.00093
Iteration: 41, Log-Lik: -24558.991, Max-Change: 0.00026
Iteration: 42, Log-Lik: -24558.991, Max-Change: 0.00027
Iteration: 43, Log-Lik: -24558.989, Max-Change: 0.00064
Iteration: 44, Log-Lik: -24558.988, Max-Change: 0.00018
Iteration: 45, Log-Lik: -24558.988, Max-Change: 0.00018
Iteration: 46, Log-Lik: -24558.987, Max-Change: 0.00045
Iteration: 47, Log-Lik: -24558.987, Max-Change: 0.00012
Iteration: 48, Log-Lik: -24558.986, Max-Change: 0.00012
Iteration: 49, Log-Lik: -24558.986, Max-Change: 0.00028
Iteration: 50, Log-Lik: -24558.986, Max-Change: 0.00009
## 
## Step 3: Leave one out MI testing
## 
## Step 4: Fit without DIF items, liberal threshold
## 
Iteration: 1, Log-Lik: -30674.478, Max-Change: 0.04683
Iteration: 2, Log-Lik: -30669.408, Max-Change: 0.00364
Iteration: 3, Log-Lik: -30669.402, Max-Change: 0.00087
Iteration: 4, Log-Lik: -30669.402, Max-Change: 0.00048
Iteration: 5, Log-Lik: -30669.402, Max-Change: 0.00036
Iteration: 6, Log-Lik: -30669.402, Max-Change: 0.00027
Iteration: 7, Log-Lik: -30669.402, Max-Change: 0.00007
## 
## Step 5: Fit without DIF items, conservative threshold
## 
Iteration: 1, Log-Lik: -30275.557, Max-Change: 0.25488
Iteration: 2, Log-Lik: -30166.595, Max-Change: 0.21567
Iteration: 3, Log-Lik: -30111.876, Max-Change: 0.16238
Iteration: 4, Log-Lik: -30088.091, Max-Change: 0.11545
Iteration: 5, Log-Lik: -30078.590, Max-Change: 0.08031
Iteration: 6, Log-Lik: -30074.882, Max-Change: 0.05540
Iteration: 7, Log-Lik: -30072.803, Max-Change: 0.02670
Iteration: 8, Log-Lik: -30072.579, Max-Change: 0.01959
Iteration: 9, Log-Lik: -30072.471, Max-Change: 0.01480
Iteration: 10, Log-Lik: -30072.354, Max-Change: 0.00562
Iteration: 11, Log-Lik: -30072.342, Max-Change: 0.00497
Iteration: 12, Log-Lik: -30072.333, Max-Change: 0.00358
Iteration: 13, Log-Lik: -30072.324, Max-Change: 0.00312
Iteration: 14, Log-Lik: -30072.319, Max-Change: 0.00199
Iteration: 15, Log-Lik: -30072.317, Max-Change: 0.00152
Iteration: 16, Log-Lik: -30072.316, Max-Change: 0.00072
Iteration: 17, Log-Lik: -30072.315, Max-Change: 0.00065
Iteration: 18, Log-Lik: -30072.315, Max-Change: 0.00060
Iteration: 19, Log-Lik: -30072.314, Max-Change: 0.00055
Iteration: 20, Log-Lik: -30072.314, Max-Change: 0.00051
Iteration: 21, Log-Lik: -30072.314, Max-Change: 0.00047
Iteration: 22, Log-Lik: -30072.314, Max-Change: 0.00042
Iteration: 23, Log-Lik: -30072.314, Max-Change: 0.00039
Iteration: 24, Log-Lik: -30072.313, Max-Change: 0.00036
Iteration: 25, Log-Lik: -30072.313, Max-Change: 0.00033
Iteration: 26, Log-Lik: -30072.313, Max-Change: 0.00031
Iteration: 27, Log-Lik: -30072.313, Max-Change: 0.00028
Iteration: 28, Log-Lik: -30072.313, Max-Change: 0.00026
Iteration: 29, Log-Lik: -30072.313, Max-Change: 0.00024
Iteration: 30, Log-Lik: -30072.313, Max-Change: 0.00022
Iteration: 31, Log-Lik: -30072.313, Max-Change: 0.00020
Iteration: 32, Log-Lik: -30072.313, Max-Change: 0.00019
Iteration: 33, Log-Lik: -30072.313, Max-Change: 0.00017
Iteration: 34, Log-Lik: -30072.313, Max-Change: 0.00015
Iteration: 35, Log-Lik: -30072.313, Max-Change: 0.00014
Iteration: 36, Log-Lik: -30072.313, Max-Change: 0.00013
Iteration: 37, Log-Lik: -30072.313, Max-Change: 0.00012
Iteration: 38, Log-Lik: -30072.313, Max-Change: 0.00011
Iteration: 39, Log-Lik: -30072.313, Max-Change: 0.00010
Iteration: 40, Log-Lik: -30072.313, Max-Change: 0.00009
## 
## Step 6: Fit with anchor items, liberal threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -26147.005, Max-Change: 0.90474
Iteration: 2, Log-Lik: -24648.158, Max-Change: 0.53356
Iteration: 3, Log-Lik: -24498.432, Max-Change: 0.31403
Iteration: 4, Log-Lik: -24458.909, Max-Change: 0.20697
Iteration: 5, Log-Lik: -24441.808, Max-Change: 0.13711
Iteration: 6, Log-Lik: -24431.597, Max-Change: 0.08980
Iteration: 7, Log-Lik: -24424.172, Max-Change: 0.05971
Iteration: 8, Log-Lik: -24418.182, Max-Change: 0.04829
Iteration: 9, Log-Lik: -24413.068, Max-Change: 0.04625
Iteration: 10, Log-Lik: -24408.616, Max-Change: 0.04354
Iteration: 11, Log-Lik: -24404.689, Max-Change: 0.04025
Iteration: 12, Log-Lik: -24401.215, Max-Change: 0.03962
Iteration: 13, Log-Lik: -24393.947, Max-Change: 0.08426
Iteration: 14, Log-Lik: -24386.903, Max-Change: 0.03395
Iteration: 15, Log-Lik: -24385.221, Max-Change: 0.02486
Iteration: 16, Log-Lik: -24382.157, Max-Change: 0.03662
Iteration: 17, Log-Lik: -24380.457, Max-Change: 0.02120
Iteration: 18, Log-Lik: -24379.563, Max-Change: 0.02199
Iteration: 19, Log-Lik: -24377.728, Max-Change: 0.03897
Iteration: 20, Log-Lik: -24375.908, Max-Change: 0.01595
Iteration: 21, Log-Lik: -24375.461, Max-Change: 0.01387
Iteration: 22, Log-Lik: -24374.666, Max-Change: 0.01725
Iteration: 23, Log-Lik: -24374.230, Max-Change: 0.01136
Iteration: 24, Log-Lik: -24373.979, Max-Change: 0.01196
Iteration: 25, Log-Lik: -24373.477, Max-Change: 0.02022
Iteration: 26, Log-Lik: -24372.944, Max-Change: 0.00827
Iteration: 27, Log-Lik: -24372.813, Max-Change: 0.00760
Iteration: 28, Log-Lik: -24372.579, Max-Change: 0.00956
Iteration: 29, Log-Lik: -24372.443, Max-Change: 0.00619
Iteration: 30, Log-Lik: -24372.370, Max-Change: 0.00658
Iteration: 31, Log-Lik: -24372.228, Max-Change: 0.01082
Iteration: 32, Log-Lik: -24372.071, Max-Change: 0.00444
Iteration: 33, Log-Lik: -24372.032, Max-Change: 0.00415
Iteration: 34, Log-Lik: -24371.964, Max-Change: 0.00527
Iteration: 35, Log-Lik: -24371.923, Max-Change: 0.00342
Iteration: 36, Log-Lik: -24371.901, Max-Change: 0.00368
Iteration: 37, Log-Lik: -24371.860, Max-Change: 0.00601
Iteration: 38, Log-Lik: -24371.812, Max-Change: 0.00247
Iteration: 39, Log-Lik: -24371.801, Max-Change: 0.00230
Iteration: 40, Log-Lik: -24371.780, Max-Change: 0.00289
Iteration: 41, Log-Lik: -24371.768, Max-Change: 0.00191
Iteration: 42, Log-Lik: -24371.762, Max-Change: 0.00204
Iteration: 43, Log-Lik: -24371.750, Max-Change: 0.00347
Iteration: 44, Log-Lik: -24371.735, Max-Change: 0.00143
Iteration: 45, Log-Lik: -24371.731, Max-Change: 0.00129
Iteration: 46, Log-Lik: -24371.725, Max-Change: 0.00169
Iteration: 47, Log-Lik: -24371.721, Max-Change: 0.00106
Iteration: 48, Log-Lik: -24371.719, Max-Change: 0.00115
Iteration: 49, Log-Lik: -24371.715, Max-Change: 0.00211
Iteration: 50, Log-Lik: -24371.710, Max-Change: 0.00086
Iteration: 51, Log-Lik: -24371.709, Max-Change: 0.00071
Iteration: 52, Log-Lik: -24371.707, Max-Change: 0.00102
Iteration: 53, Log-Lik: -24371.706, Max-Change: 0.00063
Iteration: 54, Log-Lik: -24371.705, Max-Change: 0.00066
Iteration: 55, Log-Lik: -24371.704, Max-Change: 0.00133
Iteration: 56, Log-Lik: -24371.702, Max-Change: 0.00055
Iteration: 57, Log-Lik: -24371.702, Max-Change: 0.00040
Iteration: 58, Log-Lik: -24371.701, Max-Change: 0.00061
Iteration: 59, Log-Lik: -24371.701, Max-Change: 0.00037
Iteration: 60, Log-Lik: -24371.700, Max-Change: 0.00039
Iteration: 61, Log-Lik: -24371.700, Max-Change: 0.00090
Iteration: 62, Log-Lik: -24371.699, Max-Change: 0.00037
Iteration: 63, Log-Lik: -24371.699, Max-Change: 0.00026
Iteration: 64, Log-Lik: -24371.699, Max-Change: 0.00041
Iteration: 65, Log-Lik: -24371.699, Max-Change: 0.00025
Iteration: 66, Log-Lik: -24371.699, Max-Change: 0.00024
Iteration: 67, Log-Lik: -24371.699, Max-Change: 0.00065
Iteration: 68, Log-Lik: -24371.698, Max-Change: 0.00027
Iteration: 69, Log-Lik: -24371.698, Max-Change: 0.00019
Iteration: 70, Log-Lik: -24371.698, Max-Change: 0.00030
Iteration: 71, Log-Lik: -24371.698, Max-Change: 0.00018
Iteration: 72, Log-Lik: -24371.698, Max-Change: 0.00017
Iteration: 73, Log-Lik: -24371.698, Max-Change: 0.00050
Iteration: 74, Log-Lik: -24371.698, Max-Change: 0.00021
Iteration: 75, Log-Lik: -24371.697, Max-Change: 0.00015
Iteration: 76, Log-Lik: -24371.697, Max-Change: 0.00023
Iteration: 77, Log-Lik: -24371.697, Max-Change: 0.00014
Iteration: 78, Log-Lik: -24371.697, Max-Change: 0.00014
Iteration: 79, Log-Lik: -24371.697, Max-Change: 0.00040
Iteration: 80, Log-Lik: -24371.697, Max-Change: 0.00016
Iteration: 81, Log-Lik: -24371.697, Max-Change: 0.00012
Iteration: 82, Log-Lik: -24371.697, Max-Change: 0.00020
Iteration: 83, Log-Lik: -24371.697, Max-Change: 0.00012
Iteration: 84, Log-Lik: -24371.697, Max-Change: 0.00012
Iteration: 85, Log-Lik: -24371.697, Max-Change: 0.00034
Iteration: 86, Log-Lik: -24371.697, Max-Change: 0.00014
Iteration: 87, Log-Lik: -24371.697, Max-Change: 0.00010
Iteration: 88, Log-Lik: -24371.697, Max-Change: 0.00018
Iteration: 89, Log-Lik: -24371.697, Max-Change: 0.00010
Iteration: 90, Log-Lik: -24371.697, Max-Change: 0.00010
## 
## Step 7: Fit with anchor items, conservative threshold
## NA values in group removed, along with associated rows in data
## 
Iteration: 1, Log-Lik: -26147.005, Max-Change: 0.90495
Iteration: 2, Log-Lik: -24657.388, Max-Change: 0.53926
Iteration: 3, Log-Lik: -24508.529, Max-Change: 0.32380
Iteration: 4, Log-Lik: -24467.215, Max-Change: 0.21327
Iteration: 5, Log-Lik: -24447.027, Max-Change: 0.12122
Iteration: 6, Log-Lik: -24434.222, Max-Change: 0.08576
Iteration: 7, Log-Lik: -24424.612, Max-Change: 0.06294
Iteration: 8, Log-Lik: -24416.914, Max-Change: 0.05266
Iteration: 9, Log-Lik: -24410.600, Max-Change: 0.05053
Iteration: 10, Log-Lik: -24405.311, Max-Change: 0.04843
Iteration: 11, Log-Lik: -24400.836, Max-Change: 0.04262
Iteration: 12, Log-Lik: -24397.051, Max-Change: 0.04254
Iteration: 13, Log-Lik: -24389.470, Max-Change: 0.08417
Iteration: 14, Log-Lik: -24382.772, Max-Change: 0.03302
Iteration: 15, Log-Lik: -24381.329, Max-Change: 0.02182
Iteration: 16, Log-Lik: -24379.134, Max-Change: 0.02798
Iteration: 17, Log-Lik: -24378.063, Max-Change: 0.01892
Iteration: 18, Log-Lik: -24377.398, Max-Change: 0.01953
Iteration: 19, Log-Lik: -24376.095, Max-Change: 0.03266
Iteration: 20, Log-Lik: -24374.883, Max-Change: 0.01304
Iteration: 21, Log-Lik: -24374.613, Max-Change: 0.01005
Iteration: 22, Log-Lik: -24374.206, Max-Change: 0.01159
Iteration: 23, Log-Lik: -24374.002, Max-Change: 0.00841
Iteration: 24, Log-Lik: -24373.873, Max-Change: 0.00856
Iteration: 25, Log-Lik: -24373.628, Max-Change: 0.01408
Iteration: 26, Log-Lik: -24373.384, Max-Change: 0.00564
Iteration: 27, Log-Lik: -24373.331, Max-Change: 0.00456
Iteration: 28, Log-Lik: -24373.248, Max-Change: 0.00529
Iteration: 29, Log-Lik: -24373.205, Max-Change: 0.00375
Iteration: 30, Log-Lik: -24373.180, Max-Change: 0.00381
Iteration: 31, Log-Lik: -24373.132, Max-Change: 0.00626
Iteration: 32, Log-Lik: -24373.083, Max-Change: 0.00252
Iteration: 33, Log-Lik: -24373.072, Max-Change: 0.00206
Iteration: 34, Log-Lik: -24373.056, Max-Change: 0.00241
Iteration: 35, Log-Lik: -24373.047, Max-Change: 0.00168
Iteration: 36, Log-Lik: -24373.042, Max-Change: 0.00171
Iteration: 37, Log-Lik: -24373.032, Max-Change: 0.00286
Iteration: 38, Log-Lik: -24373.022, Max-Change: 0.00116
Iteration: 39, Log-Lik: -24373.020, Max-Change: 0.00093
Iteration: 40, Log-Lik: -24373.017, Max-Change: 0.00110
Iteration: 41, Log-Lik: -24373.015, Max-Change: 0.00074
Iteration: 42, Log-Lik: -24373.014, Max-Change: 0.00078
Iteration: 43, Log-Lik: -24373.012, Max-Change: 0.00135
Iteration: 44, Log-Lik: -24373.010, Max-Change: 0.00055
Iteration: 45, Log-Lik: -24373.009, Max-Change: 0.00042
Iteration: 46, Log-Lik: -24373.009, Max-Change: 0.00051
Iteration: 47, Log-Lik: -24373.008, Max-Change: 0.00035
Iteration: 48, Log-Lik: -24373.008, Max-Change: 0.00038
Iteration: 49, Log-Lik: -24373.008, Max-Change: 0.00068
Iteration: 50, Log-Lik: -24373.007, Max-Change: 0.00027
Iteration: 51, Log-Lik: -24373.007, Max-Change: 0.00019
Iteration: 52, Log-Lik: -24373.007, Max-Change: 0.00025
Iteration: 53, Log-Lik: -24373.007, Max-Change: 0.00015
Iteration: 54, Log-Lik: -24373.007, Max-Change: 0.00019
Iteration: 55, Log-Lik: -24373.007, Max-Change: 0.00034
Iteration: 56, Log-Lik: -24373.007, Max-Change: 0.00014
Iteration: 57, Log-Lik: -24373.007, Max-Change: 0.00009
## 
## Step 8: Get scores
d2019_irt_fit_bias_sex$effect_size_test
## $liberal
##           Effect Size   Value
## 1                STDS  0.3076
## 2                UTDS  0.7086
## 3              UETSDS  0.3197
## 4               ETSSD  0.0991
## 5         Starks.DTFR  0.3033
## 6               UDTFR  0.7035
## 7              UETSDN  0.3142
## 8 theta.of.max.test.D -1.5234
## 9           Test.Dmax  0.7998
## 
## $conservative
##           Effect Size   Value
## 1                STDS  0.2196
## 2                UTDS  0.6767
## 3              UETSDS  0.2988
## 4               ETSSD  0.0704
## 5         Starks.DTFR  0.2163
## 6               UDTFR  0.6773
## 7              UETSDN  0.2929
## 8 theta.of.max.test.D -1.5698
## 9           Test.Dmax  0.7608
d2019_irt_fit_bias_sex$effect_size_items
## $liberal
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1  -0.074 0.075 -0.074 0.075 -0.257         -0.722 -0.126       0.597
## item.2   0.156 0.156  0.156 0.156  0.533         -0.850  0.242       0.617
## item.3  -0.019 0.022 -0.019 0.022 -0.056         -0.269 -0.050       0.471
## item.4   0.009 0.011  0.009 0.011  0.033         -0.151  0.019       0.578
## item.5   0.018 0.019  0.018 0.019  0.070         -0.223  0.031       0.551
## item.6   0.084 0.084  0.084 0.084  0.310         -0.580  0.122       0.482
## item.7   0.097 0.097  0.096 0.096  0.325         -1.521  0.240       0.766
## item.8  -0.033 0.041 -0.033 0.040 -0.116         -0.139 -0.073       0.511
## item.9   0.000 0.000  0.000 0.000  0.000          0.080  0.000       0.306
## item.10  0.136 0.136  0.133 0.133  0.441         -1.540  0.378       0.804
## item.11 -0.067 0.068 -0.067 0.067 -0.243         -0.290 -0.110       0.475
##         mean.ES.ref
## item.1        0.670
## item.2        0.461
## item.3        0.490
## item.4        0.569
## item.5        0.532
## item.6        0.397
## item.7        0.669
## item.8        0.544
## item.9        0.306
## item.10       0.668
## item.11       0.542
## 
## $conservative
##           SIDS  UIDS   SIDN  UIDN   ESSD theta.of.max.D  max.D mean.ES.foc
## item.1  -0.080 0.081 -0.080 0.082 -0.278         -0.709 -0.136       0.596
## item.2   0.147 0.147  0.149 0.149  0.501         -0.856  0.231       0.617
## item.3  -0.029 0.030 -0.029 0.031 -0.083         -0.287 -0.068       0.470
## item.4   0.000 0.000  0.000 0.000  0.000          0.128  0.000       0.576
## item.5   0.000 0.000  0.000 0.000  0.000          0.128  0.000       0.545
## item.6   0.076 0.076  0.076 0.076  0.277         -0.625  0.110       0.482
## item.7   0.091 0.091  0.090 0.090  0.303         -1.536  0.233       0.766
## item.8  -0.040 0.047 -0.041 0.047 -0.142         -0.139 -0.085       0.511
## item.9   0.000 0.000  0.000 0.000  0.000          0.128  0.000       0.311
## item.10  0.129 0.129  0.127 0.127  0.420         -1.539  0.370       0.804
## item.11 -0.075 0.075 -0.075 0.075 -0.268         -0.268 -0.122       0.475
##         mean.ES.ref
## item.1        0.676
## item.2        0.470
## item.3        0.499
## item.4        0.576
## item.5        0.545
## item.6        0.406
## item.7        0.676
## item.8        0.551
## item.9        0.311
## item.10       0.675
## item.11       0.549
d2019_irt_fit_bias_sex$effect_size_items$conservative %>% DIF_summary()
##                   n_items    n_favoring_focal_group      n_favoring_ref_group 
##                    11.000                     4.000                     4.000 
##                   n_noDIF prop_favoring_focal_group   prop_favoring_ref_group 
##                     3.000                     0.364                     0.364 
##                prop_noDIF 
##                     0.273
d2019_irt_fit_bias_sex$fits$anchor_conservative %>% plot(type = "trace")

save_plot_to_file(d2019_irt_fit_bias_sex$fits$anchor_conservative %>% plot(type = "trace"), filename = "figs/2019_dif_sex.png")

#test bias adjusted scores
d2019$irt_adj = case_when(
  d2019$race2 == "Black" ~ d2019$irt - d2019_irt_fit_bias_bw$effect_size_test$conservative$Value[4],
  d2019$race2 == "Hispanic" ~ d2019$irt - d2019_irt_fit_bias_hw$effect_size_test$conservative$Value[4],
  d2019$sex2 == "Female" ~ d2019$irt - d2019_irt_fit_bias_sex$effect_size_test$conservative$Value[4],
  TRUE ~ d2019$irt
)

Meta-analysis

Annoying, have to compute each gap, and its bias, and its reliability, and the gap’s SE.

#raw gaps
raw_bw_gaps = c(
  "2013" = SMD_matrix(d2013$irt, d2013$bw)[1, 2],
  "2015" = SMD_matrix(d2015$irt, d2015$bw)[1, 2],
  "2013" = SMD_matrix(d2019$irt, d2019$bw)[1, 2]
)

raw_hw_gaps = c(
  "2013" = SMD_matrix(d2013$irt, d2013$hw)[1, 2],
  "2015" = SMD_matrix(d2015$irt, d2015$hw)[1, 2],
  "2013" = SMD_matrix(d2019$irt, d2019$hw)[1, 2]
)

raw_sex_gaps = c(
  "2013" = SMD_matrix(d2013$irt, d2013$sex2)[1, 2],
  "2015" = SMD_matrix(d2015$irt, d2015$sex2)[1, 2],
  "2013" = SMD_matrix(d2019$irt, d2019$sex2)[1, 2]
)

reliabilities = c(
  empirical_rxx(d2013_irt_fit_scores),
  empirical_rxx(d2015_irt_fit_scores),
  empirical_rxx(d2019_irt_fit_scores)
)

bias_bw = c(
  d2013_irt_fit_bias_bw$effect_size_test$conservative$Value[4],
  d2015_irt_fit_bias_bw$effect_size_test$conservative$Value[4],
  d2019_irt_fit_bias_bw$effect_size_test$conservative$Value[4]
)

bias_hw = c(
  d2013_irt_fit_bias_hw$effect_size_test$conservative$Value[4],
  d2015_irt_fit_bias_hw$effect_size_test$conservative$Value[4],
  d2019_irt_fit_bias_hw$effect_size_test$conservative$Value[4]
)

bias_sex = c(
  d2013_irt_fit_bias_sex$effect_size_test$conservative$Value[4],
  d2015_irt_fit_bias_sex$effect_size_test$conservative$Value[4],
  d2019_irt_fit_bias_sex$effect_size_test$conservative$Value[4]
)

#test bias adjusted
(adj_bw_gaps = raw_bw_gaps - bias_bw)
##  2013  2015  2013 
## 0.801 1.037 1.188
(adj_hw_gaps = raw_hw_gaps - bias_hw)
##  2013  2015  2013 
## 0.375 0.565 0.544
(adj_sex_gaps = raw_sex_gaps - bias_sex)
##  2013  2015  2013 
## 0.255 0.581 0.479
#reliability after test bias adjusted
(adj2_bw_gaps = map2_dbl(adj_bw_gaps, reliabilities, adj_d_reliability))
##  2013  2015  2013 
## 0.929 1.332 1.367
(adj2_hw_gaps = map2_dbl(adj_hw_gaps, reliabilities, adj_d_reliability))
##  2013  2015  2013 
## 0.427 0.694 0.606
(adj2_sex_gaps = map2_dbl(adj_sex_gaps, reliabilities, adj_d_reliability))
##  2013  2015  2013 
## 0.290 0.714 0.533
#standard errors
(se_bw_gaps = c(
  SMD_matrix(d2013$irt, d2013$bw, extended_output = T)$se[1, 2],
  SMD_matrix(d2015$irt, d2015$bw, extended_output = T)$se[1, 2],
  SMD_matrix(d2015$irt, d2015$bw, extended_output = T)$se[1, 2]
))
## [1] 0.1092 0.0674 0.0674
(se_hw_gaps = c(
  SMD_matrix(d2013$irt, d2013$hw, extended_output = T)$se[1, 2],
  SMD_matrix(d2015$irt, d2015$hw, extended_output = T)$se[1, 2],
  SMD_matrix(d2015$irt, d2015$hw, extended_output = T)$se[1, 2]
))
## [1] 0.1208 0.0675 0.0675
(se_sex_gaps = c(
  SMD_matrix(d2013$irt, d2013$sex2, extended_output = T)$se[1, 2],
  SMD_matrix(d2015$irt, d2015$sex2, extended_output = T)$se[1, 2],
  SMD_matrix(d2015$irt, d2015$sex2, extended_output = T)$se[1, 2]
))
## [1] 0.0645 0.0359 0.0359
#metas
(meta_bw = rma(
  yi = adj2_bw_gaps,
  sei = se_bw_gaps
))
## 
## Random-Effects Model (k = 3; tau^2 estimator: REML)
## 
## tau^2 (estimated amount of total heterogeneity): 0.0471 (SE = 0.0540)
## tau (square root of estimated tau^2 value):      0.2171
## I^2 (total heterogeneity / total variability):   88.47%
## H^2 (total variability / sampling variability):  8.67
## 
## Test for Heterogeneity:
## Q(df = 2) = 12.5826, p-val = 0.0019
## 
## Model Results:
## 
## estimate      se    zval    pval   ci.lb   ci.ub      
##   1.2219  0.1341  9.1128  <.0001  0.9591  1.4847  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(meta_hw = rma(
  yi = adj2_hw_gaps,
  sei = se_hw_gaps
))
## 
## Random-Effects Model (k = 3; tau^2 estimator: REML)
## 
## tau^2 (estimated amount of total heterogeneity): 0.0051 (SE = 0.0118)
## tau (square root of estimated tau^2 value):      0.0715
## I^2 (total heterogeneity / total variability):   44.14%
## H^2 (total variability / sampling variability):  1.79
## 
## Test for Heterogeneity:
## Q(df = 2) = 3.7835, p-val = 0.1508
## 
## Model Results:
## 
## estimate      se    zval    pval   ci.lb   ci.ub      
##   0.6060  0.0623  9.7261  <.0001  0.4839  0.7281  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(meta_sex = rma(
  yi = adj2_sex_gaps,
  sei = se_sex_gaps
))
## 
## Random-Effects Model (k = 3; tau^2 estimator: REML)
## 
## tau^2 (estimated amount of total heterogeneity): 0.0419 (SE = 0.0441)
## tau (square root of estimated tau^2 value):      0.2046
## I^2 (total heterogeneity / total variability):   95.80%
## H^2 (total variability / sampling variability):  23.79
## 
## Test for Heterogeneity:
## Q(df = 2) = 35.8779, p-val < .0001
## 
## Model Results:
## 
## estimate      se    zval    pval   ci.lb   ci.ub      
##   0.5170  0.1212  4.2660  <.0001  0.2795  0.7545  *** 
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#plots
forest(meta_bw)

forest(meta_hw)

forest(meta_sex)

#save to disk
walk2(c("Black-White", "Hispanic-White", "Male-Female"), list(meta_bw, meta_hw, meta_sex), function(name, model) {
  #https://cran.r-project.org/web/packages/metaviz/vignettes/metaviz.html#forest-plot-variants-rainforest-plot-and-thick-forest-plots
  viz_forest(model, xlab = "Cohen's d", study_labels = c("2013", "2015", "2019"), annotate_CI = T) +
    ggtitle(name) +
    theme_update(title = element_text())
  
  GG_save(str_glue("figs/{name}.png"))
})

#items in tests
d2013_test %>% ncol()
## [1] 14
d2015_test %>% ncol()
## [1] 12
d2019_test %>% ncol()
## [1] 11

Joint

d_all = bind_rows(
  d2013 %>% select(irt, irt_adj, sex2, race2, age_range) %>% mutate(wave = "2013"),
  d2015 %>% select(irt, irt_adj, sex2, race2, age_range) %>% mutate(wave = "2015"),
  d2019 %>% select(irt, irt_adj, sex2, race2, age_range) %>% mutate(wave = "2019")
)

#raw
list(
  ols(irt ~ sex2 + race2, data = d_all),
  ols(irt ~ sex2 + race2 + age_range, data = d_all)
) %>% summarize_models()
#test bias adjusted
list(
  ols(irt_adj ~ sex2 + race2, data = d_all),
  ols(irt_adj ~ sex2 + race2 + age_range, data = d_all)
) %>% summarize_models()
#mean reliability
mean_reliability = wtd.mean(reliabilities, c(nrow(d2013), nrow(d2015), nrow(d2019)))
ols(irt_adj ~ sex2 + race2 + age_range, data = d_all) %>% coef() %>% divide_by(sqrt(mean_reliability))
##       Intercept     sex2=Female     race2=Black  race2=Hispanic     race2=Other 
##         0.39537        -0.60831        -1.36836        -0.65118        -0.22946 
## age_range=25-34 age_range=35-44 age_range=45-54 age_range=55-64   age_range=65+ 
##         0.22282         0.19910         0.00164         0.12320        -0.23875 
## age_range=18-29 age_range=30-49 age_range=50-64 
##        -0.04508         0.00790        -0.10136

Meta

#versions
write_sessioninfo()
## R version 4.3.0 (2023-04-21)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Linux Mint 21.1
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0 
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_DK.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_DK.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_DK.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: Europe/Berlin
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] metaviz_0.3.1         metafor_4.0-0         numDeriv_2016.8-1.1  
##  [4] metadat_1.2-0         Matrix_1.5-1          rms_6.6-0            
##  [7] mirt_1.38.1           lattice_0.20-45       haven_2.5.2          
## [10] kirkegaard_2023-05-01 psych_2.3.3           assertthat_0.2.1     
## [13] weights_1.0.4         Hmisc_5.0-1           magrittr_2.0.3       
## [16] lubridate_1.9.2       forcats_1.0.0         stringr_1.5.0        
## [19] dplyr_1.1.2           purrr_1.0.1           readr_2.1.4          
## [22] tidyr_1.3.0           tibble_3.2.1          ggplot2_3.4.2        
## [25] tidyverse_2.0.0      
## 
## loaded via a namespace (and not attached):
##   [1] mathjaxr_1.6-0       RColorBrewer_1.1-3   rstudioapi_0.14     
##   [4] jsonlite_1.8.4       TH.data_1.1-2        farver_2.1.1        
##   [7] nloptr_2.0.3         rmarkdown_2.21       ragg_1.2.5          
##  [10] vctrs_0.6.2          minqa_1.2.5          base64enc_0.1-3     
##  [13] rstatix_0.7.2        webshot_0.5.4        htmltools_0.5.5     
##  [16] polspline_1.1.22     broom_1.0.4          Formula_1.2-5       
##  [19] dcurver_0.9.2        sass_0.4.5           bslib_0.4.2         
##  [22] htmlwidgets_1.6.2    plyr_1.8.8           sandwich_3.0-2      
##  [25] zoo_1.8-12           cachem_1.0.7         lifecycle_1.0.3     
##  [28] pkgconfig_2.0.3      R6_2.5.1             fastmap_1.1.1       
##  [31] digest_0.6.31        colorspace_2.1-0     textshaping_0.3.6   
##  [34] ggpubr_0.6.0         vegan_2.6-4          labeling_0.4.2      
##  [37] fansi_1.0.4          timechange_0.2.0     gdata_2.18.0.1      
##  [40] httr_1.4.5           abind_1.4-5          mgcv_1.8-42         
##  [43] compiler_4.3.0       withr_2.5.0          htmlTable_2.4.1     
##  [46] backports_1.4.1      carData_3.0-5        highr_0.10          
##  [49] ggsignif_0.6.4       MASS_7.3-58.3        quantreg_5.95       
##  [52] GPArotation_2023.3-1 gtools_3.9.4         permute_0.9-7       
##  [55] tools_4.3.0          foreign_0.8-82       nnet_7.3-18         
##  [58] glue_1.6.2           nlme_3.1-162         grid_4.3.0          
##  [61] checkmate_2.2.0      cluster_2.1.4        generics_0.1.3      
##  [64] gtable_0.3.3         tzdb_0.3.0           data.table_1.14.8   
##  [67] hms_1.1.3            xml2_1.3.4           car_3.1-2           
##  [70] Deriv_4.1.3          utf8_1.2.3           pillar_1.9.0        
##  [73] splines_4.3.0        survival_3.5-3       SparseM_1.81        
##  [76] tidyselect_1.2.0     pbapply_1.7-0        knitr_1.42          
##  [79] gridExtra_2.3        svglite_2.1.1        xfun_0.39           
##  [82] stringi_1.7.12       yaml_2.3.7           boot_1.3-28         
##  [85] kableExtra_1.3.4     evaluate_0.20        codetools_0.2-19    
##  [88] cli_3.6.1            rpart_4.1.19         systemfonts_1.0.4   
##  [91] munsell_0.5.0        jquerylib_0.1.4      Rcpp_1.0.10         
##  [94] parallel_4.3.0       MatrixModels_0.5-1   lme4_1.1-33         
##  [97] viridisLite_0.4.1    mvtnorm_1.1-3        scales_1.2.1        
## [100] rlang_1.1.0          cowplot_1.1.1        rvest_1.0.3         
## [103] multcomp_1.4-23      mnormt_2.1.1         mice_3.15.0
#write data to file for reuse
d_all %>% write_rds("data/data_for_reuse/d_all.rds")
d2013 %>% write_rds("data/data_for_reuse/d2013.rds")
d2015 %>% write_rds("data/data_for_reuse/d2015.rds")
d2019 %>% write_rds("data/data_for_reuse/d2019.rds")

#OSF
if (F) {
  library(osfr)
  
  #login
  osf_auth(readr::read_lines("~/.config/osf_token"))
  
  #the project we will use
  osf_proj = osf_retrieve_node("https://osf.io/rb6tq/")
  
  #upload all files in project
  #overwrite existing (versioning)
  osf_upload(
    osf_proj,
    path = c("data", "figs", "notebook.Rmd", "notebook.html", "sessions_info.txt"), 
    conflicts = "overwrite"
    )
}