Closed begavett closed 1 month ago
library(mirt) #> Loading required package: stats4 #> Loading required package: lattice set.seed(491) a1 <- a2 <- a3 <- matrix(abs(rnorm(15,1,.3)), ncol=1) set.seed(8201) d1 <- d2 <- d3 <- matrix(rnorm(15,0,.7),ncol=1) a2[1:2, ] <- a1[1:2, ]/3 d3[c(1,3), ] <- d2[c(1,3), ]/4 head(data.frame(a.group1 = a1, a.group2 = a2, a.group3 = a3, d.group1 = d1, d.group2 = d2, d.group3 = d3)) #> a.group1 a.group2 a.group3 d.group1 d.group2 d.group3 #> 1 1.170728 0.3902426 1.170728 -1.26223091 -1.26223091 -0.31555773 #> 2 1.058121 0.3527071 1.058121 -0.51946546 -0.51946546 -0.51946546 #> 3 1.191190 1.1911902 1.191190 -0.05570914 -0.05570914 -0.01392728 #> 4 1.078027 1.0780269 1.078027 -0.47294618 -0.47294618 -0.47294618 #> 5 1.238547 1.2385473 1.238547 0.48731368 0.48731368 0.48731368 #> 6 1.020715 1.0207154 1.020715 -0.72882216 -0.72882216 -0.72882216 itemtype <- rep('2PL', nrow(a1)) N <- 1000 dataset1 <- simdata(a1, d1, N, itemtype) dataset2 <- simdata(a2, d2, N, itemtype, mu = .1, sigma = matrix(1.5)) dataset3 <- simdata(a3, d3, N, itemtype, mu = .2) dat <- rbind(dataset1, dataset2, dataset3) group <- gl(3, N, labels = c('g1', 'g2', 'g3')) # equate the groups by assuming the last 5 items have no DIF itemnames <- colnames(dat) model <- multipleGroup(dat, group=group, SE=TRUE, invariance = c(itemnames[11:ncol(dat)], 'free_means', 'free_var')) #> Iteration: 1, Log-Lik: -27705.113, Max-Change: 0.53469Iteration: 2, Log-Lik: -27377.493, Max-Change: 0.17146Iteration: 3, Log-Lik: -27343.319, Max-Change: 0.07388Iteration: 4, Log-Lik: -27337.331, Max-Change: 0.03419Iteration: 5, Log-Lik: -27335.378, Max-Change: 0.01779Iteration: 6, Log-Lik: -27334.351, Max-Change: 0.01636Iteration: 7, Log-Lik: -27333.243, Max-Change: 0.02379Iteration: 8, Log-Lik: -27332.731, Max-Change: 0.01373Iteration: 9, Log-Lik: -27332.421, Max-Change: 0.01086Iteration: 10, Log-Lik: -27332.030, Max-Change: 0.02702Iteration: 11, Log-Lik: -27331.363, Max-Change: 0.00869Iteration: 12, Log-Lik: -27331.258, Max-Change: 0.00549Iteration: 13, Log-Lik: -27331.083, Max-Change: 0.00858Iteration: 14, Log-Lik: -27330.980, Max-Change: 0.00406Iteration: 15, Log-Lik: -27330.930, Max-Change: 0.00325Iteration: 16, Log-Lik: -27330.839, Max-Change: 0.00980Iteration: 17, Log-Lik: -27330.726, Max-Change: 0.00270Iteration: 18, Log-Lik: -27330.705, Max-Change: 0.00213Iteration: 19, Log-Lik: -27330.666, Max-Change: 0.00616Iteration: 20, Log-Lik: -27330.622, Max-Change: 0.00148Iteration: 21, Log-Lik: -27330.613, Max-Change: 0.00140Iteration: 22, Log-Lik: -27330.596, Max-Change: 0.00416Iteration: 23, Log-Lik: -27330.575, Max-Change: 0.00094Iteration: 24, Log-Lik: -27330.571, Max-Change: 0.00093Iteration: 25, Log-Lik: -27330.564, Max-Change: 0.00273Iteration: 26, Log-Lik: -27330.555, Max-Change: 0.00062Iteration: 27, Log-Lik: -27330.553, Max-Change: 0.00061Iteration: 28, Log-Lik: -27330.550, Max-Change: 0.00179Iteration: 29, Log-Lik: -27330.546, Max-Change: 0.00044Iteration: 30, Log-Lik: -27330.545, Max-Change: 0.00040Iteration: 31, Log-Lik: -27330.544, Max-Change: 0.00118Iteration: 32, Log-Lik: -27330.542, Max-Change: 0.00031Iteration: 33, Log-Lik: -27330.542, Max-Change: 0.00027Iteration: 34, Log-Lik: -27330.541, Max-Change: 0.00078Iteration: 35, Log-Lik: -27330.541, Max-Change: 0.00021Iteration: 36, Log-Lik: -27330.540, Max-Change: 0.00017Iteration: 37, Log-Lik: -27330.540, Max-Change: 0.00050Iteration: 38, Log-Lik: -27330.540, Max-Change: 0.00015Iteration: 39, Log-Lik: -27330.540, Max-Change: 0.00011Iteration: 40, Log-Lik: -27330.540, Max-Change: 0.00032Iteration: 41, Log-Lik: -27330.539, Max-Change: 0.00010Iteration: 42, Log-Lik: -27330.539, Max-Change: 0.00008 #> #> Calculating information matrix... coef(model, simplify=TRUE) #> $g1 #> $items #> a1 d g u #> Item_1 1.218 -1.369 0 1 #> Item_2 1.054 -0.598 0 1 #> Item_3 1.198 -0.181 0 1 #> Item_4 1.061 -0.568 0 1 #> Item_5 1.160 0.347 0 1 #> Item_6 0.919 -0.789 0 1 #> Item_7 1.171 0.913 0 1 #> Item_8 0.995 -0.094 0 1 #> Item_9 0.911 -0.589 0 1 #> Item_10 0.559 0.260 0 1 #> Item_11 0.661 0.218 0 1 #> Item_12 1.239 0.754 0 1 #> Item_13 1.065 1.019 0 1 #> Item_14 1.587 -1.068 0 1 #> Item_15 1.148 -0.139 0 1 #> #> $means #> F1 #> 0 #> #> $cov #> F1 #> F1 1 #> #> #> $g2 #> $items #> a1 d g u #> Item_1 0.329 -1.188 0 1 #> Item_2 0.305 -0.524 0 1 #> Item_3 1.352 -0.200 0 1 #> Item_4 0.985 -0.558 0 1 #> Item_5 1.372 0.406 0 1 #> Item_6 1.079 -0.779 0 1 #> Item_7 0.805 0.774 0 1 #> Item_8 0.959 -0.134 0 1 #> Item_9 0.885 -0.903 0 1 #> Item_10 0.378 0.260 0 1 #> Item_11 0.661 0.218 0 1 #> Item_12 1.239 0.754 0 1 #> Item_13 1.065 1.019 0 1 #> Item_14 1.587 -1.068 0 1 #> Item_15 1.148 -0.139 0 1 #> #> $means #> F1 #> 0.193 #> #> $cov #> F1 #> F1 1.389 #> #> #> $g3 #> $items #> a1 d g u #> Item_1 1.324 -0.442 0 1 #> Item_2 1.081 -0.660 0 1 #> Item_3 1.173 -0.179 0 1 #> Item_4 1.153 -0.515 0 1 #> Item_5 1.227 0.455 0 1 #> Item_6 1.022 -0.741 0 1 #> Item_7 0.938 0.715 0 1 #> Item_8 0.875 -0.108 0 1 #> Item_9 0.829 -0.744 0 1 #> Item_10 0.438 0.340 0 1 #> Item_11 0.661 0.218 0 1 #> Item_12 1.239 0.754 0 1 #> Item_13 1.065 1.019 0 1 #> Item_14 1.587 -1.068 0 1 #> Item_15 1.148 -0.139 0 1 #> #> $means #> F1 #> 0.312 #> #> $cov #> F1 #> F1 1.011 # omnibus tests dif <- DIF(model, which.par = c('a1', 'd'), items2test=1:9) # add return_models = TRUE dif <- DIF(model, which.par = c('a1', 'd'), items2test=1:9, return_models = TRUE) #> Error in converged[i] <- attr(res[[i]], "converged"): replacement has length zero
Created on 2024-05-13 with reprex v2.0.2
Thanks, patched.
Created on 2024-05-13 with reprex v2.0.2