Veri setinin yüklenmesi

library(ltm)
## Zorunlu paket yükleniyor: MASS
## Zorunlu paket yükleniyor: msm
## Zorunlu paket yükleniyor: polycor
data(LSAT)
veri<- LSAT

Varsayımlar

Boyut

library(EGAnet)
## 
## EGAnet (version 2.3.0) 
## 
## For help getting started, see <https://r-ega.net> 
## 
## For bugs and errors, submit an issue to <https://github.com/hfgolino/EGAnet/issues>
## 
## Attaching package: 'EGAnet'
## The following object is masked from 'package:ltm':
## 
##     information
plot(EGA(veri))

library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:ltm':
## 
##     factor.scores
## The following object is masked from 'package:polycor':
## 
##     polyserial
sonuc <-  omega(veri)
## Loading required namespace: GPArotation

sonuc$alpha
## [1] 0.2930283
sonuc$omega_h
## [1] 0.2072031

Omega değerleri düşük çıktı tek bir genel yapı yok görünüyor ama ega sonuçların da tek bir boyut gözlemleniyor.

Yerel bağımsızlık

library(mirt)
## Zorunlu paket yükleniyor: stats4
## Zorunlu paket yükleniyor: lattice
## 
## Attaching package: 'mirt'
## The following object is masked from 'package:ltm':
## 
##     Science
model_3pl <- mirt(veri, 1, itemtype = "3PL")
## Iteration: 1, Log-Lik: -2488.970, Max-Change: 0.37166Iteration: 2, Log-Lik: -2469.098, Max-Change: 0.19487Iteration: 3, Log-Lik: -2467.171, Max-Change: 0.10298Iteration: 4, Log-Lik: -2466.945, Max-Change: 0.14747Iteration: 5, Log-Lik: -2466.861, Max-Change: 0.14052Iteration: 6, Log-Lik: -2466.817, Max-Change: 0.12043Iteration: 7, Log-Lik: -2466.735, Max-Change: 0.66000Iteration: 8, Log-Lik: -2466.685, Max-Change: 0.00496Iteration: 9, Log-Lik: -2466.680, Max-Change: 0.00391Iteration: 10, Log-Lik: -2466.676, Max-Change: 0.00292Iteration: 11, Log-Lik: -2466.674, Max-Change: 0.00312Iteration: 12, Log-Lik: -2466.673, Max-Change: 0.00219Iteration: 13, Log-Lik: -2466.671, Max-Change: 0.00218Iteration: 14, Log-Lik: -2466.670, Max-Change: 0.00136Iteration: 15, Log-Lik: -2466.670, Max-Change: 0.00153Iteration: 16, Log-Lik: -2466.669, Max-Change: 0.00074Iteration: 17, Log-Lik: -2466.669, Max-Change: 0.00074Iteration: 18, Log-Lik: -2466.668, Max-Change: 0.00083Iteration: 19, Log-Lik: -2466.668, Max-Change: 0.00048Iteration: 20, Log-Lik: -2466.668, Max-Change: 0.00043Iteration: 21, Log-Lik: -2466.668, Max-Change: 0.00037Iteration: 22, Log-Lik: -2466.668, Max-Change: 0.00024Iteration: 23, Log-Lik: -2466.668, Max-Change: 0.00020Iteration: 24, Log-Lik: -2466.668, Max-Change: 0.00019Iteration: 25, Log-Lik: -2466.668, Max-Change: 0.00015Iteration: 26, Log-Lik: -2466.668, Max-Change: 0.00014Iteration: 27, Log-Lik: -2466.668, Max-Change: 0.00012Iteration: 28, Log-Lik: -2466.668, Max-Change: 0.00009
model_3pl <- "F=1-5"
model_3pl_uyum <- mirt(data = veri, model = model_3pl ,itemtype = "3PL", 
                  SE = TRUE)
## Iteration: 1, Log-Lik: -2488.970, Max-Change: 0.37166Iteration: 2, Log-Lik: -2469.098, Max-Change: 0.19487Iteration: 3, Log-Lik: -2467.171, Max-Change: 0.10298Iteration: 4, Log-Lik: -2466.945, Max-Change: 0.14747Iteration: 5, Log-Lik: -2466.861, Max-Change: 0.14052Iteration: 6, Log-Lik: -2466.817, Max-Change: 0.12043Iteration: 7, Log-Lik: -2466.735, Max-Change: 0.66000Iteration: 8, Log-Lik: -2466.685, Max-Change: 0.00496Iteration: 9, Log-Lik: -2466.680, Max-Change: 0.00391Iteration: 10, Log-Lik: -2466.676, Max-Change: 0.00292Iteration: 11, Log-Lik: -2466.674, Max-Change: 0.00312Iteration: 12, Log-Lik: -2466.673, Max-Change: 0.00219Iteration: 13, Log-Lik: -2466.671, Max-Change: 0.00218Iteration: 14, Log-Lik: -2466.670, Max-Change: 0.00136Iteration: 15, Log-Lik: -2466.670, Max-Change: 0.00153Iteration: 16, Log-Lik: -2466.669, Max-Change: 0.00074Iteration: 17, Log-Lik: -2466.669, Max-Change: 0.00074Iteration: 18, Log-Lik: -2466.668, Max-Change: 0.00083Iteration: 19, Log-Lik: -2466.668, Max-Change: 0.00048Iteration: 20, Log-Lik: -2466.668, Max-Change: 0.00043Iteration: 21, Log-Lik: -2466.668, Max-Change: 0.00037Iteration: 22, Log-Lik: -2466.668, Max-Change: 0.00024Iteration: 23, Log-Lik: -2466.668, Max-Change: 0.00020Iteration: 24, Log-Lik: -2466.668, Max-Change: 0.00019Iteration: 25, Log-Lik: -2466.668, Max-Change: 0.00015Iteration: 26, Log-Lik: -2466.668, Max-Change: 0.00014Iteration: 27, Log-Lik: -2466.668, Max-Change: 0.00012Iteration: 28, Log-Lik: -2466.668, Max-Change: 0.00009
## 
## Calculating information matrix...
Q3 <- residuals(model_3pl_uyum, type = 'Q3', method = 'ML')
## Warning: The following factor score estimates failed to converge successfully:
##     23,32
## Q3 summary statistics:
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -0.421  -0.290  -0.212  -0.241  -0.168  -0.134 
## 
##        Item 1 Item 2 Item 3 Item 4 Item 5
## Item 1  1.000 -0.157 -0.199 -0.223 -0.200
## Item 2 -0.157  1.000 -0.421 -0.272 -0.146
## Item 3 -0.199 -0.421  1.000 -0.362 -0.296
## Item 4 -0.223 -0.272 -0.362  1.000 -0.134
## Item 5 -0.200 -0.146 -0.296 -0.134  1.000
Q3[lower.tri(Q3,diag = TRUE)] <- NA
sum(abs(Q3) > 0.2, na.rm = TRUE)
## [1] 6

yerel bağımlılık mevcut çünkü alt ve üst köşegende 6 değer var 0,2 den büyük

3PL Lojistik Model

model_3pl <- "F=1-5"
model_3pl_uyum <- mirt(data = veri, model = model_3pl ,itemtype = "3PL", 
                  SE = TRUE)
## Iteration: 1, Log-Lik: -2488.970, Max-Change: 0.37166Iteration: 2, Log-Lik: -2469.098, Max-Change: 0.19487Iteration: 3, Log-Lik: -2467.171, Max-Change: 0.10298Iteration: 4, Log-Lik: -2466.945, Max-Change: 0.14747Iteration: 5, Log-Lik: -2466.861, Max-Change: 0.14052Iteration: 6, Log-Lik: -2466.817, Max-Change: 0.12043Iteration: 7, Log-Lik: -2466.735, Max-Change: 0.66000Iteration: 8, Log-Lik: -2466.685, Max-Change: 0.00496Iteration: 9, Log-Lik: -2466.680, Max-Change: 0.00391Iteration: 10, Log-Lik: -2466.676, Max-Change: 0.00292Iteration: 11, Log-Lik: -2466.674, Max-Change: 0.00312Iteration: 12, Log-Lik: -2466.673, Max-Change: 0.00219Iteration: 13, Log-Lik: -2466.671, Max-Change: 0.00218Iteration: 14, Log-Lik: -2466.670, Max-Change: 0.00136Iteration: 15, Log-Lik: -2466.670, Max-Change: 0.00153Iteration: 16, Log-Lik: -2466.669, Max-Change: 0.00074Iteration: 17, Log-Lik: -2466.669, Max-Change: 0.00074Iteration: 18, Log-Lik: -2466.668, Max-Change: 0.00083Iteration: 19, Log-Lik: -2466.668, Max-Change: 0.00048Iteration: 20, Log-Lik: -2466.668, Max-Change: 0.00043Iteration: 21, Log-Lik: -2466.668, Max-Change: 0.00037Iteration: 22, Log-Lik: -2466.668, Max-Change: 0.00024Iteration: 23, Log-Lik: -2466.668, Max-Change: 0.00020Iteration: 24, Log-Lik: -2466.668, Max-Change: 0.00019Iteration: 25, Log-Lik: -2466.668, Max-Change: 0.00015Iteration: 26, Log-Lik: -2466.668, Max-Change: 0.00014Iteration: 27, Log-Lik: -2466.668, Max-Change: 0.00012Iteration: 28, Log-Lik: -2466.668, Max-Change: 0.00009
## 
## Calculating information matrix...
model_3pl_par <- coef(model_3pl_uyum , IRTpars = TRUE, simplify = TRUE)
model_3pl_par$items
##                a          b          g u
## Item 1 0.8288230 -3.2565297 0.06423603 1
## Item 2 0.8237727 -0.8478190 0.17365215 1
## Item 3 0.9130376 -0.2144664 0.02519967 1
## Item 4 0.7121441 -1.6873520 0.06092150 1
## Item 5 0.6778616 -2.8303345 0.11094145 1

## C PARAMETRESİNİN EN YÜKSEK OLDUĞU MADDE 2. MADDE

plot(model_3pl_uyum , type = "trace", which.items = 1:5)

plot(model_3pl_uyum , type = "trace", which.items = 1:5, facet_items = FALSE)

En düşük yetenek düzeyinde farklılık fazlayken yetenek düzeyleri arttıkça farklılık azalıyor. Madde 2 ve 3 ün güçlükleri birbirine yakın ama şans parametresi etkisi ile düşük yeteneklerde bu farklılığın açıkdığı görülüyor. Ayrıca en düşük yetenk düzeyinde 0.2 bir doğru cevaplama oranı mevcut ki bu da şans parametresinin etkisini gösteriyor 2. madde için.

ltm ile analizler

library(ltm)
library(MPsychoR)
head(veri)
##   Item 1 Item 2 Item 3 Item 4 Item 5
## 1      0      0      0      0      0
## 2      0      0      0      0      0
## 3      0      0      0      0      0
## 4      0      0      0      0      1
## 5      0      0      0      0      1
## 6      0      0      0      0      1
fit3pl <- tpm (veri)
coef(fit3pl)
##             Gussng     Dffclt     Dscrmn
## Item 1 0.048943967 -3.4298905  0.7843851
## Item 2 0.001670895 -1.3718976  0.7189605
## Item 3 0.372430618  0.6530852 23.2030040
## Item 4 0.017067266 -1.9278300  0.6471598
## Item 5 0.020325411 -2.9562883  0.6913157
plot(fit3pl, item=1:5, legend=TRUE)

Değerler ve grafikler neden farklı çıktı anlamadım. Benzer sonuçlar bekliyordum

Model karşılaştırma

#2 pl model
model_2pl <- "F=1-5"
model_2pl_uyum <- mirt(data = veri, model = model_2pl ,itemtype = "2PL", 
                  SE = TRUE)
## Iteration: 1, Log-Lik: -2468.601, Max-Change: 0.08059Iteration: 2, Log-Lik: -2467.278, Max-Change: 0.03446Iteration: 3, Log-Lik: -2466.956, Max-Change: 0.02323Iteration: 4, Log-Lik: -2466.797, Max-Change: 0.01444Iteration: 5, Log-Lik: -2466.749, Max-Change: 0.01067Iteration: 6, Log-Lik: -2466.721, Max-Change: 0.00781Iteration: 7, Log-Lik: -2466.683, Max-Change: 0.00426Iteration: 8, Log-Lik: -2466.677, Max-Change: 0.00392Iteration: 9, Log-Lik: -2466.673, Max-Change: 0.00361Iteration: 10, Log-Lik: -2466.657, Max-Change: 0.00235Iteration: 11, Log-Lik: -2466.656, Max-Change: 0.00207Iteration: 12, Log-Lik: -2466.655, Max-Change: 0.00176Iteration: 13, Log-Lik: -2466.654, Max-Change: 0.00039Iteration: 14, Log-Lik: -2466.654, Max-Change: 0.00026Iteration: 15, Log-Lik: -2466.653, Max-Change: 0.00025Iteration: 16, Log-Lik: -2466.653, Max-Change: 0.00021Iteration: 17, Log-Lik: -2466.653, Max-Change: 0.00020Iteration: 18, Log-Lik: -2466.653, Max-Change: 0.00018Iteration: 19, Log-Lik: -2466.653, Max-Change: 0.00016Iteration: 20, Log-Lik: -2466.653, Max-Change: 0.00013Iteration: 21, Log-Lik: -2466.653, Max-Change: 0.00013Iteration: 22, Log-Lik: -2466.653, Max-Change: 0.00010
## 
## Calculating information matrix...
model_2pl_par <- coef(model_2pl_uyum , IRTpars = TRUE, simplify = TRUE)
model_2pl_par$items
##                a          b g u
## Item 1 0.8250552 -3.3607460 0 1
## Item 2 0.7230608 -1.3695513 0 1
## Item 3 0.8899989 -0.2798928 0 1
## Item 4 0.6886588 -1.8657302 0 1
## Item 5 0.6575904 -3.1229745 0 1
# 1pl model
model_1pl <- "F=1-5"
model_1pl_uyum <- mirt(data = veri, model = model_1pl ,itemtype = "1PL", 
                  SE = TRUE)
## Iteration: 1, Log-Lik: -2473.219, Max-Change: 0.05796Iteration: 2, Log-Lik: -2473.054, Max-Change: 0.00103Iteration: 3, Log-Lik: -2473.054, Max-Change: 0.00053Iteration: 4, Log-Lik: -2473.054, Max-Change: 0.00041Iteration: 5, Log-Lik: -2473.054, Max-Change: 0.00074Iteration: 6, Log-Lik: -2473.054, Max-Change: 0.00028Iteration: 7, Log-Lik: -2473.054, Max-Change: 0.00012Iteration: 8, Log-Lik: -2473.054, Max-Change: 0.00009
## 
## Calculating information matrix...
model_1pl_par <- coef(model_1pl_uyum , IRTpars = TRUE, simplify = TRUE)
model_1pl_par$item
##        a          b g u
## Item 1 1 -2.8720218 0 1
## Item 2 1 -1.0630493 0 1
## Item 3 1 -0.2575922 0 1
## Item 4 1 -1.3880767 0 1
## Item 5 1 -2.2187990 0 1
library(mirt)
library(knitr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
uyumdegerleri <- rbind(M2(model_1pl_uyum), 
                       M2(model_2pl_uyum))    #3pl modele ait uyum değerleri vermedi
  
                    
                      
cbind(data.frame(Modeller = c("1PL", "2PL")), uyumdegerleri) %>% 
  kable(caption = 'Uyum Değerleri', digits = 2, row.names = FALSE)
Uyum Değerleri
Modeller M2 df p RMSEA RMSEA_5 RMSEA_95 SRMSR TLI CFI
1PL 16.90 10 0.08 0.03 0 0.05 0.05 0.88 0.88
2PL 4.74 5 0.45 0.00 0 0.04 0.02 1.01 1.00

2 parametreli model daha iyi gibi duruyor.

uyum1 <- anova(model_1pl_uyum, model_2pl_uyum) 
cbind(data.frame(Modeller = c("1PL", "2PL")), uyum1)[,1:6] %>% 
  kable(caption = 'Uyum Değerleri', digits=2, row.names = FALSE)
Uyum Değerleri
Modeller AIC SABIC HQ BIC logLik
1PL 4956.11 4964.77 4965.43 4980.65 -2473.05
2PL 4953.31 4970.62 4971.96 5002.38 -2466.65
uyum2 <- anova(model_2pl_uyum, model_3pl_uyum) 
cbind(data.frame(Modeller = c("2PL", "3PL")), uyum2)[,1:6] %>% 
  kable(caption = 'Uyum Değerleri', digits=2, row.names = FALSE)
Uyum Değerleri
Modeller AIC SABIC HQ BIC logLik
2PL 4953.31 4970.62 4971.96 5002.38 -2466.65
3PL 4963.34 4989.31 4991.32 5036.95 -2466.67

Aıc ve BIc değerleri üzerinden 2 ve 3 karşılaştırdı. Bu şekilde almak iyi oldu. Veriye en uygun model 2pl modeli.

Madde incelemeleri

options(digits = 2)
# 1PL Model Madde Uyum Değerleri
birpl_if <- itemfit(model_1pl_uyum)
birpl_if[,2:5] <- round(birpl_if[,2:5], 2)
names(birpl_if ) <- c("item", "X2", "sd", "RMSEA", "p")
head(birpl_if)
##     item   X2 sd RMSEA    p
## 1 Item 1 0.78  3     0 0.86
## 2 Item 2 1.71  3     0 0.64
## 3 Item 3 1.52  2     0 0.47
## 4 Item 4 0.39  3     0 0.94
## 5 Item 5 0.61  3     0  0.9

tüm maddeler modele uygun

# 2PL Model Madde Uyum Değerleri
ikipl_if <- itemfit(model_2pl_uyum)
ikipl_if[,2:5] <- round(ikipl_if[,2:5], 2)
names(ikipl_if ) <- c("item", "X2", "sd", "RMSEA", "p")
head(ikipl_if)
##     item   X2 sd RMSEA    p
## 1 Item 1 0.45  2     0  0.8
## 2 Item 2 1.69  2     0 0.43
## 3 Item 3 0.67  1     0 0.41
## 4 Item 4 0.17  2     0 0.92
## 5 Item 5 0.11  2     0 0.95

Tüm maddeler modele uygun

# 3PL ModelMadde Uyum Değerleri
ucpl_if <- itemfit(model_3pl_uyum)
ucpl_if[,2:5] <- round(ucpl_if[,2:5], 2)
names(ucpl_if ) <- c("item", "X2", "sd", "RMSEA", "p")
head(ucpl_if)
##     item   X2 sd RMSEA    p
## 1 Item 1 0.44  1  0.00 0.51
## 2 Item 2 1.64  1  0.03  0.2
## 3 Item 3  NaN  0   NaN  NaN
## 4 Item 4 0.17  1  0.00 0.68
## 5 Item 5  0.1  1  0.00 0.75
  1. madde dışında hepsi uygun

Yetenek parametresi kestirimi

ML <- fscores(model_2pl_uyum, method = "ML", full.scores.SE = TRUE)
MAP <- fscores(model_2pl_uyum, method = "MAP", full.scores.SE = TRUE)
EAP <- fscores(model_2pl_uyum, method = "EAP", full.scores.SE = TRUE)
head(ML)
##         F SE_F
## [1,] -Inf   NA
## [2,] -Inf   NA
## [3,] -Inf   NA
## [4,] -4.4  1.7
## [5,] -4.4  1.7
## [6,] -4.4  1.7
head(MAP)
##         F SE_F
## [1,] -1.9  0.8
## [2,] -1.9  0.8
## [3,] -1.9  0.8
## [4,] -1.5  0.8
## [5,] -1.5  0.8
## [6,] -1.5  0.8
head(EAP)
##         F SE_F
## [1,] -1.9  0.8
## [2,] -1.9  0.8
## [3,] -1.9  0.8
## [4,] -1.5  0.8
## [5,] -1.5  0.8
## [6,] -1.5  0.8
yetenek <- data.frame(ML = ML[,1], MAP = MAP[,1], EAP = EAP[,1])
apply(yetenek, 2, summary)
##             ML    MAP      EAP
## Min.      -Inf -1.895 -1.9e+00
## 1st Qu. -1.360 -0.483 -4.6e-01
## Median  -0.068 -0.022  8.7e-03
## Mean       NaN -0.029 -1.7e-06
## 3rd Qu.    Inf  0.606  6.5e-01
## Max.       Inf  0.606  6.5e-01
cor(yetenek)
##      ML MAP EAP
## ML    1 NaN NaN
## MAP NaN   1   1
## EAP NaN   1   1
pairs(yetenek)

Madde bilgi fonksiyonu

library(mirt)
library(psych)

library(ggplot2)
## 
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
## 
##     %+%, alpha
# θ değer aralığı
theta_vals3 <- seq(-6, 6, length.out = 100)

# Her madde için bilgi fonksiyonlarını hesapla
info_list3 <- list()

for(i in 1:ncol(veri)) {
  madde_modeli_3 <- extract.item(model_3pl_uyum, item = i)
  bilgi <- iteminfo(madde_modeli_3, Theta = theta_vals3)
  
  info_list3[[i]] <- data.frame(
    Theta = theta_vals3,
    Info = bilgi,
    Madde = paste("Madde", i)
  )
}

# Hepsini birleştir
info_df3 <- do.call(rbind, info_list3)

# Grafik
ggplot(info_df3, aes(x = Theta, y = Info, color = Madde)) +
  geom_line(size = 1) +
  theme_minimal() +
  labs(title = "Madde Bilgi Fonksiyonları (3PL Modeli)",
       x = expression(theta),
       y = "Bilgi") +
  theme(legend.position = "right")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Grafikte görüldüğü gibi en fazla şand parametresine sahip madde en fazla bilgiyi bize verdi.

# θ değer aralığı
theta_vals2 <- seq(-6, 6, length.out = 100)

# Her madde için bilgi fonksiyonlarını hesapla
info_list2 <- list()

for(i in 1:ncol(veri)) {
  madde_modeli_2 <- extract.item(model_2pl_uyum, item = i)
  bilgi <- iteminfo(madde_modeli_2, Theta = theta_vals2)
  
  info_list2[[i]] <- data.frame(
    Theta = theta_vals2,
    Info = bilgi,
    Madde = paste("Madde", i)
  )
}

# Hepsini birleştir
info_df2 <- do.call(rbind, info_list2)

# Grafik
ggplot(info_df2, aes(x = Theta, y = Info, color = Madde)) +
  geom_line(size = 1) +
  theme_minimal() +
  labs(title = "Madde Bilgi Fonksiyonları (3PL Modeli)",
       x = expression(theta),
       y = "Bilgi") +
  theme(legend.position = "right")

#maddelerin bikgi düzeylerinde çok bir artış olmadı. 3. madde hala en iyi bilgi sağlayan madde. a değerlerine baktığımda en yüksek a değeri 3. maddeye ait. Muhtemelen bu sebeple sert bir artış yok.

# θ değer aralığı
theta_vals1 <- seq(-6, 6, length.out = 100)

# Her madde için bilgi fonksiyonlarını hesapla
info_list1 <- list()

for(i in 1:ncol(veri)) {
  madde_modeli_1 <- extract.item(model_1pl_uyum, item = i)
  bilgi <- iteminfo(madde_modeli_1, Theta = theta_vals1)
  
  info_list1[[i]] <- data.frame(
    Theta = theta_vals1,
    Info = bilgi,
    Madde = paste("Madde", i)
  )
}

# Hepsini birleştir
info_df1 <- do.call(rbind, info_list1)

# Grafik
ggplot(info_df1, aes(x = Theta, y = Info, color = Madde)) +
  geom_line(size = 1) +
  theme_minimal() +
  labs(title = "Madde Bilgi Fonksiyonları (3PL Modeli)",
       x = expression(theta),
       y = "Bilgi") +
  theme(legend.position = "right")

# Tüm maddeler bariz bilgi artışları mevcut. Genel olarak bakıldığında 1 veya 2 pl modeller kullanılabilir.

Test bilgi fonksiyonu

Theta <- matrix(seq(-6, 6, .01))
tinfo <- testinfo(model_1pl_uyum, Theta)
plot(Theta, tinfo, type = 'l', main = "Test Bilgi\n")

Theta <- matrix(seq(-6, 6, .01))
tinfo <- testinfo(model_2pl_uyum, Theta)
plot(Theta, tinfo, type = 'l', main = "Test Bilgi\n")

Theta <- matrix(seq(-6, 6, .01))
tinfo <- testinfo(model_3pl_uyum, Theta)
plot(Theta, tinfo, type = 'l', main = "Test Bilgi\n")

# parametre sayısı artııkça ölçülen bilgi düzeyinde gözle görülür bir azalma oluyor.

Dereceleme Ölçeği Modeli (Rating Scale Model)

Rasch Dereceli Tepki Modeli

library(mirt)

data(Science) 
head(Science)
##   Comfort Work Future Benefit
## 1       4    4      3       2
## 2       3    3      3       3
## 3       3    2      2       3
## 4       3    2      2       3
## 5       3    4      4       1
## 6       4    4      3       3
library(eRm)
## 
## Attaching package: 'eRm'
## The following objects are masked from 'package:mirt':
## 
##     itemfit, personfit
## The following object is masked from 'package:psych':
## 
##     sim.rasch
Science [, 1:4]<- Science [, 1:4]-1
fitRSM<- RSM (Science[, 1:4])
summary(fitRSM)
## 
## Results of RSM estimation: 
## 
## Call:  RSM(X = Science[, 1:4]) 
## 
## Conditional log-likelihood: -807 
## Number of iterations: 15 
## Number of parameters: 5 
## 
## Item (Category) Difficulty Parameters (eta): with 0.95 CI:
##         Estimate Std. Error lower CI upper CI
## Work        0.48      0.070    0.341    0.613
## Future     -0.17      0.071   -0.305   -0.028
## Benefit     0.21      0.069    0.081    0.350
## Cat 2       0.92      0.189    0.552    1.292
## Cat 3       4.71      0.376    3.972    5.448
## 
## Item Easiness Parameters (beta) with 0.95 CI:
##                 Estimate Std. Error lower CI upper CI
## beta Comfort.c1     0.52      0.076    0.376    0.675
## beta Comfort.c2     0.13      0.227   -0.316    0.574
## beta Comfort.c3    -3.13      0.396   -3.911   -2.357
## beta Work.c1       -0.48      0.070   -0.613   -0.341
## beta Work.c2       -1.88      0.252   -2.370   -1.382
## beta Work.c3       -6.14      0.472   -7.066   -5.217
## beta Future.c1      0.17      0.071    0.028    0.305
## beta Future.c2     -0.59      0.228   -1.036   -0.142
## beta Future.c3     -4.21      0.415   -5.023   -3.398
## beta Benefit.c1    -0.21      0.069   -0.350   -0.081
## beta Benefit.c2    -1.35      0.239   -1.821   -0.884
## beta Benefit.c3    -5.36      0.445   -6.228   -4.483

# 4 maddeye ait kolaylık indeksleri. Cat2 ve Cat3 eşik değerleri. 2 den 3 geçmek için gereken eşik değeri oldukça yüksek

library(eRm)
person.pars <- person.parameter(fitRSM)

# madde uyum analizi
itemfitRSM <- itemfit(person.pars)

itemfitRSM
## 
## Itemfit Statistics: 
##         Chisq  df p-value Outfit MSQ Infit MSQ Outfit t Infit t Discrim
## Comfort   267 377    1.00       0.71      0.66     -4.3    -4.9    0.34
## Work      308 377    1.00       0.81      0.83     -2.7    -2.6    0.34
## Future    257 377    1.00       0.68      0.68     -4.8    -4.8    0.57
## Benefit   316 377    0.99       0.83      0.83     -2.4    -2.5    0.41

#MSQ değerleri iyi kabul edilebilir. Infıt outfıt değerleri çok yüksek. Bu maddelerin varyansını düşük olduğu söylenebilir ama örneklemin düşük olması da bu durumuna neden olabilir.

thresholds(fitRSM)  #eşik değerleri sabir ama biz güçlük ile toplayarak bu 
## 
## Design Matrix Block 1:
##         Location Threshold 1 Threshold 2 Threshold 3
## Comfort      1.0       -0.53        0.40         3.3
## Work         2.0        0.48        1.40         4.3
## Future       1.4       -0.17        0.76         3.6
## Benefit      1.8        0.22        1.14         4.0
                    #değerleri elde ediyoruz. 1. eşik için değer yakkaşık -1,5
plotPImap (fitRSM)

Aşamalı Tepki Modeli-ATM (Graded Response Model-GRM)

ATM’de bireylerin her bir kategori ve üzerinde puan alma olasılığı modellenir ve bireylerin belirli bir kategoride puan alma olasılıkları iki aşamada hesaplanır. Dolayısıyla ATM dolaylı bir modeldir. ATM’de kategoriler arasında kümülatif karşılaştırmalar yapıldığından ATM “kümülatif lojit model” (cumulative logit model) olarak da adlandırılır. Her kategori için güçlük değeri farklılaşır. Eşik değerlerinin ortalamaları madde güçlüğü hakkında bilgi verebilir.

atm <- "F=1-4"
library(mirt)
atm_uyum <- mirt(data = Science, model = atm, 
                 itemtype = "graded", SE = TRUE)
## Iteration: 1, Log-Lik: -1629.361, Max-Change: 0.50660Iteration: 2, Log-Lik: -1617.374, Max-Change: 0.25442Iteration: 3, Log-Lik: -1612.894, Max-Change: 0.16991Iteration: 4, Log-Lik: -1610.306, Max-Change: 0.10461Iteration: 5, Log-Lik: -1609.814, Max-Change: 0.09162Iteration: 6, Log-Lik: -1609.534, Max-Change: 0.07363Iteration: 7, Log-Lik: -1609.030, Max-Change: 0.03677Iteration: 8, Log-Lik: -1608.988, Max-Change: 0.03200Iteration: 9, Log-Lik: -1608.958, Max-Change: 0.02754Iteration: 10, Log-Lik: -1608.878, Max-Change: 0.01443Iteration: 11, Log-Lik: -1608.875, Max-Change: 0.00847Iteration: 12, Log-Lik: -1608.873, Max-Change: 0.00515Iteration: 13, Log-Lik: -1608.872, Max-Change: 0.00550Iteration: 14, Log-Lik: -1608.872, Max-Change: 0.00318Iteration: 15, Log-Lik: -1608.871, Max-Change: 0.00462Iteration: 16, Log-Lik: -1608.871, Max-Change: 0.00277Iteration: 17, Log-Lik: -1608.870, Max-Change: 0.00145Iteration: 18, Log-Lik: -1608.870, Max-Change: 0.00175Iteration: 19, Log-Lik: -1608.870, Max-Change: 0.00126Iteration: 20, Log-Lik: -1608.870, Max-Change: 0.00025Iteration: 21, Log-Lik: -1608.870, Max-Change: 0.00285Iteration: 22, Log-Lik: -1608.870, Max-Change: 0.00108Iteration: 23, Log-Lik: -1608.870, Max-Change: 0.00022Iteration: 24, Log-Lik: -1608.870, Max-Change: 0.00059Iteration: 25, Log-Lik: -1608.870, Max-Change: 0.00014Iteration: 26, Log-Lik: -1608.870, Max-Change: 0.00068Iteration: 27, Log-Lik: -1608.870, Max-Change: 0.00065Iteration: 28, Log-Lik: -1608.870, Max-Change: 0.00019Iteration: 29, Log-Lik: -1608.870, Max-Change: 0.00061Iteration: 30, Log-Lik: -1608.870, Max-Change: 0.00012Iteration: 31, Log-Lik: -1608.870, Max-Change: 0.00012Iteration: 32, Log-Lik: -1608.870, Max-Change: 0.00058Iteration: 33, Log-Lik: -1608.870, Max-Change: 0.00055Iteration: 34, Log-Lik: -1608.870, Max-Change: 0.00015Iteration: 35, Log-Lik: -1608.870, Max-Change: 0.00052Iteration: 36, Log-Lik: -1608.870, Max-Change: 0.00010
## 
## Calculating information matrix...
atm_par <- coef(atm_uyum, IRTpars = TRUE, simplify = TRUE)
round(atm_par$items, 3)
##           a   b1    b2   b3
## Comfort 1.0 -4.7 -2.53 1.41
## Work    1.2 -2.4 -0.73 1.85
## Future  2.3 -2.3 -0.96 0.86
## Benefit 1.1 -3.1 -0.91 1.54
plot(atm_uyum, type = "info", theta_lim = c(-4, 4), 
     main = "Test Bilgi Fonksiyonu_ATM")

plot(atm_uyum, type = "trace", which.items = 1:4, 
     layout = c(5, 2), theta_lim = c(-4, 4), 
     main = "Kategori Yanıt Eğrileri_ATM")

Kısmi puanlama modeli (PCM)

# Rasch modelin çok kategorili modellere uyarlanmış hali. a her zaman 1.

PCMfit <- PCM(Science)   #ilk kategori 0 olmalı 
thresholds (PCMfit)
## 
## Design Matrix Block 1:
##         Location Threshold 1 Threshold 2 Threshold 3
## Comfort   0.0082       -1.78      -1.040         2.8
## Work      1.1979       -0.28       0.516         3.4
## Future    0.5347       -1.03       0.069         2.6
## Benefit   0.8395       -0.83       0.549         2.8
plotPImap (PCMfit)

#comfort için eşik aralığı çok büyük daha fazla yetenek istiyor.

Genelleştirilmiş Kısmi Puan modeli (Generalized Partial Credit Model-G-PCM)

# a parametresini maddelere ekler ancak a eşik değerlerden de etkilenir.

library(mirt)
gkpm <- "F=1-4"
gkpm_uyum <- mirt(data = Science, model = gkpm, 
                  itemtype = "gpcm", SE = TRUE)
## Iteration: 1, Log-Lik: -1689.735, Max-Change: 1.30401Iteration: 2, Log-Lik: -1618.015, Max-Change: 0.28548Iteration: 3, Log-Lik: -1615.635, Max-Change: 0.27916Iteration: 4, Log-Lik: -1613.549, Max-Change: 0.13014Iteration: 5, Log-Lik: -1613.306, Max-Change: 0.08712Iteration: 6, Log-Lik: -1613.172, Max-Change: 0.09075Iteration: 7, Log-Lik: -1612.802, Max-Change: 0.06897Iteration: 8, Log-Lik: -1612.774, Max-Change: 0.05440Iteration: 9, Log-Lik: -1612.756, Max-Change: 0.03767Iteration: 10, Log-Lik: -1612.733, Max-Change: 0.03981Iteration: 11, Log-Lik: -1612.724, Max-Change: 0.02653Iteration: 12, Log-Lik: -1612.718, Max-Change: 0.03424Iteration: 13, Log-Lik: -1612.700, Max-Change: 0.00646Iteration: 14, Log-Lik: -1612.697, Max-Change: 0.01774Iteration: 15, Log-Lik: -1612.695, Max-Change: 0.01250Iteration: 16, Log-Lik: -1612.692, Max-Change: 0.01716Iteration: 17, Log-Lik: -1612.690, Max-Change: 0.01090Iteration: 18, Log-Lik: -1612.689, Max-Change: 0.01170Iteration: 19, Log-Lik: -1612.687, Max-Change: 0.00599Iteration: 20, Log-Lik: -1612.687, Max-Change: 0.00160Iteration: 21, Log-Lik: -1612.687, Max-Change: 0.00208Iteration: 22, Log-Lik: -1612.687, Max-Change: 0.02543Iteration: 23, Log-Lik: -1612.685, Max-Change: 0.00161Iteration: 24, Log-Lik: -1612.685, Max-Change: 0.00099Iteration: 25, Log-Lik: -1612.685, Max-Change: 0.00044Iteration: 26, Log-Lik: -1612.685, Max-Change: 0.00027Iteration: 27, Log-Lik: -1612.685, Max-Change: 0.00102Iteration: 28, Log-Lik: -1612.685, Max-Change: 0.00049Iteration: 29, Log-Lik: -1612.685, Max-Change: 0.00020Iteration: 30, Log-Lik: -1612.685, Max-Change: 0.00019Iteration: 31, Log-Lik: -1612.685, Max-Change: 0.01678Iteration: 32, Log-Lik: -1612.684, Max-Change: 0.00133Iteration: 33, Log-Lik: -1612.684, Max-Change: 0.00078Iteration: 34, Log-Lik: -1612.684, Max-Change: 0.00030Iteration: 35, Log-Lik: -1612.684, Max-Change: 0.00090Iteration: 36, Log-Lik: -1612.684, Max-Change: 0.00027Iteration: 37, Log-Lik: -1612.684, Max-Change: 0.00014Iteration: 38, Log-Lik: -1612.684, Max-Change: 0.00083Iteration: 39, Log-Lik: -1612.684, Max-Change: 0.00024Iteration: 40, Log-Lik: -1612.684, Max-Change: 0.00012Iteration: 41, Log-Lik: -1612.684, Max-Change: 0.01508Iteration: 42, Log-Lik: -1612.683, Max-Change: 0.00107Iteration: 43, Log-Lik: -1612.683, Max-Change: 0.00105Iteration: 44, Log-Lik: -1612.683, Max-Change: 0.00038Iteration: 45, Log-Lik: -1612.683, Max-Change: 0.00111Iteration: 46, Log-Lik: -1612.683, Max-Change: 0.00022Iteration: 47, Log-Lik: -1612.683, Max-Change: 0.00015Iteration: 48, Log-Lik: -1612.683, Max-Change: 0.00063Iteration: 49, Log-Lik: -1612.683, Max-Change: 0.00021Iteration: 50, Log-Lik: -1612.683, Max-Change: 0.00009
## 
## Calculating information matrix...
gkpm_par <- coef(gkpm_uyum, IRTpars = TRUE, simplify = TRUE)
round(gkpm_par$items, 3)
##            a   b1    b2   b3
## Comfort 0.86 -3.3 -2.88 1.53
## Work    0.84 -2.0 -1.03 2.06
## Future  2.20 -2.1 -0.98 0.83
## Benefit 0.72 -2.9 -1.10 1.63

Sınıflamalı Tepki Modeli-STM (Nominal Response Model-NRM)

Çoktan seçmeli maddelerde maddelerin her biri için ayrı a değeri verir. Çeldiricilerin kalitesi için kullanılabilir.

library(mirt)
stm <- "F=1-4"
stm_uyum <- mirt(data = Science, model = stm, 
                 itemtype = "nominal", SE = TRUE)
## Iteration: 1, Log-Lik: -2231.749, Max-Change: 3.43133Iteration: 2, Log-Lik: -1647.755, Max-Change: 0.78640Iteration: 3, Log-Lik: -1629.925, Max-Change: 0.48800Iteration: 4, Log-Lik: -1621.546, Max-Change: 0.44557Iteration: 5, Log-Lik: -1616.776, Max-Change: 0.30268Iteration: 6, Log-Lik: -1613.789, Max-Change: 0.29869Iteration: 7, Log-Lik: -1610.323, Max-Change: 0.20615Iteration: 8, Log-Lik: -1609.697, Max-Change: 0.28886Iteration: 9, Log-Lik: -1609.348, Max-Change: 0.13388Iteration: 10, Log-Lik: -1609.105, Max-Change: 0.11615Iteration: 11, Log-Lik: -1608.975, Max-Change: 0.10205Iteration: 12, Log-Lik: -1608.881, Max-Change: 0.09345Iteration: 13, Log-Lik: -1608.596, Max-Change: 0.06321Iteration: 14, Log-Lik: -1608.565, Max-Change: 0.03301Iteration: 15, Log-Lik: -1608.548, Max-Change: 0.02973Iteration: 16, Log-Lik: -1608.507, Max-Change: 0.01790Iteration: 17, Log-Lik: -1608.500, Max-Change: 0.02676Iteration: 18, Log-Lik: -1608.494, Max-Change: 0.02509Iteration: 19, Log-Lik: -1608.472, Max-Change: 0.00996Iteration: 20, Log-Lik: -1608.468, Max-Change: 0.00382Iteration: 21, Log-Lik: -1608.467, Max-Change: 0.00338Iteration: 22, Log-Lik: -1608.464, Max-Change: 0.03036Iteration: 23, Log-Lik: -1608.462, Max-Change: 0.00312Iteration: 24, Log-Lik: -1608.462, Max-Change: 0.00244Iteration: 25, Log-Lik: -1608.461, Max-Change: 0.00209Iteration: 26, Log-Lik: -1608.460, Max-Change: 0.00238Iteration: 27, Log-Lik: -1608.460, Max-Change: 0.00206Iteration: 28, Log-Lik: -1608.460, Max-Change: 0.02332Iteration: 29, Log-Lik: -1608.458, Max-Change: 0.00177Iteration: 30, Log-Lik: -1608.458, Max-Change: 0.00144Iteration: 31, Log-Lik: -1608.458, Max-Change: 0.00192Iteration: 32, Log-Lik: -1608.458, Max-Change: 0.00042Iteration: 33, Log-Lik: -1608.458, Max-Change: 0.00168Iteration: 34, Log-Lik: -1608.458, Max-Change: 0.00024Iteration: 35, Log-Lik: -1608.458, Max-Change: 0.00416Iteration: 36, Log-Lik: -1608.458, Max-Change: 0.00063Iteration: 37, Log-Lik: -1608.457, Max-Change: 0.00059Iteration: 38, Log-Lik: -1608.457, Max-Change: 0.00021Iteration: 39, Log-Lik: -1608.457, Max-Change: 0.00124Iteration: 40, Log-Lik: -1608.457, Max-Change: 0.00057Iteration: 41, Log-Lik: -1608.457, Max-Change: 0.00036Iteration: 42, Log-Lik: -1608.457, Max-Change: 0.00023Iteration: 43, Log-Lik: -1608.457, Max-Change: 0.02043Iteration: 44, Log-Lik: -1608.456, Max-Change: 0.00064Iteration: 45, Log-Lik: -1608.456, Max-Change: 0.00021Iteration: 46, Log-Lik: -1608.456, Max-Change: 0.00104Iteration: 47, Log-Lik: -1608.456, Max-Change: 0.00061Iteration: 48, Log-Lik: -1608.456, Max-Change: 0.00021Iteration: 49, Log-Lik: -1608.456, Max-Change: 0.00017Iteration: 50, Log-Lik: -1608.456, Max-Change: 0.00168Iteration: 51, Log-Lik: -1608.456, Max-Change: 0.00018Iteration: 52, Log-Lik: -1608.456, Max-Change: 0.00017Iteration: 53, Log-Lik: -1608.456, Max-Change: 0.00250Iteration: 54, Log-Lik: -1608.456, Max-Change: 0.00019Iteration: 55, Log-Lik: -1608.456, Max-Change: 0.00018Iteration: 56, Log-Lik: -1608.456, Max-Change: 0.02339Iteration: 57, Log-Lik: -1608.455, Max-Change: 0.00081Iteration: 58, Log-Lik: -1608.455, Max-Change: 0.00080Iteration: 59, Log-Lik: -1608.455, Max-Change: 0.00022Iteration: 60, Log-Lik: -1608.455, Max-Change: 0.00084Iteration: 61, Log-Lik: -1608.455, Max-Change: 0.00040Iteration: 62, Log-Lik: -1608.455, Max-Change: 0.00033Iteration: 63, Log-Lik: -1608.455, Max-Change: 0.00026Iteration: 64, Log-Lik: -1608.455, Max-Change: 0.00126Iteration: 65, Log-Lik: -1608.455, Max-Change: 0.00015Iteration: 66, Log-Lik: -1608.455, Max-Change: 0.00083Iteration: 67, Log-Lik: -1608.455, Max-Change: 0.00023Iteration: 68, Log-Lik: -1608.455, Max-Change: 0.00018Iteration: 69, Log-Lik: -1608.455, Max-Change: 0.00014Iteration: 70, Log-Lik: -1608.455, Max-Change: 0.00151Iteration: 71, Log-Lik: -1608.455, Max-Change: 0.00007
## 
## Calculating information matrix...
stm_par<- coef(stm_uyum, IRTpars = TRUE, simplify = TRUE)
round(stm_par$items, 3)
##           a1     a2   a3  a4   c1   c2  c3     c4
## Comfort -1.6 -0.095 0.37 1.4 -3.5 0.12 2.4  1.013
## Work    -1.1 -0.512 0.17 1.4 -1.0 0.43 1.3 -0.703
## Future  -2.9 -1.314 0.93 3.3 -3.4 0.30 2.5  0.578
## Benefit -1.1 -0.318 0.23 1.2 -1.7 0.47 1.2 -0.048

Comfort değşkeni için 1. kategori çok negatif (-1.6), 4. kategori ise pozitif ve yüksek (1.4). Bu durum, maddeye verilen yanıtların orta ve üst düzey kategorilerde daha ayırt edici olduğunu gösterebilir. Eşik değerleri sırasıyla negatiften pozitife geçiyor. Bu da yanıt kategorileri arasında mantıklı bir geçiş olduğunu (monotonik artış) gösterir.

Dereceleme Ölçeği Modeli-DÖM (Rating Scale Model-RSM)

KPM’de madde yanıtlarına ilişkin kategori sayıları farklı olabilirken DÖM’de tüm madde yanıtlarına ilişkin kategori sayıları aynı olmalıdır (De Ayala, 2009). Benim önceki analizlerimde madde kategori sayıları aynı olduğu için aynı sonuçları elde edeceğimi düşünüyorum bunun analizlerine girmiyorum