library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4          ✔ readr     2.1.5     
✔ forcats   1.0.0          ✔ stringr   1.5.1     
✔ ggplot2   3.5.1.9000     ✔ tibble    3.2.1     
✔ lubridate 1.9.4          ✔ tidyr     1.3.1     
✔ purrr     1.0.4          
── 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
library(here)
here() starts at /Users/visuallearninglab/Documents/vedi_survey/vedi

Data loading

center_vars <- function(data) {
  return(data |>
           mutate(visual_frequency_centered = scale(Frequency_numeric_val),
         total_count_centered = scale(TotalCount_numeric_val),
         interaction_count_centered = scale(InteractionCount_numeric_val),
         formats_seen_centered = scale(FormatsSeen_numeric_val),
         babiness_centered = scale(babiness_mean),
         age_centered = scale(childAge)))
}
combined_normed <- read_csv(file.path(here('data','main', 'processed'),"processed-responses.csv"))
Rows: 3403 Columns: 23
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr   (6): object, globalID, category, childSiblingAges, feedback, age_half
dbl  (15): aoa, sessionID, Frequency_normalized_val, TotalCount_normalized_v...
dttm  (2): startTimestamp, endTimestamp

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
combined_normed_summary <- read_csv(file.path(here('data','main', 'processed'),"processed-responses-summarized.csv")) |>
  arrange(object)
Rows: 49 Columns: 16
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (2): object, category
dbl (14): aoa, Frequency_normalized_val, TotalCount_normalized_val, Interact...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# can't use this directly since there are multiple elements with the same AoA dependent variable value, can't add item-level random effects
centered_vars <- combined_normed |>
  filter(!is.na(InteractionCount_numeric_val) & sessionID == 1) |>
  mutate(
    InteractionCount_numeric_val = ifelse(InteractionCount_numeric_val > 0, log(InteractionCount_numeric_val), 0),
    TotalCount_numeric_val = ifelse(TotalCount_numeric_val > 0, log(TotalCount_numeric_val), 0)
  ) |>
  # we are adding new centered vars here but not using the centered vars in later analyses
  center_vars()

# can use this but it does not include anything age-related and we are just predicting object
centered_summarized_vars <- combined_normed_summary |>
  center_vars()

Helpers

make_mat <- function(df, col_name) {
  d_wide <- df |> 
  select(object, globalID, {{col_name}}) |> 
  pivot_wider(names_from = object, values_from = {{col_name}}) |> 
    #todo: can't assume all participants completed survey
  mutate(across(-globalID, ~replace_na(., 0)))
  d_mat <- d_wide %>%
  select(-globalID) %>% 
  data.frame %>%
  data.matrix
  colnames(d_mat) <- sort(unique(df$object))
  rownames(d_mat) <- d_wide$globalID
  # Requires no empty rows - `personfit` doesn't work with `removeEmptyRows=TRUE` even though the model fit will work that way. 
  d_mat <- d_mat[complete.cases(d_mat),]
  return(d_mat)
}

make_discrim_diff_plot <- function(df, input_title) {
  ggplot(df, aes(x = b, y = a, label = item_name)) +
  geom_point(aes(color=category), size=4, alpha=0.6) +
  ggrepel::geom_label_repel() +
  labs(
    title = input_title,
    x = "Difficulty",
    y = "Discrimination"
  ) +
  theme_minimal()
}

run_grm <- function(df, combined_normed_summary) {
  model_1dim <- mirt(df, 1, itemtype = "graded")
  coefs_1dim <- coef(model_1dim, simplify = TRUE, IRTpars = TRUE)$items
  # Get difficulty parameters
  difficulty_1dim <- gen.difficulty(model_1dim)
  # Calculate column means
  col_means <- colMeans(df)
  # Create a single tibble with all information
  output_tibble <- tibble(
    item_name = rownames(coefs_1dim),
   a = coefs_1dim[, "a"],                 # Discrimination parameter (slope)
    b = difficulty_1dim,     # Difficulty parameter
    mean = col_means
  ) |> left_join(combined_normed_summary |> select(object, category), by=c("item_name" = "object"))
  return(output_tibble)
}

Fitting IRT models

library(mirt) # requires package loading, not just referencing. 
Loading required package: stats4
Loading required package: lattice
d_mat_count <- make_mat(centered_vars, "TotalCount_numeric_val")

d_mat_freq <- make_mat(centered_vars, "Frequency_numeric_val")

d_mat_formats <- make_mat(centered_vars, "FormatsSeen_numeric_val")
#df <- data.frame(
#  Item = names(loadings),
#  Loading = loadings,
#  Difficulty = difficulty
#)

# Plot
#ggplot(df, aes(x = Difficulty, y = Loading, label = Item)) +
#  geom_point() +
#  geom_text(vjust = -0.5, size = 3) +
#  labs(
#    title = "Item Loadings vs. Difficulty",
#    x = "Difficulty (Mean Log Count)",
#    y = "Factor Loading (Discrimination)"
#  ) +
#  theme_minimal()

Frequency

model_1dim <- mirt(d_mat_freq, 1, itemtype = "graded")
"beach" re-mapped to ensure all categories have a distance of 1
"bird" re-mapped to ensure all categories have a distance of 1
"block" re-mapped to ensure all categories have a distance of 1
"book" re-mapped to ensure all categories have a distance of 1
"bus" re-mapped to ensure all categories have a distance of 1
"car" re-mapped to ensure all categories have a distance of 1
"elephant" re-mapped to ensure all categories have a distance of 1
"firetruck" re-mapped to ensure all categories have a distance of 1
"hand" re-mapped to ensure all categories have a distance of 1
"motorcycle" re-mapped to ensure all categories have a distance of 1
"penguin" re-mapped to ensure all categories have a distance of 1
"pool" re-mapped to ensure all categories have a distance of 1
"radio" re-mapped to ensure all categories have a distance of 1
"scissors" re-mapped to ensure all categories have a distance of 1
"slide" re-mapped to ensure all categories have a distance of 1
"spoon" re-mapped to ensure all categories have a distance of 1
"stroller" re-mapped to ensure all categories have a distance of 1
"train" re-mapped to ensure all categories have a distance of 1
"watch" re-mapped to ensure all categories have a distance of 1

Iteration: 1, Log-Lik: -3674.022, Max-Change: 0.96209
Iteration: 2, Log-Lik: -3635.790, Max-Change: 0.47086
Iteration: 3, Log-Lik: -3630.917, Max-Change: 0.20774
Iteration: 4, Log-Lik: -3629.710, Max-Change: 0.19630
Iteration: 5, Log-Lik: -3629.159, Max-Change: 0.21437
Iteration: 6, Log-Lik: -3628.863, Max-Change: 0.05666
Iteration: 7, Log-Lik: -3628.714, Max-Change: 0.04251
Iteration: 8, Log-Lik: -3628.584, Max-Change: 0.03231
Iteration: 9, Log-Lik: -3628.489, Max-Change: 0.02830
Iteration: 10, Log-Lik: -3628.277, Max-Change: 0.01114
Iteration: 11, Log-Lik: -3628.261, Max-Change: 0.00692
Iteration: 12, Log-Lik: -3628.252, Max-Change: 0.01033
Iteration: 13, Log-Lik: -3628.236, Max-Change: 0.00520
Iteration: 14, Log-Lik: -3628.231, Max-Change: 0.00436
Iteration: 15, Log-Lik: -3628.228, Max-Change: 0.00543
Iteration: 16, Log-Lik: -3628.225, Max-Change: 0.00237
Iteration: 17, Log-Lik: -3628.223, Max-Change: 0.00237
Iteration: 18, Log-Lik: -3628.222, Max-Change: 0.00234
Iteration: 19, Log-Lik: -3628.220, Max-Change: 0.00042
Iteration: 20, Log-Lik: -3628.220, Max-Change: 0.00347
Iteration: 21, Log-Lik: -3628.220, Max-Change: 0.00018
Iteration: 22, Log-Lik: -3628.220, Max-Change: 0.00016
Iteration: 23, Log-Lik: -3628.220, Max-Change: 0.00015
Iteration: 24, Log-Lik: -3628.220, Max-Change: 0.00014
Iteration: 25, Log-Lik: -3628.220, Max-Change: 0.00009
coefs_1dim <- coef(model_1dim, simplify = TRUE, IRTpars = TRUE)$items

# Get difficulty parameters
difficulty_1dim <- gen.difficulty(model_1dim)

# Calculate column means
col_means <- colMeans(d_mat_freq)

# Create a single tibble with all information
freq_tibble <- tibble(
  item_name = rownames(coefs_1dim),
  a = coefs_1dim[, "a"],                 # Discrimination parameter (slope)
  b = difficulty_1dim,     # Difficulty parameter
  mean = col_means
) |> left_join(combined_normed_summary |> select(object, category), by=c("item_name" = "object"))

make_discrim_diff_plot(freq_tibble, "Frequency IRT")
Warning: ggrepel: 10 unlabeled data points (too many overlaps). Consider
increasing max.overlaps

Plotting ‘watch’ which has high discrimination and medium difficulty

plot(model_1dim, type = "trace", which.items = c(49, 4))

anova(model_1dim) #, model_2dim
                AIC    SABIC       HQ      BIC   logLik
model_1dim 7794.439 7502.921 8010.334 8348.698 -3628.22

Total Count

using bootCRM to look at total count. Noting here that this analysis still involves first making all counts greater than a 100 equivalent to a 100

library(EstCRM)
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
estcrm_input <- as.data.frame(d_mat_count)
m <- ncol(estcrm_input)
# 4.605170 = ln(100)
model <- EstCRMitem(estcrm_input, rep(4.60518, m), rep(0, m))
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
Warning in sqrt(diag(solve(Hess))): NaNs produced
count_params <- as_tibble(model$param) |>
  mutate(item_name = rownames(coefs_1dim)) |> left_join(combined_normed_summary |> select(object, category), by=c("item_name" = "object"))
make_discrim_diff_plot(count_params, "Total count IRT")

Ball and book are still learning towards the least difficult portion which makes sense but other than that I really need to re-think this, making sure that I’m not counting interaction counts as 0 if no encounter.

Also looking at factor analysis

library(psych)

Attaching package: 'psych'
The following object is masked from 'package:Hmisc':

    describe
The following objects are masked from 'package:ggplot2':

    %+%, alpha
# One factor: similar to unidimensional IRT
fa_result <- fa(d_mat_count, nfactors = 1, rotate = "none", fm = "ml")

# View loadings (like discrimination in IRT)
loadings <- fa_result$loadings
names(loadings) <- colnames(d_mat_count)
# 'difficulty'
difficulty <- colMeans(d_mat_count)
# Factor scores (person ability estimates)
theta_hat <- fa_result$scores

Formats

formats_tibble <- run_grm(d_mat_count, combined_normed_summary)
"bear" re-mapped to ensure all categories have a distance of 1
"cat" re-mapped to ensure all categories have a distance of 1
"computer" re-mapped to ensure all categories have a distance of 1
"park" re-mapped to ensure all categories have a distance of 1

Iteration: 1, Log-Lik: -2316.220, Max-Change: 4.03548
Iteration: 2, Log-Lik: -2258.378, Max-Change: 1.36117
Iteration: 3, Log-Lik: -2254.151, Max-Change: 0.64772
Iteration: 4, Log-Lik: -2252.403, Max-Change: 0.53008
Iteration: 5, Log-Lik: -2251.185, Max-Change: 0.32707
Iteration: 6, Log-Lik: -2250.416, Max-Change: 0.59116
Iteration: 7, Log-Lik: -2249.284, Max-Change: 0.10348
Iteration: 8, Log-Lik: -2248.965, Max-Change: 0.15966
Iteration: 9, Log-Lik: -2248.750, Max-Change: 0.04662
Iteration: 10, Log-Lik: -2248.633, Max-Change: 0.04428
Iteration: 11, Log-Lik: -2248.494, Max-Change: 0.04013
Iteration: 12, Log-Lik: -2248.385, Max-Change: 0.03680
Iteration: 13, Log-Lik: -2248.016, Max-Change: 0.01757
Iteration: 14, Log-Lik: -2247.995, Max-Change: 0.01444
Iteration: 15, Log-Lik: -2247.980, Max-Change: 0.01551
Iteration: 16, Log-Lik: -2247.946, Max-Change: 0.01097
Iteration: 17, Log-Lik: -2247.936, Max-Change: 0.00889
Iteration: 18, Log-Lik: -2247.928, Max-Change: 0.01043
Iteration: 19, Log-Lik: -2247.909, Max-Change: 0.01037
Iteration: 20, Log-Lik: -2247.903, Max-Change: 0.00664
Iteration: 21, Log-Lik: -2247.898, Max-Change: 0.00585
Iteration: 22, Log-Lik: -2247.889, Max-Change: 0.00603
Iteration: 23, Log-Lik: -2247.885, Max-Change: 0.00496
Iteration: 24, Log-Lik: -2247.882, Max-Change: 0.00352
Iteration: 25, Log-Lik: -2247.875, Max-Change: 0.00552
Iteration: 26, Log-Lik: -2247.872, Max-Change: 0.00379
Iteration: 27, Log-Lik: -2247.870, Max-Change: 0.00263
Iteration: 28, Log-Lik: -2247.868, Max-Change: 0.00371
Iteration: 29, Log-Lik: -2247.866, Max-Change: 0.00608
Iteration: 30, Log-Lik: -2247.864, Max-Change: 0.00295
Iteration: 31, Log-Lik: -2247.863, Max-Change: 0.00379
Iteration: 32, Log-Lik: -2247.862, Max-Change: 0.00288
Iteration: 33, Log-Lik: -2247.860, Max-Change: 0.00212
Iteration: 34, Log-Lik: -2247.858, Max-Change: 0.00348
Iteration: 35, Log-Lik: -2247.857, Max-Change: 0.00409
Iteration: 36, Log-Lik: -2247.856, Max-Change: 0.00234
Iteration: 37, Log-Lik: -2247.855, Max-Change: 0.00283
Iteration: 38, Log-Lik: -2247.854, Max-Change: 0.00154
Iteration: 39, Log-Lik: -2247.854, Max-Change: 0.00260
Iteration: 40, Log-Lik: -2247.852, Max-Change: 0.00523
Iteration: 41, Log-Lik: -2247.851, Max-Change: 0.00269
Iteration: 42, Log-Lik: -2247.851, Max-Change: 0.00215
Iteration: 43, Log-Lik: -2247.850, Max-Change: 0.00303
Iteration: 44, Log-Lik: -2247.849, Max-Change: 0.00123
Iteration: 45, Log-Lik: -2247.848, Max-Change: 0.00227
Iteration: 46, Log-Lik: -2247.848, Max-Change: 0.00126
Iteration: 47, Log-Lik: -2247.847, Max-Change: 0.00208
Iteration: 48, Log-Lik: -2247.847, Max-Change: 0.00120
Iteration: 49, Log-Lik: -2247.846, Max-Change: 0.00333
Iteration: 50, Log-Lik: -2247.846, Max-Change: 0.00152
Iteration: 51, Log-Lik: -2247.845, Max-Change: 0.00113
Iteration: 52, Log-Lik: -2247.845, Max-Change: 0.00172
Iteration: 53, Log-Lik: -2247.845, Max-Change: 0.00093
Iteration: 54, Log-Lik: -2247.845, Max-Change: 0.00182
Iteration: 55, Log-Lik: -2247.844, Max-Change: 0.00128
Iteration: 56, Log-Lik: -2247.844, Max-Change: 0.00105
Iteration: 57, Log-Lik: -2247.844, Max-Change: 0.00163
Iteration: 58, Log-Lik: -2247.843, Max-Change: 0.00158
Iteration: 59, Log-Lik: -2247.843, Max-Change: 0.00084
Iteration: 60, Log-Lik: -2247.843, Max-Change: 0.00367
Iteration: 61, Log-Lik: -2247.843, Max-Change: 0.00115
Iteration: 62, Log-Lik: -2247.842, Max-Change: 0.00070
Iteration: 63, Log-Lik: -2247.842, Max-Change: 0.00075
Iteration: 64, Log-Lik: -2247.842, Max-Change: 0.00209
Iteration: 65, Log-Lik: -2247.842, Max-Change: 0.00055
Iteration: 66, Log-Lik: -2247.842, Max-Change: 0.00055
Iteration: 67, Log-Lik: -2247.842, Max-Change: 0.00113
Iteration: 68, Log-Lik: -2247.842, Max-Change: 0.00060
Iteration: 69, Log-Lik: -2247.842, Max-Change: 0.00043
Iteration: 70, Log-Lik: -2247.842, Max-Change: 0.00110
Iteration: 71, Log-Lik: -2247.841, Max-Change: 0.00101
Iteration: 72, Log-Lik: -2247.841, Max-Change: 0.00066
Iteration: 73, Log-Lik: -2247.841, Max-Change: 0.00100
Iteration: 74, Log-Lik: -2247.841, Max-Change: 0.00089
Iteration: 75, Log-Lik: -2247.841, Max-Change: 0.00040
Iteration: 76, Log-Lik: -2247.841, Max-Change: 0.00192
Iteration: 77, Log-Lik: -2247.841, Max-Change: 0.00032
Iteration: 78, Log-Lik: -2247.841, Max-Change: 0.00029
Iteration: 79, Log-Lik: -2247.841, Max-Change: 0.00019
Iteration: 80, Log-Lik: -2247.841, Max-Change: 0.00097
Iteration: 81, Log-Lik: -2247.841, Max-Change: 0.00117
Iteration: 82, Log-Lik: -2247.841, Max-Change: 0.00032
Iteration: 83, Log-Lik: -2247.841, Max-Change: 0.00029
Iteration: 84, Log-Lik: -2247.841, Max-Change: 0.00078
Iteration: 85, Log-Lik: -2247.841, Max-Change: 0.00165
Iteration: 86, Log-Lik: -2247.841, Max-Change: 0.00111
Iteration: 87, Log-Lik: -2247.841, Max-Change: 0.00084
Iteration: 88, Log-Lik: -2247.841, Max-Change: 0.00076
Iteration: 89, Log-Lik: -2247.841, Max-Change: 0.00087
Iteration: 90, Log-Lik: -2247.841, Max-Change: 0.00067
Iteration: 91, Log-Lik: -2247.841, Max-Change: 0.00087
Iteration: 92, Log-Lik: -2247.841, Max-Change: 0.00040
Iteration: 93, Log-Lik: -2247.841, Max-Change: 0.00023
Iteration: 94, Log-Lik: -2247.841, Max-Change: 0.00082
Iteration: 95, Log-Lik: -2247.841, Max-Change: 0.00101
Iteration: 96, Log-Lik: -2247.841, Max-Change: 0.00076
Iteration: 97, Log-Lik: -2247.841, Max-Change: 0.00069
Iteration: 98, Log-Lik: -2247.841, Max-Change: 0.00082
Iteration: 99, Log-Lik: -2247.840, Max-Change: 0.00063
Iteration: 100, Log-Lik: -2247.840, Max-Change: 0.00056
Iteration: 101, Log-Lik: -2247.840, Max-Change: 0.00045
Iteration: 102, Log-Lik: -2247.840, Max-Change: 0.00036
Iteration: 103, Log-Lik: -2247.840, Max-Change: 0.00054
Iteration: 104, Log-Lik: -2247.840, Max-Change: 0.00046
Iteration: 105, Log-Lik: -2247.840, Max-Change: 0.00029
Iteration: 106, Log-Lik: -2247.840, Max-Change: 0.00053
Iteration: 107, Log-Lik: -2247.840, Max-Change: 0.00049
Iteration: 108, Log-Lik: -2247.840, Max-Change: 0.00039
Iteration: 109, Log-Lik: -2247.840, Max-Change: 0.00053
Iteration: 110, Log-Lik: -2247.840, Max-Change: 0.00025
Iteration: 111, Log-Lik: -2247.840, Max-Change: 0.00069
Iteration: 112, Log-Lik: -2247.840, Max-Change: 0.00141
Iteration: 113, Log-Lik: -2247.840, Max-Change: 0.00096
Iteration: 114, Log-Lik: -2247.840, Max-Change: 0.00072
Iteration: 115, Log-Lik: -2247.840, Max-Change: 0.00075
Iteration: 116, Log-Lik: -2247.840, Max-Change: 0.00096
Iteration: 117, Log-Lik: -2247.840, Max-Change: 0.00071
Iteration: 118, Log-Lik: -2247.840, Max-Change: 0.00076
Iteration: 119, Log-Lik: -2247.840, Max-Change: 0.00098
Iteration: 120, Log-Lik: -2247.840, Max-Change: 0.00073
Iteration: 121, Log-Lik: -2247.840, Max-Change: 0.00080
Iteration: 122, Log-Lik: -2247.840, Max-Change: 0.00104
Iteration: 123, Log-Lik: -2247.840, Max-Change: 0.00077
Iteration: 124, Log-Lik: -2247.840, Max-Change: 0.00089
Iteration: 125, Log-Lik: -2247.840, Max-Change: 0.00119
Iteration: 126, Log-Lik: -2247.840, Max-Change: 0.00087
Iteration: 127, Log-Lik: -2247.840, Max-Change: 0.00022
Iteration: 128, Log-Lik: -2247.840, Max-Change: 0.00062
Iteration: 129, Log-Lik: -2247.840, Max-Change: 0.00108
Iteration: 130, Log-Lik: -2247.840, Max-Change: 0.00091
Iteration: 131, Log-Lik: -2247.840, Max-Change: 0.00123
Iteration: 132, Log-Lik: -2247.840, Max-Change: 0.00090
Iteration: 133, Log-Lik: -2247.840, Max-Change: 0.00023
Iteration: 134, Log-Lik: -2247.840, Max-Change: 0.00068
Iteration: 135, Log-Lik: -2247.840, Max-Change: 0.00116
Iteration: 136, Log-Lik: -2247.840, Max-Change: 0.00080
Iteration: 137, Log-Lik: -2247.840, Max-Change: 0.00107
Iteration: 138, Log-Lik: -2247.840, Max-Change: 0.00079
Iteration: 139, Log-Lik: -2247.840, Max-Change: 0.00020
Iteration: 140, Log-Lik: -2247.840, Max-Change: 0.00056
Iteration: 141, Log-Lik: -2247.840, Max-Change: 0.00098
Iteration: 142, Log-Lik: -2247.840, Max-Change: 0.00082
Iteration: 143, Log-Lik: -2247.840, Max-Change: 0.00111
Iteration: 144, Log-Lik: -2247.840, Max-Change: 0.00081
Iteration: 145, Log-Lik: -2247.840, Max-Change: 0.00021
Iteration: 146, Log-Lik: -2247.840, Max-Change: 0.00061
Iteration: 147, Log-Lik: -2247.840, Max-Change: 0.00105
Iteration: 148, Log-Lik: -2247.840, Max-Change: 0.00073
Iteration: 149, Log-Lik: -2247.840, Max-Change: 0.00098
Iteration: 150, Log-Lik: -2247.840, Max-Change: 0.00072
Iteration: 151, Log-Lik: -2247.840, Max-Change: 0.00018
Iteration: 152, Log-Lik: -2247.840, Max-Change: 0.00052
Iteration: 153, Log-Lik: -2247.840, Max-Change: 0.00089
Iteration: 154, Log-Lik: -2247.840, Max-Change: 0.00074
Iteration: 155, Log-Lik: -2247.840, Max-Change: 0.00101
Iteration: 156, Log-Lik: -2247.840, Max-Change: 0.00074
Iteration: 157, Log-Lik: -2247.840, Max-Change: 0.00019
Iteration: 158, Log-Lik: -2247.840, Max-Change: 0.00056
Iteration: 159, Log-Lik: -2247.840, Max-Change: 0.00095
Iteration: 160, Log-Lik: -2247.840, Max-Change: 0.00066
Iteration: 161, Log-Lik: -2247.840, Max-Change: 0.00090
Iteration: 162, Log-Lik: -2247.840, Max-Change: 0.00066
Iteration: 163, Log-Lik: -2247.840, Max-Change: 0.00016
Iteration: 164, Log-Lik: -2247.840, Max-Change: 0.00050
Iteration: 165, Log-Lik: -2247.840, Max-Change: 0.00081
Iteration: 166, Log-Lik: -2247.840, Max-Change: 0.00068
Iteration: 167, Log-Lik: -2247.840, Max-Change: 0.00093
Iteration: 168, Log-Lik: -2247.840, Max-Change: 0.00068
Iteration: 169, Log-Lik: -2247.840, Max-Change: 0.00017
Iteration: 170, Log-Lik: -2247.840, Max-Change: 0.00051
Iteration: 171, Log-Lik: -2247.840, Max-Change: 0.00087
Iteration: 172, Log-Lik: -2247.840, Max-Change: 0.00061
Iteration: 173, Log-Lik: -2247.840, Max-Change: 0.00082
Iteration: 174, Log-Lik: -2247.840, Max-Change: 0.00060
Iteration: 175, Log-Lik: -2247.840, Max-Change: 0.00015
Iteration: 176, Log-Lik: -2247.840, Max-Change: 0.00049
Iteration: 177, Log-Lik: -2247.840, Max-Change: 0.00075
Iteration: 178, Log-Lik: -2247.840, Max-Change: 0.00062
Iteration: 179, Log-Lik: -2247.840, Max-Change: 0.00085
Iteration: 180, Log-Lik: -2247.840, Max-Change: 0.00062
Iteration: 181, Log-Lik: -2247.840, Max-Change: 0.00016
Iteration: 182, Log-Lik: -2247.840, Max-Change: 0.00048
Iteration: 183, Log-Lik: -2247.840, Max-Change: 0.00079
Iteration: 184, Log-Lik: -2247.840, Max-Change: 0.00056
Iteration: 185, Log-Lik: -2247.840, Max-Change: 0.00076
Iteration: 186, Log-Lik: -2247.840, Max-Change: 0.00056
Iteration: 187, Log-Lik: -2247.840, Max-Change: 0.00014
Iteration: 188, Log-Lik: -2247.840, Max-Change: 0.00048
Iteration: 189, Log-Lik: -2247.840, Max-Change: 0.00069
Iteration: 190, Log-Lik: -2247.840, Max-Change: 0.00057
Iteration: 191, Log-Lik: -2247.840, Max-Change: 0.00078
Iteration: 192, Log-Lik: -2247.840, Max-Change: 0.00057
Iteration: 193, Log-Lik: -2247.840, Max-Change: 0.00014
Iteration: 194, Log-Lik: -2247.840, Max-Change: 0.00047
Iteration: 195, Log-Lik: -2247.840, Max-Change: 0.00073
Iteration: 196, Log-Lik: -2247.840, Max-Change: 0.00052
Iteration: 197, Log-Lik: -2247.840, Max-Change: 0.00071
Iteration: 198, Log-Lik: -2247.840, Max-Change: 0.00052
Iteration: 199, Log-Lik: -2247.840, Max-Change: 0.00013
Iteration: 200, Log-Lik: -2247.840, Max-Change: 0.00047
Iteration: 201, Log-Lik: -2247.840, Max-Change: 0.00064
Iteration: 202, Log-Lik: -2247.840, Max-Change: 0.00053
Iteration: 203, Log-Lik: -2247.840, Max-Change: 0.00073
Iteration: 204, Log-Lik: -2247.840, Max-Change: 0.00053
Iteration: 205, Log-Lik: -2247.840, Max-Change: 0.00013
Iteration: 206, Log-Lik: -2247.840, Max-Change: 0.00046
Iteration: 207, Log-Lik: -2247.840, Max-Change: 0.00067
Iteration: 208, Log-Lik: -2247.840, Max-Change: 0.00048
Iteration: 209, Log-Lik: -2247.840, Max-Change: 0.00066
Iteration: 210, Log-Lik: -2247.840, Max-Change: 0.00048
Iteration: 211, Log-Lik: -2247.840, Max-Change: 0.00012
Iteration: 212, Log-Lik: -2247.839, Max-Change: 0.00046
Iteration: 213, Log-Lik: -2247.839, Max-Change: 0.00060
Iteration: 214, Log-Lik: -2247.839, Max-Change: 0.00049
Iteration: 215, Log-Lik: -2247.839, Max-Change: 0.00067
Iteration: 216, Log-Lik: -2247.839, Max-Change: 0.00049
Iteration: 217, Log-Lik: -2247.839, Max-Change: 0.00012
Iteration: 218, Log-Lik: -2247.839, Max-Change: 0.00045
Iteration: 219, Log-Lik: -2247.839, Max-Change: 0.00063
Iteration: 220, Log-Lik: -2247.839, Max-Change: 0.00045
Iteration: 221, Log-Lik: -2247.839, Max-Change: 0.00062
Iteration: 222, Log-Lik: -2247.839, Max-Change: 0.00045
Iteration: 223, Log-Lik: -2247.839, Max-Change: 0.00011
Iteration: 224, Log-Lik: -2247.839, Max-Change: 0.00045
Iteration: 225, Log-Lik: -2247.839, Max-Change: 0.00056
Iteration: 226, Log-Lik: -2247.839, Max-Change: 0.00045
Iteration: 227, Log-Lik: -2247.839, Max-Change: 0.00063
Iteration: 228, Log-Lik: -2247.839, Max-Change: 0.00046
Iteration: 229, Log-Lik: -2247.839, Max-Change: 0.00011
Iteration: 230, Log-Lik: -2247.839, Max-Change: 0.00044
Iteration: 231, Log-Lik: -2247.839, Max-Change: 0.00058
Iteration: 232, Log-Lik: -2247.839, Max-Change: 0.00044
Iteration: 233, Log-Lik: -2247.839, Max-Change: 0.00058
Iteration: 234, Log-Lik: -2247.839, Max-Change: 0.00042
Iteration: 235, Log-Lik: -2247.839, Max-Change: 0.00010
Iteration: 236, Log-Lik: -2247.839, Max-Change: 0.00044
Iteration: 237, Log-Lik: -2247.839, Max-Change: 0.00052
Iteration: 238, Log-Lik: -2247.839, Max-Change: 0.00043
Iteration: 239, Log-Lik: -2247.839, Max-Change: 0.00059
Iteration: 240, Log-Lik: -2247.839, Max-Change: 0.00043
Iteration: 241, Log-Lik: -2247.839, Max-Change: 0.00011
Iteration: 242, Log-Lik: -2247.839, Max-Change: 0.00043
Iteration: 243, Log-Lik: -2247.839, Max-Change: 0.00054
Iteration: 244, Log-Lik: -2247.839, Max-Change: 0.00043
Iteration: 245, Log-Lik: -2247.839, Max-Change: 0.00054
Iteration: 246, Log-Lik: -2247.839, Max-Change: 0.00039
Iteration: 247, Log-Lik: -2247.839, Max-Change: 0.00010
make_discrim_diff_plot(formats_tibble, "Formats IRT")
Warning: ggrepel: 10 unlabeled data points (too many overlaps). Consider
increasing max.overlaps