library(readxl)
library(CTT)
library(mirt)
## Warning: package 'mirt' was built under R version 4.3.3
## Loading required package: stats4
## Loading required package: lattice

#N1

N1 = read_xlsx("C:/Users/ENGGAR/OneDrive - uny.ac.id/Documents/UNY/Semester 4/Statpend/UTS_N75.xlsx")
head(N1)
## # A tibble: 6 × 37
##      b1    b2    b3    b4    b5    b6    b7    b8    b9   b10   b11   b12   b13
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     1     1     1     1     1     1     1     1     1     1     1     1     1
## 2     1     1     1     1     0     1     1     1     1     1     1     1     0
## 3     1     1     1     1     1     1     1     1     1     1     1     1     1
## 4     1     1     1     1     1     1     1     1     1     1     1     1     1
## 5     1     1     1     1     1     1     1     1     1     0     1     1     0
## 6     1     1     1     1     1     1     1     1     1     1     1     1     1
## # ℹ 24 more variables: b14 <dbl>, b15 <dbl>, b16 <dbl>, b17 <dbl>, b18 <dbl>,
## #   b19 <dbl>, b20 <dbl>, b21 <dbl>, b22 <dbl>, b23 <dbl>, b24 <dbl>,
## #   b25 <dbl>, b26 <dbl>, b27 <dbl>, b28 <dbl>, b29 <dbl>, b30 <dbl>,
## #   b31 <dbl>, b32 <dbl>, b33 <dbl>, b34 <dbl>, b35 <dbl>, b36 <dbl>, b37 <dbl>
model <- 'F1 = 1-37 CONSTRAIN = (1-37, a1)'
ModelRasch <- mirt(data = N1, model = 1, itemtype = 'Rasch', SE = TRUE, verbose = FALSE)
Model1PL <- mirt(data = N1, model = 1, itemtype = '1PL', SE = TRUE, verbose = FALSE)
Model2PL <- mirt(data = N1, model = 1, itemtype = '2PL', SE = TRUE, verbose = FALSE)
Model3PL <- mirt(data = N1, model = 1, itemtype = '3PL', SE = TRUE, verbose = FALSE)
## Warning: EM cycles terminated after 500 iterations.
Model4PL <- mirt(data = N1, model = 1, itemtype = '4PL', SE = TRUE, verbose = FALSE)
## Warning: EM cycles terminated after 500 iterations.

##Model Rasch_N1

fitRasch <- itemfit(ModelRasch, fit_stats = "S_X2")
fitRasch <- data.frame(Butir = fitRasch$item, Chi = round(fitRasch$S_X2, 2),
pvalue = round(fitRasch$p.S_X2, 2),
Keputusan = ifelse(round(fitRasch$p.S_X2, 2)>= 0.05, "Cocok","Tidak Cocok"))
head(fitRasch)
##   Butir   Chi pvalue Keputusan
## 1    b1  6.34   0.50     Cocok
## 2    b2  6.98   0.43     Cocok
## 3    b3  8.34   0.30     Cocok
## 4    b4 12.36   0.09     Cocok
## 5    b5 10.65   0.22     Cocok
## 6    b6 10.27   0.17     Cocok
jumlah_fitRasch <- table(fitRasch$Keputusan)
jumlah_fitRasch
## 
##       Cocok Tidak Cocok 
##          29           8
itemfit(ModelRasch, 'S_X2', empirical.plot = 9)

##Model 1PL_N1

fit1PL <- itemfit(Model1PL, fit_stats = "S_X2")
fit1PL <- data.frame(Butir = fit1PL$item, Chi = round(fit1PL$S_X2, 2), pvalue = round(fit1PL$p.S_X2, 2), Keputusan = ifelse(round(fit1PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit1PL)
##   Butir   Chi pvalue Keputusan
## 1    b1  6.26   0.62     Cocok
## 2    b2  6.86   0.55     Cocok
## 3    b3  8.34   0.40     Cocok
## 4    b4 12.22   0.14     Cocok
## 5    b5 10.77   0.29     Cocok
## 6    b6 10.39   0.24     Cocok
jumlah_fit1PL <- table(fit1PL$Keputusan)
jumlah_fit1PL
## 
##       Cocok Tidak Cocok 
##          29           8
itemfit(Model1PL, 'S_X2', empirical.plot = 9)

##Model 2PL_N1

fit2PL <- itemfit(Model2PL, fit_stats = "S_X2")
fit2PL <- data.frame(Butir = fit2PL$item, Chi = round(fit2PL$S_X2, 2), pvalue = round(fit2PL$p.S_X2, 2), Keputusan = ifelse(round(fit2PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit2PL)
##   Butir   Chi pvalue Keputusan
## 1    b1  3.40   0.49     Cocok
## 2    b2  6.95   0.43     Cocok
## 3    b3  0.80   0.94     Cocok
## 4    b4 10.43   0.11     Cocok
## 5    b5  6.85   0.23     Cocok
## 6    b6  6.72   0.15     Cocok
jumlah_fit2PL <- table(fit2PL$Keputusan)
jumlah_fit2PL
## 
##       Cocok Tidak Cocok 
##          35           1
itemfit(Model2PL, 'S_X2', empirical.plot = 9)

##Model 3PL_N1

fit3PL <- itemfit(Model3PL, fit_stats = "S_X2")
fit3PL <- data.frame(Butir = fit3PL$item, Chi = round(fit3PL$S_X2, 2), pvalue = round(fit3PL$p.S_X2, 2), Keputusan = ifelse(round(fit3PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit3PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1  2.51   0.64       Cocok
## 2    b2  2.66   0.75       Cocok
## 3    b3  5.72   0.33       Cocok
## 4    b4 15.08   0.01 Tidak Cocok
## 5    b5  5.12   0.16       Cocok
## 6    b6  9.68   0.05       Cocok
jumlah_fit3PL <- table(fit3PL$Keputusan)
jumlah_fit3PL
## 
##       Cocok Tidak Cocok 
##          30           5
itemfit(Model3PL, 'S_X2', empirical.plot = 9)

##Model 4PL_N1

fit4PL <- itemfit(Model4PL, fit_stats = "S_X2")
fit4PL <- data.frame(Butir = fit4PL$item, Chi = round(fit4PL$S_X2, 2), pvalue = round(fit4PL$p.S_X2, 2), Keputusan = ifelse(round(fit4PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit4PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1  2.27   0.32       Cocok
## 2    b2  1.08   0.78       Cocok
## 3    b3  5.95   0.20       Cocok
## 4    b4 14.99   0.00 Tidak Cocok
## 5    b5  9.77   0.02 Tidak Cocok
## 6    b6 10.53   0.01 Tidak Cocok
jumlah_fit4PL <- table(fit4PL$Keputusan)
jumlah_fit4PL
## 
##       Cocok Tidak Cocok 
##          26           8
itemfit(Model4PL, 'S_X2', empirical.plot = 9)

##AIC dan BIC_N1

anova(ModelRasch, Model1PL, Model2PL, Model3PL, Model4PL)
##                 AIC    SABIC       HQ      BIC    logLik      X2 df     p
## ModelRasch 2570.555 2538.853 2605.718 2658.619 -1247.277                 
## Model1PL   2611.642 2580.774 2645.879 2697.389 -1268.821 -43.087 -1   NaN
## Model2PL   2474.802 2413.068 2543.278 2646.297 -1163.401 210.839 37     0
## Model3PL   2468.626 2376.025 2571.340 2725.867 -1123.313  80.176 37     0
## Model4PL   2519.579 2396.111 2656.531 2862.568 -1111.790  23.047 37 0.965

##NFI Maks_N1

theta <- 0
nfi_rasch <- testinfo(ModelRasch, Theta = theta)
nfi_1pl <- testinfo(Model1PL, Theta = theta)
nfi_2pl <- testinfo(Model2PL, Theta = theta)
nfi_3pl <- testinfo(Model3PL, Theta = theta)
nfi_4pl <- testinfo(Model4PL, Theta = theta)
nfi_maks_df <- data.frame(Model = c("Rasch", "1PL", "2PL", "3PL", "4PL"), NFI_Maks = c(nfi_rasch, nfi_1pl, nfi_2pl, nfi_3pl, nfi_4pl))
nfi_maks_df
##   Model   NFI_Maks
## 1 Rasch   6.010745
## 2   1PL   6.478125
## 3   2PL  15.143693
## 4   3PL  19.685604
## 5   4PL 230.260298

#N2

N2 = read_xlsx("C:/Users/ENGGAR/OneDrive - uny.ac.id/Documents/UNY/Semester 4/Statpend/UTS_N200.xlsx")
head(N2)
## # A tibble: 6 × 37
##      b1    b2    b3    b4    b5    b6    b7    b8    b9   b10   b11   b12   b13
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0     0     0     0     1     1     0     0     0     0
## 2     1     1     1     1     0     0     1     0     1     1     1     1     1
## 3     1     0     1     1     1     0     0     1     0     1     1     1     0
## 4     1     1     1     1     1     1     1     1     1     1     1     1     1
## 5     1     1     1     1     1     1     1     1     1     1     1     1     1
## 6     0     0     0     0     0     0     0     0     0     0     1     0     0
## # ℹ 24 more variables: b14 <dbl>, b15 <dbl>, b16 <dbl>, b17 <dbl>, b18 <dbl>,
## #   b19 <dbl>, b20 <dbl>, b21 <dbl>, b22 <dbl>, b23 <dbl>, b24 <dbl>,
## #   b25 <dbl>, b26 <dbl>, b27 <dbl>, b28 <dbl>, b29 <dbl>, b30 <dbl>,
## #   b31 <dbl>, b32 <dbl>, b33 <dbl>, b34 <dbl>, b35 <dbl>, b36 <dbl>, b37 <dbl>
model <- 'F1 = 1-37 CONSTRAIN = (1-37, a1)'
ModelRasch <- mirt(data = N2, model = 1, itemtype = 'Rasch', SE = TRUE, verbose = FALSE)
Model1PL <- mirt(data = N2, model = 1, itemtype = '1PL', SE = TRUE, verbose = FALSE)
Model2PL <- mirt(data = N2, model = 1, itemtype = '2PL', SE = TRUE, verbose = FALSE)
Model3PL <- mirt(data = N2, model = 1, itemtype = '3PL', SE = TRUE, verbose = FALSE)
## Warning: EM cycles terminated after 500 iterations.
Model4PL <- mirt(data = N2, model = 1, itemtype = '4PL', SE = TRUE, verbose = FALSE)
## Warning: EM cycles terminated after 500 iterations.

##Model Rasch_N2

fitRasch <- itemfit(ModelRasch, fit_stats = "S_X2")
fitRasch <- data.frame(Butir = fitRasch$item, Chi = round(fitRasch$S_X2, 2),
pvalue = round(fitRasch$p.S_X2, 2),
Keputusan = ifelse(round(fitRasch$p.S_X2, 2)>= 0.05, "Cocok","Tidak Cocok"))
head(fitRasch)
##   Butir   Chi pvalue   Keputusan
## 1    b1 16.61   0.34       Cocok
## 2    b2 21.78   0.19       Cocok
## 3    b3 26.07   0.04 Tidak Cocok
## 4    b4 17.27   0.37       Cocok
## 5    b5 21.25   0.22       Cocok
## 6    b6 26.16   0.07       Cocok
jumlah_fitRasch <- table(fitRasch$Keputusan)
jumlah_fitRasch
## 
##       Cocok Tidak Cocok 
##          27          10
itemfit(ModelRasch, 'S_X2', empirical.plot = 9)

##Model 1PL_N2

fit1PL <- itemfit(Model1PL, fit_stats = "S_X2")
fit1PL <- data.frame(Butir = fit1PL$item, Chi = round(fit1PL$S_X2, 2), pvalue = round(fit1PL$p.S_X2, 2), Keputusan = ifelse(round(fit1PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit1PL)
##   Butir   Chi pvalue Keputusan
## 1    b1 16.68   0.41     Cocok
## 2    b2 21.18   0.27     Cocok
## 3    b3 25.77   0.06     Cocok
## 4    b4 17.25   0.44     Cocok
## 5    b5 23.72   0.25     Cocok
## 6    b6 26.13   0.10     Cocok
jumlah_fit1PL <- table(fit1PL$Keputusan)
jumlah_fit1PL
## 
##       Cocok Tidak Cocok 
##          29           8
itemfit(Model1PL, 'S_X2', empirical.plot = 9)

##Model 2PL_N2

fit2PL <- itemfit(Model2PL, fit_stats = "S_X2")
fit2PL <- data.frame(Butir = fit2PL$item, Chi = round(fit2PL$S_X2, 2), pvalue = round(fit2PL$p.S_X2, 2), Keputusan = ifelse(round(fit2PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit2PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 13.56   0.41       Cocok
## 2    b2 14.02   0.78       Cocok
## 3    b3 22.49   0.02 Tidak Cocok
## 4    b4 12.75   0.47       Cocok
## 5    b5 17.73   0.34       Cocok
## 6    b6 23.51   0.17       Cocok
jumlah_fit2PL <- table(fit2PL$Keputusan)
jumlah_fit2PL
## 
##       Cocok Tidak Cocok 
##          34           3
itemfit(Model2PL, 'S_X2', empirical.plot = 9)

##Model 3PL_N2

fit3PL <- itemfit(Model3PL, fit_stats = "S_X2")
fit3PL <- data.frame(Butir = fit3PL$item, Chi = round(fit3PL$S_X2, 2), pvalue = round(fit3PL$p.S_X2, 2), Keputusan = ifelse(round(fit3PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit3PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 12.79   0.38       Cocok
## 2    b2 18.19   0.51       Cocok
## 3    b3 16.39   0.04 Tidak Cocok
## 4    b4 15.07   0.30       Cocok
## 5    b5 17.89   0.27       Cocok
## 6    b6 19.31   0.20       Cocok
jumlah_fit3PL <- table(fit3PL$Keputusan)
jumlah_fit3PL
## 
##       Cocok Tidak Cocok 
##          33           4
itemfit(Model3PL, 'S_X2', empirical.plot = 9)

##Model 4PL_N2

fit4PL <- itemfit(Model4PL, fit_stats = "S_X2")
fit4PL <- data.frame(Butir = fit4PL$item, Chi = round(fit4PL$S_X2, 2), pvalue = round(fit4PL$p.S_X2, 2), Keputusan = ifelse(round(fit4PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit4PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 11.85   0.22       Cocok
## 2    b2 17.47   0.49       Cocok
## 3    b3 16.10   0.02 Tidak Cocok
## 4    b4 15.73   0.20       Cocok
## 5    b5 16.79   0.21       Cocok
## 6    b6 18.42   0.14       Cocok
jumlah_fit4PL <- table(fit4PL$Keputusan)
jumlah_fit4PL
## 
##       Cocok Tidak Cocok 
##          31           6
itemfit(Model4PL, 'S_X2', empirical.plot = 9)

##AIC dan BIC_N2

anova(ModelRasch, Model1PL, Model2PL, Model3PL, Model4PL)
##                 AIC    SABIC       HQ      BIC    logLik      X2 df     p
## ModelRasch 7748.076 7753.024 7798.797 7873.412 -3836.038                 
## Model1PL   7800.165 7804.982 7849.551 7922.202 -3863.082 -54.089 -1   NaN
## Model2PL   7611.679 7621.315 7710.453 7855.754 -3731.839 262.486 37     0
## Model3PL   7536.254 7550.708 7684.415 7902.367 -3657.127 149.425 37     0
## Model4PL   7593.757 7613.028 7791.304 8081.908 -3648.878  16.498 37 0.999

##NFI Maks_N2

theta <- 0
nfi_rasch <- testinfo(ModelRasch, Theta = theta)
nfi_1pl <- testinfo(Model1PL, Theta = theta)
nfi_2pl <- testinfo(Model2PL, Theta = theta)
nfi_3pl <- testinfo(Model3PL, Theta = theta)
nfi_4pl <- testinfo(Model4PL, Theta = theta)
nfi_maks_df <- data.frame(Model = c("Rasch", "1PL", "2PL", "3PL", "4PL"), NFI_Maks = c(nfi_rasch, nfi_1pl, nfi_2pl, nfi_3pl, nfi_4pl))
nfi_maks_df
##   Model  NFI_Maks
## 1 Rasch  7.407140
## 2   1PL  7.584239
## 3   2PL 23.464835
## 4   3PL 47.882218
## 5   4PL 59.337281

#N3

N3 = read_xlsx("C:/Users/ENGGAR/OneDrive - uny.ac.id/Documents/UNY/Semester 4/Statpend/UTS_N500.xlsx")
head(N3)
## # A tibble: 6 × 37
##      b1    b2    b3    b4    b5    b6    b7    b8    b9   b10   b11   b12   b13
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     1     1     1     0     0     0     1     0     1     1     0     0     0
## 2     1     0     1     1     1     0     1     0     1     1     0     0     0
## 3     1     0     0     0     0     0     0     1     0     0     0     0     0
## 4     1     0     0     1     1     0     0     0     0     0     1     0     0
## 5     1     0     0     0     0     0     0     1     1     1     1     1     0
## 6     1     1     0     1     0     1     1     1     1     0     0     1     0
## # ℹ 24 more variables: b14 <dbl>, b15 <dbl>, b16 <dbl>, b17 <dbl>, b18 <dbl>,
## #   b19 <dbl>, b20 <dbl>, b21 <dbl>, b22 <dbl>, b23 <dbl>, b24 <dbl>,
## #   b25 <dbl>, b26 <dbl>, b27 <dbl>, b28 <dbl>, b29 <dbl>, b30 <dbl>,
## #   b31 <dbl>, b32 <dbl>, b33 <dbl>, b34 <dbl>, b35 <dbl>, b36 <dbl>, b37 <dbl>
model <- 'F1 = 1-37 CONSTRAIN = (1-37, a1)'
ModelRasch <- mirt(data = N3, model = 1, itemtype = 'Rasch', SE = TRUE, verbose = FALSE)
Model1PL <- mirt(data = N3, model = 1, itemtype = '1PL', SE = TRUE, verbose = FALSE)
Model2PL <- mirt(data = N3, model = 1, itemtype = '2PL', SE = TRUE, verbose = FALSE)
Model3PL <- mirt(data = N3, model = 1, itemtype = '3PL', SE = TRUE, verbose = FALSE)
Model4PL <- mirt(data = N3, model = 1, itemtype = '4PL', SE = TRUE, verbose = FALSE)
## Warning: EM cycles terminated after 500 iterations.

##Model Rasch_N3

fitRasch <- itemfit(ModelRasch, fit_stats = "S_X2")
fitRasch <- data.frame(Butir = fitRasch$item, Chi = round(fitRasch$S_X2, 2),
pvalue = round(fitRasch$p.S_X2, 2),
Keputusan = ifelse(round(fitRasch$p.S_X2, 2)>= 0.05, "Cocok","Tidak Cocok"))
head(fitRasch)
##   Butir   Chi pvalue   Keputusan
## 1    b1 30.15   0.22       Cocok
## 2    b2 77.92   0.00 Tidak Cocok
## 3    b3 38.73   0.02 Tidak Cocok
## 4    b4 21.20   0.68       Cocok
## 5    b5 25.62   0.43       Cocok
## 6    b6 42.97   0.02 Tidak Cocok
jumlah_fitRasch <- table(fitRasch$Keputusan)
jumlah_fitRasch
## 
##       Cocok Tidak Cocok 
##          22          15
itemfit(ModelRasch, 'S_X2', empirical.plot = 9)

##Model 1PL_N3

fit1PL <- itemfit(Model1PL, fit_stats = "S_X2")
fit1PL <- data.frame(Butir = fit1PL$item, Chi = round(fit1PL$S_X2, 2), pvalue = round(fit1PL$p.S_X2, 2), Keputusan = ifelse(round(fit1PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit1PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 30.04   0.27       Cocok
## 2    b2 76.66   0.00 Tidak Cocok
## 3    b3 38.79   0.03 Tidak Cocok
## 4    b4 21.32   0.73       Cocok
## 5    b5 25.75   0.48       Cocok
## 6    b6 43.08   0.03 Tidak Cocok
jumlah_fit1PL <- table(fit1PL$Keputusan)
jumlah_fit1PL
## 
##       Cocok Tidak Cocok 
##          24          13
itemfit(Model1PL, 'S_X2', empirical.plot = 9)

##Model 2PL_N3

fit2PL <- itemfit(Model2PL, fit_stats = "S_X2")
fit2PL <- data.frame(Butir = fit2PL$item, Chi = round(fit2PL$S_X2, 2), pvalue = round(fit2PL$p.S_X2, 2), Keputusan = ifelse(round(fit2PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit2PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 27.41   0.29       Cocok
## 2    b2 32.56   0.25       Cocok
## 3    b3 13.60   0.70       Cocok
## 4    b4 14.49   0.88       Cocok
## 5    b5 19.62   0.61       Cocok
## 6    b6 39.61   0.02 Tidak Cocok
jumlah_fit2PL <- table(fit2PL$Keputusan)
jumlah_fit2PL
## 
##       Cocok Tidak Cocok 
##          32           5
itemfit(Model2PL, 'S_X2', empirical.plot = 9)

##Model 3PL_N3

fit3PL <- itemfit(Model3PL, fit_stats = "S_X2")
fit3PL <- data.frame(Butir = fit3PL$item, Chi = round(fit3PL$S_X2, 2), pvalue = round(fit3PL$p.S_X2, 2), Keputusan = ifelse(round(fit3PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit3PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 26.23   0.24       Cocok
## 2    b2 24.15   0.57       Cocok
## 3    b3 12.50   0.77       Cocok
## 4    b4 16.66   0.83       Cocok
## 5    b5 20.80   0.53       Cocok
## 6    b6 37.61   0.02 Tidak Cocok
jumlah_fit3PL <- table(fit3PL$Keputusan)
jumlah_fit3PL
## 
##       Cocok Tidak Cocok 
##          33           4
itemfit(Model3PL, 'S_X2', empirical.plot = 9)

##Model 4PL_N3

fit4PL <- itemfit(Model4PL, fit_stats = "S_X2")
fit4PL <- data.frame(Butir = fit4PL$item, Chi = round(fit4PL$S_X2, 2), pvalue = round(fit4PL$p.S_X2, 2), Keputusan = ifelse(round(fit4PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit4PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 20.63   0.48       Cocok
## 2    b2 23.92   0.52       Cocok
## 3    b3 12.39   0.72       Cocok
## 4    b4 14.22   0.82       Cocok
## 5    b5 20.48   0.49       Cocok
## 6    b6 37.65   0.01 Tidak Cocok
jumlah_fit4PL <- table(fit4PL$Keputusan)
jumlah_fit4PL
## 
##       Cocok Tidak Cocok 
##          34           3
itemfit(Model4PL, 'S_X2', empirical.plot = 9)

##AIC dan BIC_N3

anova(ModelRasch, Model1PL, Model2PL, Model3PL, Model4PL)
##                 AIC    SABIC       HQ      BIC     logLik      X2 df     p
## ModelRasch 20450.47 20490.01 20513.32 20610.63 -10187.237                 
## Model1PL   20499.28 20537.78 20560.47 20655.22 -10212.642 -50.811 -1   NaN
## Model2PL   20133.49 20210.49 20255.87 20445.37  -9992.746 439.793 37     0
## Model3PL   19916.36 20031.86 20099.93 20384.18  -9847.181  291.13 37     0
## Model4PL   19956.82 20110.82 20201.58 20580.58  -9830.410  33.542 37 0.632

##NFI Maks_N3

theta <- 0
nfi_rasch <- testinfo(ModelRasch, Theta = theta)
nfi_1pl <- testinfo(Model1PL, Theta = theta)
nfi_2pl <- testinfo(Model2PL, Theta = theta)
nfi_3pl <- testinfo(Model3PL, Theta = theta)
nfi_4pl <- testinfo(Model4PL, Theta = theta)
nfi_maks_df <- data.frame(Model = c("Rasch", "1PL", "2PL", "3PL", "4PL"), NFI_Maks = c(nfi_rasch, nfi_1pl, nfi_2pl, nfi_3pl, nfi_4pl))
nfi_maks_df
##   Model  NFI_Maks
## 1 Rasch  7.806951
## 2   1PL  7.885664
## 3   2PL 17.285702
## 4   3PL 23.087843
## 5   4PL 32.847743

#N4

N4 = read_xlsx("C:/Users/ENGGAR/OneDrive - uny.ac.id/Documents/UNY/Semester 4/Statpend/UTS_N1000.xlsx")
head(N4)
## # A tibble: 6 × 37
##      b1    b2    b3    b4    b5    b6    b7    b8    b9   b10   b11   b12   b13
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     1     1     1     0     0     0     1     0     1     1     0     0     0
## 2     1     0     1     1     1     0     1     0     1     1     0     0     0
## 3     1     0     0     0     0     0     0     1     0     0     0     0     0
## 4     1     0     0     1     1     0     0     0     0     0     1     0     0
## 5     1     0     0     0     0     0     0     1     1     1     1     1     0
## 6     1     1     0     1     0     1     1     1     1     0     0     1     0
## # ℹ 24 more variables: b14 <dbl>, b15 <dbl>, b16 <dbl>, b17 <dbl>, b18 <dbl>,
## #   b19 <dbl>, b20 <dbl>, b21 <dbl>, b22 <dbl>, b23 <dbl>, b24 <dbl>,
## #   b25 <dbl>, b26 <dbl>, b27 <dbl>, b28 <dbl>, b29 <dbl>, b30 <dbl>,
## #   b31 <dbl>, b32 <dbl>, b33 <dbl>, b34 <dbl>, b35 <dbl>, b36 <dbl>, b37 <dbl>
model <- 'F1 = 1-37 CONSTRAIN = (1-37, a1)'
ModelRasch <- mirt(data = N4, model = 1, itemtype = 'Rasch', SE = TRUE, verbose = FALSE)
Model1PL <- mirt(data = N4, model = 1, itemtype = '1PL', SE = TRUE, verbose = FALSE)
Model2PL <- mirt(data = N4, model = 1, itemtype = '2PL', SE = TRUE, verbose = FALSE)
Model3PL <- mirt(data = N4, model = 1, itemtype = '3PL', SE = TRUE, verbose = FALSE)
## Warning: EM cycles terminated after 500 iterations.
Model4PL <- mirt(data = N4, model = 1, itemtype = '4PL', SE = TRUE, verbose = FALSE)

##Model Rasch_N4

fitRasch <- itemfit(ModelRasch, fit_stats = "S_X2")
fitRasch <- data.frame(Butir = fitRasch$item, Chi = round(fitRasch$S_X2, 2),
pvalue = round(fitRasch$p.S_X2, 2),
Keputusan = ifelse(round(fitRasch$p.S_X2, 2)>= 0.05, "Cocok","Tidak Cocok"))
head(fitRasch)
##   Butir   Chi pvalue   Keputusan
## 1    b1 28.43   0.44       Cocok
## 2    b2 94.06   0.00 Tidak Cocok
## 3    b3 67.14   0.00 Tidak Cocok
## 4    b4 34.12   0.16       Cocok
## 5    b5 27.76   0.42       Cocok
## 6    b6 45.47   0.01 Tidak Cocok
jumlah_fitRasch <- table(fitRasch$Keputusan)
jumlah_fitRasch
## 
##       Cocok Tidak Cocok 
##          14          23
itemfit(ModelRasch, 'S_X2', empirical.plot = 9)

##Model 1PL_N4

fit1PL <- itemfit(Model1PL, fit_stats = "S_X2")
fit1PL <- data.frame(Butir = fit1PL$item, Chi = round(fit1PL$S_X2, 2), pvalue = round(fit1PL$p.S_X2, 2), Keputusan = ifelse(round(fit1PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit1PL)
##   Butir   Chi pvalue   Keputusan
## 1    b1 28.49   0.49       Cocok
## 2    b2 92.10   0.00 Tidak Cocok
## 3    b3 67.26   0.00 Tidak Cocok
## 4    b4 34.49   0.19       Cocok
## 5    b5 28.14   0.46       Cocok
## 6    b6 45.73   0.02 Tidak Cocok
jumlah_fit1PL <- table(fit1PL$Keputusan)
jumlah_fit1PL
## 
##       Cocok Tidak Cocok 
##          15          22
itemfit(Model1PL, 'S_X2', empirical.plot = 9)

##Model 2PL_N4

fit2PL <- itemfit(Model2PL, fit_stats = "S_X2")
fit2PL <- data.frame(Butir = fit2PL$item, Chi = round(fit2PL$S_X2, 2), pvalue = round(fit2PL$p.S_X2, 2), Keputusan = ifelse(round(fit2PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit2PL)
##   Butir   Chi pvalue Keputusan
## 1    b1 27.05   0.41     Cocok
## 2    b2 25.50   0.65     Cocok
## 3    b3 23.93   0.25     Cocok
## 4    b4 23.34   0.56     Cocok
## 5    b5 14.90   0.96     Cocok
## 6    b6 37.83   0.06     Cocok
jumlah_fit2PL <- table(fit2PL$Keputusan)
jumlah_fit2PL
## 
##       Cocok Tidak Cocok 
##          30           7
itemfit(Model2PL, 'S_X2', empirical.plot = 9)

##Model 3PL_N4

fit3PL <- itemfit(Model3PL, fit_stats = "S_X2")
fit3PL <- data.frame(Butir = fit3PL$item, Chi = round(fit3PL$S_X2, 2), pvalue = round(fit3PL$p.S_X2, 2), Keputusan = ifelse(round(fit3PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit3PL)
##   Butir   Chi pvalue Keputusan
## 1    b1 26.68   0.37     Cocok
## 2    b2 16.82   0.91     Cocok
## 3    b3 28.11   0.14     Cocok
## 4    b4 24.80   0.47     Cocok
## 5    b5 14.84   0.95     Cocok
## 6    b6 29.76   0.19     Cocok
jumlah_fit3PL <- table(fit3PL$Keputusan)
jumlah_fit3PL
## 
##       Cocok Tidak Cocok 
##          36           1
itemfit(Model3PL, 'S_X2', empirical.plot = 9)

##Model 4PL_N4

fit4PL <- itemfit(Model4PL, fit_stats = "S_X2")
fit4PL <- data.frame(Butir = fit4PL$item, Chi = round(fit4PL$S_X2, 2), pvalue = round(fit4PL$p.S_X2, 2), Keputusan = ifelse(round(fit4PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit4PL)
##   Butir   Chi pvalue Keputusan
## 1    b1 23.15   0.57     Cocok
## 2    b2 16.45   0.90     Cocok
## 3    b3 27.34   0.13     Cocok
## 4    b4 23.76   0.48     Cocok
## 5    b5 12.33   0.97     Cocok
## 6    b6 29.59   0.16     Cocok
jumlah_fit4PL <- table(fit4PL$Keputusan)
jumlah_fit4PL
## 
##       Cocok Tidak Cocok 
##          34           3
itemfit(Model4PL, 'S_X2', empirical.plot = 9)

##AIC dan BIC_N4

anova(ModelRasch, Model1PL, Model2PL, Model3PL, Model4PL)
##                 AIC    SABIC       HQ      BIC    logLik       X2 df     p
## ModelRasch 40760.02 40825.82 40830.90 40946.51 -20342.01                  
## Model1PL   40876.86 40940.93 40945.87 41058.44 -20401.43 -118.839 -1   NaN
## Model2PL   40067.12 40195.27 40205.15 40430.30 -19959.56  883.736 37     0
## Model3PL   39609.04 39801.26 39816.09 40153.80 -19693.52  532.078 37     0
## Model4PL   39657.77 39914.06 39933.83 40384.12 -19680.88   25.275 37 0.928

##NFI Maks_N4

theta <- 0
nfi_rasch <- testinfo(ModelRasch, Theta = theta)
nfi_1pl <- testinfo(Model1PL, Theta = theta)
nfi_2pl <- testinfo(Model2PL, Theta = theta)
nfi_3pl <- testinfo(Model3PL, Theta = theta)
nfi_4pl <- testinfo(Model4PL, Theta = theta)
nfi_maks_df <- data.frame(Model = c("Rasch", "1PL", "2PL", "3PL", "4PL"), NFI_Maks = c(nfi_rasch, nfi_1pl, nfi_2pl, nfi_3pl, nfi_4pl))
nfi_maks_df
##   Model  NFI_Maks
## 1 Rasch  7.874828
## 2   1PL  7.956241
## 3   2PL 17.969249
## 4   3PL 25.677394
## 5   4PL 32.889434

#N5

N5 = read_xlsx("C:/Users/ENGGAR/OneDrive - uny.ac.id/Documents/UNY/Semester 4/Statpend/UTS_N1500.xlsx")
head(N5)
## # A tibble: 6 × 37
##      b1    b2    b3    b4    b5    b6    b7    b8    b9   b10   b11   b12   b13
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1     0     0     0     0     0     0     0     1     1     0     0     0     0
## 2     1     1     1     1     0     0     1     0     1     1     1     1     1
## 3     1     0     1     1     1     0     0     1     0     1     1     1     0
## 4     1     1     1     1     1     1     1     1     1     1     1     1     1
## 5     1     1     1     1     1     1     1     1     1     1     1     1     1
## 6     0     0     0     0     0     0     0     0     0     0     1     0     0
## # ℹ 24 more variables: b14 <dbl>, b15 <dbl>, b16 <dbl>, b17 <dbl>, b18 <dbl>,
## #   b19 <dbl>, b20 <dbl>, b21 <dbl>, b22 <dbl>, b23 <dbl>, b24 <dbl>,
## #   b25 <dbl>, b26 <dbl>, b27 <dbl>, b28 <dbl>, b29 <dbl>, b30 <dbl>,
## #   b31 <dbl>, b32 <dbl>, b33 <dbl>, b34 <dbl>, b35 <dbl>, b36 <dbl>, b37 <dbl>
model <- 'F1 = 1-37 CONSTRAIN = (1-37, a1)'
ModelRasch <- mirt(data = N5, model = 1, itemtype = 'Rasch', SE = TRUE, verbose = FALSE)
Model1PL <- mirt(data = N5, model = 1, itemtype = '1PL', SE = TRUE, verbose = FALSE)
Model2PL <- mirt(data = N5, model = 1, itemtype = '2PL', SE = TRUE, verbose = FALSE)
Model3PL <- mirt(data = N5, model = 1, itemtype = '3PL', SE = TRUE, verbose = FALSE)
## Warning: EM cycles terminated after 500 iterations.
Model4PL <- mirt(data = N5, model = 1, itemtype = '4PL', SE = TRUE, verbose = FALSE)

##Model Rasch_N5

fitRasch <- itemfit(ModelRasch, fit_stats = "S_X2")
fitRasch <- data.frame(Butir = fitRasch$item, Chi = round(fitRasch$S_X2, 2),
pvalue = round(fitRasch$p.S_X2, 2),
Keputusan = ifelse(round(fitRasch$p.S_X2, 2)>= 0.05, "Cocok","Tidak Cocok"))
head(fitRasch)
##   Butir    Chi pvalue   Keputusan
## 1    b1  37.74   0.10       Cocok
## 2    b2 119.12   0.00 Tidak Cocok
## 3    b3  82.89   0.00 Tidak Cocok
## 4    b4  31.22   0.31       Cocok
## 5    b5  46.26   0.02 Tidak Cocok
## 6    b6  42.79   0.05       Cocok
jumlah_fitRasch <- table(fitRasch$Keputusan)
jumlah_fitRasch
## 
##       Cocok Tidak Cocok 
##          11          26
itemfit(ModelRasch, 'S_X2', empirical.plot = 9)

##Model 1PL_N5

fit1PL <- itemfit(Model1PL, fit_stats = "S_X2")
fit1PL <- data.frame(Butir = fit1PL$item, Chi = round(fit1PL$S_X2, 2), pvalue = round(fit1PL$p.S_X2, 2), Keputusan = ifelse(round(fit1PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit1PL)
##   Butir    Chi pvalue   Keputusan
## 1    b1  37.76   0.13       Cocok
## 2    b2 116.32   0.00 Tidak Cocok
## 3    b3  83.10   0.00 Tidak Cocok
## 4    b4  31.77   0.33       Cocok
## 5    b5  46.99   0.02 Tidak Cocok
## 6    b6  43.19   0.06       Cocok
jumlah_fit1PL <- table(fit1PL$Keputusan)
jumlah_fit1PL
## 
##       Cocok Tidak Cocok 
##          13          24
itemfit(Model1PL, 'S_X2', empirical.plot = 9)

##Model 2PL_N5

fit2PL <- itemfit(Model2PL, fit_stats = "S_X2")
fit2PL <- data.frame(Butir = fit2PL$item, Chi = round(fit2PL$S_X2, 2), pvalue = round(fit2PL$p.S_X2, 2), Keputusan = ifelse(round(fit2PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit2PL)
##   Butir   Chi pvalue Keputusan
## 1    b1 34.84   0.14     Cocok
## 2    b2 25.03   0.72     Cocok
## 3    b3 21.99   0.52     Cocok
## 4    b4 16.69   0.94     Cocok
## 5    b5 19.14   0.83     Cocok
## 6    b6 30.16   0.31     Cocok
jumlah_fit2PL <- table(fit2PL$Keputusan)
jumlah_fit2PL
## 
##       Cocok Tidak Cocok 
##          26          11
itemfit(Model2PL, 'S_X2', empirical.plot = 9)

##Model 3PL_N5

fit3PL <- itemfit(Model3PL, fit_stats = "S_X2")
fit3PL <- data.frame(Butir = fit3PL$item, Chi = round(fit3PL$S_X2, 2), pvalue = round(fit3PL$p.S_X2, 2), Keputusan = ifelse(round(fit3PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit3PL)
##   Butir   Chi pvalue Keputusan
## 1    b1 33.61   0.12     Cocok
## 2    b2 18.34   0.92     Cocok
## 3    b3 24.35   0.33     Cocok
## 4    b4 18.17   0.90     Cocok
## 5    b5 18.74   0.81     Cocok
## 6    b6 24.85   0.53     Cocok
jumlah_fit3PL <- table(fit3PL$Keputusan)
jumlah_fit3PL
## 
##       Cocok Tidak Cocok 
##          35           2
itemfit(Model3PL, 'S_X2', empirical.plot = 9)

##Model 4PL_N5

fit4PL <- itemfit(Model4PL, fit_stats = "S_X2")
fit4PL <- data.frame(Butir = fit4PL$item, Chi = round(fit4PL$S_X2, 2), pvalue = round(fit4PL$p.S_X2, 2), Keputusan = ifelse(round(fit4PL$p.S_X2, 2)>=0.05, "Cocok","Tidak Cocok"))
head(fit4PL)
##   Butir   Chi pvalue Keputusan
## 1    b1 27.15   0.40     Cocok
## 2    b2 17.84   0.91     Cocok
## 3    b3 24.16   0.29     Cocok
## 4    b4 17.31   0.87     Cocok
## 5    b5 18.77   0.76     Cocok
## 6    b6 24.81   0.47     Cocok
jumlah_fit4PL <- table(fit4PL$Keputusan)
jumlah_fit4PL
## 
##       Cocok Tidak Cocok 
##          33           4
itemfit(Model4PL, 'S_X2', empirical.plot = 9)

##AIC dan BIC_N5

anova(ModelRasch, Model1PL, Model2PL, Model3PL, Model4PL)
##                 AIC    SABIC       HQ      BIC    logLik       X2 df     p
## ModelRasch 61095.79 61176.97 61171.00 61297.69 -30509.89                  
## Model1PL   61284.07 61363.12 61357.31 61480.66 -30605.04 -190.288 -1   NaN
## Model2PL   60015.59 60173.69 60162.07 60408.77 -29933.80 1342.481 37     0
## Model3PL   59339.59 59576.75 59559.30 59929.36 -29558.80      750 37     0
## Model4PL   59386.78 59702.98 59679.72 60173.13 -29545.39   26.817 37 0.891

##NFI Maks_N5

theta <- 0
nfi_rasch <- testinfo(ModelRasch, Theta = theta)
nfi_1pl <- testinfo(Model1PL, Theta = theta)
nfi_2pl <- testinfo(Model2PL, Theta = theta)
nfi_3pl <- testinfo(Model3PL, Theta = theta)
nfi_4pl <- testinfo(Model4PL, Theta = theta)
nfi_maks_df <- data.frame(Model = c("Rasch", "1PL", "2PL", "3PL", "4PL"), NFI_Maks = c(nfi_rasch, nfi_1pl, nfi_2pl, nfi_3pl, nfi_4pl))
nfi_maks_df
##   Model  NFI_Maks
## 1 Rasch  7.885592
## 2   1PL  7.971389
## 3   2PL 18.543268
## 4   3PL 25.974458
## 5   4PL 30.944337