library(tidyverse)
library(mirt)
library(ltm)
library(data.table)
library(ShinyItemAnalysis)
library(psych)
library(psychometric)
library(moments)
library(CTT)
library(epmr)
library(hemp)
library(knitr)
setwd("~/Desktop/DIM/DIM_2021_11/Analiz-1")
Var_Seans_Son <- read_csv("~/Desktop/DIM/DIM_2021_11/Var_Seans_Son.csv")
names(Var_Seans_Son) <- c("Sıra", "Variantlar", "Seanslar")
knitr::kable(Var_Seans_Son)
| Sıra | Variantlar | Seanslar |
|---|---|---|
| 1 | 111301 | Az_Riy_Var1 |
| 2 | 112301 | Az_Riy_Var2 |
| 3 | 113301 | Az_Riy_Var3 |
| 4 | 114301 | Az_Riy_Var4 |
| 5 | 115301 | Az_Riy_Var5 |
| 6 | 116301 | Az_Riy_Var6 |
| 7 | 117301 | Az_Riy_Var7 |
| 8 | 118301 | Az_Riy_Var8 |
| 9 | 211301 | Az_Riy_Var9 |
| 10 | 212301 | Az_Riy_Var10 |
| 11 | 213301 | Az_Riy_Var11 |
| 12 | 214301 | Az_Riy_Var12 |
| 13 | 215301 | Az_Riy_Var13 |
| 14 | 216301 | Az_Riy_Var14 |
| 15 | 217301 | Az_Riy_Var15 |
| 16 | 218301 | Az_Riy_Var16 |
| 17 | 311301 | Az_Riy_Var17 |
| 18 | 312301 | Az_Riy_Var19 |
| 19 | 313301 | Az_Riy_Var21 |
| 20 | 314301 | Az_Riy_Var23 |
| 21 | 315301 | Az_Riy_Var25 |
| 22 | 316301 | Az_Riy_Var27 |
| 23 | 317301 | Az_Riy_Var29 |
| 24 | 318301 | Az_Riy_Var31 |
Bu cədvəldə, 2021-ci ildə 11-ci sinif riyaziyyat, azərbaycan bölməsi üzrə baxacğımız variantlar və seanslar arasındakı əlaqə verilmişdir. Biz əvvəlcə, Az_Riy_Var12-ci seansa yaxud, 214301 nömrəli varianta baxacayıq.
Vacib_S <- read_csv("~/Desktop/DIM/DIM_2021_11/Vacib_S.csv")
Dat_S_Alfa <- Vacib_S[, c(1,5,7,9)]
Dat_S_Alfa %>% arrange(Orta_Alfa)
## # A tibble: 24 × 4
## Seans Orta_Alfa_Q1 Orta_Alfa_Q2 Orta_Alfa
## <chr> <dbl> <dbl> <dbl>
## 1 Az_Riy_Var12 0.802 0.816 0.896
## 2 Az_Riy_Var11 0.812 0.809 0.896
## 3 Az_Riy_Var19 0.828 0.839 0.901
## 4 Az_Riy_Var9 0.818 0.822 0.903
## 5 Az_Riy_Var10 0.808 0.836 0.903
## 6 Az_Riy_Var21 0.829 0.841 0.906
## 7 Az_Riy_Var23 0.837 0.846 0.906
## 8 Az_Riy_Var17 0.83 0.852 0.908
## 9 Az_Riy_Var1 0.8 0.883 0.916
## 10 Az_Riy_Var3 0.805 0.884 0.918
## # … with 14 more rows
write.csv(Dat_S_Alfa, file = "Dat_S_Alfa.csv", row.names = F) ##
knitr::kable(Dat_S_Alfa)
| Seans | Orta_Alfa_Q1 | Orta_Alfa_Q2 | Orta_Alfa |
|---|---|---|---|
| Az_Riy_Var15 | 0.818 | 0.888 | 0.923 |
| Az_Riy_Var16 | 0.808 | 0.882 | 0.920 |
| Az_Riy_Var14 | 0.808 | 0.883 | 0.921 |
| Az_Riy_Var13 | 0.816 | 0.883 | 0.921 |
| Az_Riy_Var7 | 0.861 | 0.855 | 0.923 |
| Az_Riy_Var5 | 0.867 | 0.847 | 0.922 |
| Az_Riy_Var25 | 0.835 | 0.855 | 0.921 |
| Az_Riy_Var29 | 0.840 | 0.857 | 0.923 |
| Az_Riy_Var8 | 0.866 | 0.852 | 0.923 |
| Az_Riy_Var31 | 0.844 | 0.857 | 0.924 |
| Az_Riy_Var27 | 0.852 | 0.862 | 0.926 |
| Az_Riy_Var6 | 0.856 | 0.849 | 0.921 |
| Az_Riy_Var2 | 0.812 | 0.884 | 0.920 |
| Az_Riy_Var3 | 0.805 | 0.884 | 0.918 |
| Az_Riy_Var4 | 0.808 | 0.891 | 0.919 |
| Az_Riy_Var1 | 0.800 | 0.883 | 0.916 |
| Az_Riy_Var21 | 0.829 | 0.841 | 0.906 |
| Az_Riy_Var17 | 0.830 | 0.852 | 0.908 |
| Az_Riy_Var23 | 0.837 | 0.846 | 0.906 |
| Az_Riy_Var19 | 0.828 | 0.839 | 0.901 |
| Az_Riy_Var9 | 0.818 | 0.822 | 0.903 |
| Az_Riy_Var10 | 0.808 | 0.836 | 0.903 |
| Az_Riy_Var12 | 0.802 | 0.816 | 0.896 |
| Az_Riy_Var11 | 0.812 | 0.809 | 0.896 |
Var12_Chiy <- read_csv("~/Desktop/DIM/DIM_2021_11/FVar12_Chiy")
names(Var12_Chiy)
## [1] "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12"
## [13] "C13" "C14" "C15" "C16" "C17" "C18" "C19" "C20" "C21"
Var12_Chiy_Q1 <- Var12_Chiy [, 1:13] ## Qapalı çiy tapşırıqlar
names(Var12_Chiy_Q1)
## [1] "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12"
## [13] "C13"
Var12_Chiy_Q2 <- Var12_Chiy [, 14:21] ## Açıq kodlaşan tapşırıqlar
names(Var12_Chiy_Q2)
## [1] "C14" "C15" "C16" "C17" "C18" "C19" "C20" "C21"
Var12_NA <- read_csv("~/Desktop/DIM/DIM_2021_11/Tam_T_NA_Var12.csv")
names(Var12_NA)
## [1] "№" "Bölgə"
## [3] "Məktəbin adı" "Cins"
## [5] "Bölmə" "Fənn"
## [7] "İmtahan verilən xarici dil" "Variant"
## [9] "C1" "C2"
## [11] "C3" "C4"
## [13] "C5" "C6"
## [15] "C7" "C8"
## [17] "C9" "C10"
## [19] "C11" "C12"
## [21] "C13" "C14"
## [23] "C15" "C16"
## [25] "C17" "C18"
## [27] "C19" "C20"
## [29] "C21" "C22"
## [31] "C23" "C24"
## [33] "C25"
Var12_NA_T <-Var12_NA[, 9:33] ## Tam test
Var12_NA_Q1 <- Var12_NA_T [, 1:13] ## Qapalı suallardan ibarət test
Var12_NA_Q2 <- Var12_NA_T [, 14:21] ## Açıq kodlaşan suallardan ibarət test
Var12_NA_A <- Var12_NA_T [, 22:25] ## Yazılı suallardan ibarət test
Var12_S <- read_csv("~/Desktop/DIM/DIM_2021_11/Tam_T_Var12SY.csv")
Var12_S_T <- Var12_S[,9:33]
names(Var12_S_T)
## [1] "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12"
## [13] "C13" "C14" "C15" "C16" "C17" "C18" "C19" "C20" "C21" "C22" "C23" "C24"
## [25] "C25"
Var12_S_Q1 <- Var12_S_T [, 1:13] ## Kodlaşmış qapalı suallardan ibarət test
Var12_S_Q2 <- Var12_S_T [, 14:21] ## Açıq kodlaşan suallardan ibarət test
Var12_S_A <- Var12_S_T [, 22:25] ## Yzılı suallardan ibarət test
## [1] "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12"
## [13] "C13"
## [1] "C14" "C15" "C16" "C17" "C18" "C19" "C20" "C21"
## [1] "C22" "C23" "C24" "C25"
-Biz, seansların hər birinin həm alt testlərinin həm də tam testin özünün və tapşırıqların analizinə 4 müxtəlif aspektdən baxacayıq. Nəticədə, hər bir aspekt öz meyarlarına görə müəyyən sayda qüsurlu tapşırıqlar aşkar edəcəkdir..
Bu yanaşmada testin tapşırıqlarının daxılı razılaşmasını ifadə edən Kronbax alfasına iki halda baxılır. Birinci halda tapşırığın özü tam testin tərkibində olur, ikinci halda tapşırıq tam testin tərkibindən çıxarılır və tapşırıqların daxili razılaşdırma əmsalı (Kronbax alfası) yenidən hesablanır. Bu zaman, normalda tapşırıq testin tərkibində olanda əmsal (Kronbax alfası) daha çox olmalıdır. Əgər, yeni tapşırıq testə əlavə olunduqda onun razılaşma əmsalı artmırsa və əksinə, azalırsa belə tapşırıq testə əlavə olunmalı deyil!
Var12_NA_Q1_I_stat <- istudy(Var12_NA_Q1)
Var12_NA_Q1_I_stat$items %>%
arrange(m) %>%
round(3)
## m sd n na itc citc aid
## C11 0.245 0.430 1962 109 0.200 0.072 0.813
## C13 0.265 0.441 1958 113 0.510 0.402 0.788
## C8 0.293 0.455 1974 97 0.355 0.228 0.802
## C9 0.364 0.481 2002 69 0.570 0.460 0.783
## C10 0.376 0.484 2000 71 0.602 0.497 0.780
## C5 0.376 0.484 1984 87 0.498 0.378 0.790
## C3 0.389 0.488 2010 61 0.649 0.552 0.775
## C4 0.405 0.491 2015 56 0.577 0.466 0.782
## C2 0.427 0.495 2024 47 0.533 0.414 0.787
## C1 0.434 0.496 2028 43 0.654 0.557 0.774
## C6 0.454 0.498 1996 75 0.596 0.486 0.781
## C12 0.518 0.500 2009 62 0.666 0.569 0.773
## C7 0.668 0.471 2018 53 0.549 0.439 0.785
write.csv(Var12_NA_Q1_I_stat, file = "Var12_NA_Q1_I_stat.csv",row.names = F)
Bu cədvəldəki dəyişənlərin adlarını və onların mənaları
Birinci sütunda qapalı tapşırıqların adları verilib (C1-C13)
Tapşırığa verilən cavabların orta qiyməti- (m)
Tapşırığa cavabların standart meyli- (sd)
Tapşırığa cavab verənlərin sayı- (n)
Tapşırığa verilməyən cavabların sayı- (na)
Tapşırığa cavabla cəm balları arasında korrelyasiya- (itc)
Tapşırığa cavabla, tapşırıq olmadıqda cəm balları arasında korrelyasiya- (citc)
Tapşırıq olmadıqda, testin Kronbax alfası- (aid)
Var12_NA_Q1_DX_Pis <-
row.names(Var12_NA_Q1_I_stat$items)[Var12_NA_Q1_I_stat$items$aid >=
Var12_NA_Q1_I_stat$alpha]
Var12_NA_Q1_DX_Pis ## Qapalı tapşırıqlar.Daxili razılaşmaya görə uğursuzlar.
## [1] "C8" "C11"
write.csv(Var12_NA_Q1_DX_Pis, file = "Var12_NA_Q1_DX_Pis.csv",row.names = F)
Buradan qapalı suallardan ibarət testin iki uğursuz tapşırığı müəyyən edilir. C8 və C11 nömrəli tapşırıqlar. Bu tapşırıqlar testin tərkibində olmalı deyioldi. Yəni, sınağın nəticəsindən asılı olaraq testə salınmalı deyildi.
Var12_NA_Q2_I_stat <- istudy(Var12_NA_Q2)
Var12_NA_Q2_I_stat$items %>%
arrange(m) %>%
round(3)
## m sd n na itc citc aid
## C18 0.128 0.334 877 1194 0.515 0.384 0.814
## C15 0.139 0.346 934 1137 0.617 0.500 0.801
## C14 0.173 0.378 1104 967 0.556 0.409 0.811
## C17 0.206 0.405 903 1168 0.730 0.622 0.781
## C19 0.240 0.427 1056 1015 0.682 0.545 0.792
## C20 0.334 0.472 938 1133 0.664 0.507 0.801
## C21 0.447 0.497 980 1091 0.750 0.613 0.778
## C16 0.530 0.499 1215 856 0.633 0.443 0.804
write.csv(Var12_NA_Q2_I_stat, file = "Var12_NA_Q2_I_stat.csv",row.names = F)
Var12_NA_Q2_DX_Pis <-
row.names(Var12_NA_Q2_I_stat$items)[Var12_NA_Q2_I_stat$items$aid >=
Var12_NA_Q2_I_stat$alpha]
Var12_NA_Q2_DX_Pis ## Açıq kodlaşanlar.Daxili razılaşmaya görə uğursuzlar.
## character(0)
write.csv(Var12_NA_Q2_DX_Pis, file = "Var12_NA_Q2_DX_Pis.csv",row.names = F)
Açıq kodlaşan tapşırıqlar içərisində daxılı razılaşmanın pozulmaına görə uğursuz tapşırıq yoxdur.
## m sd n na itc citc aid
## C23 0.218 0.673 532 1539 0.740 0.591 0.688
## C22 0.231 0.765 683 1388 0.666 0.447 0.729
## C25 0.458 0.927 493 1578 0.806 0.635 0.615
## C24 1.386 1.405 547 1524 0.783 0.399 0.778
Yazılı tapşırıqlardan ibarət testin uğursuz tapşırıqları
## [1] "C24"
Daxili razılaşdırma əlıamətimnə görə görə C24- tapşırığı testin tərkibində olmalı deyildi.
| Difficulty | Mean | SD | Prop.max.score | Min.score | Max.score | Obs.min | Obs.max | gULI | ULI | RIT | RIR | Index.rel | Index.rel.drop | Alpha.drop | Perc.miss | Perc.nr | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C1 | 0.42 | 0.42 | 0.49 | 0.42 | 0 | 1 | 0 | 1 | 0.73 | 0.73 | 0.66 | 0.56 | 0.32 | 0.28 | 0.78 | 0 | 0 |
| C2 | 0.42 | 0.42 | 0.49 | 0.42 | 0 | 1 | 0 | 1 | 0.59 | 0.59 | 0.54 | 0.42 | 0.27 | 0.21 | 0.79 | 0 | 0 |
| C3 | 0.38 | 0.38 | 0.48 | 0.38 | 0 | 1 | 0 | 1 | 0.69 | 0.69 | 0.65 | 0.55 | 0.31 | 0.27 | 0.78 | 0 | 0 |
| C4 | 0.39 | 0.39 | 0.49 | 0.39 | 0 | 1 | 0 | 1 | 0.61 | 0.61 | 0.58 | 0.47 | 0.29 | 0.23 | 0.79 | 0 | 0 |
| C5 | 0.36 | 0.36 | 0.48 | 0.36 | 0 | 1 | 0 | 1 | 0.50 | 0.50 | 0.50 | 0.38 | 0.24 | 0.18 | 0.79 | 0 | 0 |
| C6 | 0.44 | 0.44 | 0.50 | 0.44 | 0 | 1 | 0 | 1 | 0.66 | 0.66 | 0.60 | 0.50 | 0.30 | 0.25 | 0.78 | 0 | 0 |
| C7 | 0.65 | 0.65 | 0.48 | 0.65 | 0 | 1 | 0 | 1 | 0.67 | 0.67 | 0.57 | 0.46 | 0.27 | 0.22 | 0.79 | 0 | 0 |
| C8 | 0.28 | 0.28 | 0.45 | 0.28 | 0 | 1 | 0 | 1 | 0.31 | 0.31 | 0.36 | 0.24 | 0.16 | 0.11 | 0.80 | 0 | 0 |
| C9 | 0.35 | 0.35 | 0.48 | 0.35 | 0 | 1 | 0 | 1 | 0.60 | 0.60 | 0.57 | 0.46 | 0.27 | 0.22 | 0.79 | 0 | 0 |
| C10 | 0.36 | 0.36 | 0.48 | 0.36 | 0 | 1 | 0 | 1 | 0.63 | 0.63 | 0.61 | 0.50 | 0.29 | 0.24 | 0.78 | 0 | 0 |
| C11 | 0.23 | 0.23 | 0.42 | 0.23 | 0 | 1 | 0 | 1 | 0.16 | 0.16 | 0.20 | 0.08 | 0.09 | 0.03 | 0.82 | 0 | 0 |
| C12 | 0.50 | 0.50 | 0.50 | 0.50 | 0 | 1 | 0 | 1 | 0.81 | 0.81 | 0.67 | 0.58 | 0.34 | 0.29 | 0.78 | 0 | 0 |
| C13 | 0.25 | 0.25 | 0.43 | 0.25 | 0 | 1 | 0 | 1 | 0.41 | 0.41 | 0.50 | 0.39 | 0.22 | 0.17 | 0.79 | 0 | 0 |
## [1] "C11"
Bu əlamət də qapalı tapşırıqlardan C11-i uğursuz tapşırıq kimi qeyd edir.
| Difficulty | Mean | SD | Prop.max.score | Min.score | Max.score | Obs.min | Obs.max | gULI | ULI | RIT | RIR | Index.rel | Index.rel.drop | Alpha.drop | Perc.miss | Perc.nr | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C14 | 0.09 | 0.09 | 0.29 | 0.09 | 0 | 1 | 0 | 1 | 0.26 | 0.26 | 0.59 | 0.47 | 0.17 | 0.14 | 0.80 | 0 | 0 |
| C15 | 0.06 | 0.06 | 0.24 | 0.06 | 0 | 1 | 0 | 1 | 0.18 | 0.18 | 0.59 | 0.49 | 0.14 | 0.12 | 0.80 | 0 | 0 |
| C16 | 0.31 | 0.31 | 0.46 | 0.31 | 0 | 1 | 0 | 1 | 0.81 | 0.81 | 0.73 | 0.57 | 0.34 | 0.26 | 0.80 | 0 | 0 |
| C17 | 0.09 | 0.09 | 0.29 | 0.09 | 0 | 1 | 0 | 1 | 0.27 | 0.27 | 0.71 | 0.62 | 0.20 | 0.18 | 0.79 | 0 | 0 |
| C18 | 0.05 | 0.05 | 0.23 | 0.05 | 0 | 1 | 0 | 1 | 0.15 | 0.15 | 0.49 | 0.38 | 0.11 | 0.09 | 0.81 | 0 | 0 |
| C19 | 0.12 | 0.12 | 0.33 | 0.12 | 0 | 1 | 0 | 1 | 0.36 | 0.36 | 0.70 | 0.58 | 0.23 | 0.19 | 0.79 | 0 | 0 |
| C20 | 0.15 | 0.15 | 0.36 | 0.15 | 0 | 1 | 0 | 1 | 0.42 | 0.42 | 0.68 | 0.54 | 0.24 | 0.19 | 0.79 | 0 | 0 |
| C21 | 0.21 | 0.21 | 0.41 | 0.21 | 0 | 1 | 0 | 1 | 0.62 | 0.62 | 0.80 | 0.69 | 0.33 | 0.28 | 0.77 | 0 | 0 |
## [1] "C15" "C18"
Bu əlamət açıq kodlaşan test tapşırıqlarından iki uğursuzunu seçir. C15 və C18.
| Difficulty | Mean | SD | Prop.max.score | Min.score | Max.score | Obs.min | Obs.max | gULI | ULI | RIT | RIR | Index.rel | Index.rel.drop | Alpha.drop | Perc.miss | Perc.nr | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C22 | 0.03 | 0.08 | 0.45 | 0.02 | 0 | 3 | 0 | 3 | 0.08 | 0.08 | 0.67 | 0.48 | 0.30 | 0.22 | 0.62 | 0 | 0 |
| C23 | 0.02 | 0.06 | 0.35 | 0.01 | 0 | 3 | 0 | 3 | 0.06 | 0.06 | 0.66 | 0.52 | 0.23 | 0.18 | 0.63 | 0 | 0 |
| C24 | 0.12 | 0.37 | 0.95 | 0.10 | 0 | 3 | 0 | 3 | 0.37 | 0.37 | 0.86 | 0.52 | 0.81 | 0.49 | 0.70 | 0 | 0 |
| C25 | 0.04 | 0.11 | 0.49 | 0.02 | 0 | 3 | 0 | 3 | 0.11 | 0.11 | 0.77 | 0.61 | 0.38 | 0.30 | 0.54 | 0 | 0 |
## [1] "C22" "C23" "C25"
Bu əlamət açıq suallardan yalnız C24-saxlanılmasını təklif edir. Yəni, sınaqlardan sonra C22, C23 və C25 açıq suallar testə daxil edilməli deyildi.
Qeyd edək ki, tapşırıqların ayrıdetməsi haqda daha yaxşı təsəvvürü ona verilən cavabların qrafik təsviri yaradır. Məsələn, aşağıda açıq kodlaşa bilən tapşırıqların birinci tapşırığına (C18) verilən cavabların qrafik təsvirini verək
Bu növ tapşırıqlar üzrə maksimum cəm bal 8-dir. Absis oxunda birdən səkkizə kimi ballar qeyd edilmiş, koordinat müstəvisində isə bu ballara uyğun verilən 0 (sıfır) və birlərin sayı qədər nöqtə təsvir edilmişdir. C18 -ayrıdetməsi ən pis olandır.
İndi isə ayrıdetməsi ən yaxşı olanın C16 -nın cavablarının qrafik təsvirini verək.
Adından göründüyü kimi bu üsul yalnız, çiy formada olan qapalı test suallarına tətbiq oluna bilir.
Biz aşağıdakı kod çəngəsi ilə qapalı tapşırıqlara cavabların sayını və faizini tapa bilərik. Lakin, onlardan bir tapşırığa məsələn, C1-ə baxmaqla kifayətlənirik. Bu cədvəldə imthan verənlər yığdıqları bala ğörə üç təxmini səviyyəyə bölünür, aşağı, orta və yuxari. Sonra hər bir qrupdan tapşırığa cavab verənlərin sayı göstərilir. Yəni, həm doğru cavabı həm də distraktorları seçənlərin sayı. Sonrakı cədvəllərdə birinci cədvəlin sətirlər və sütunlar üzrə faizləri verilir.
## groups
## low mid high
## * 1 1 0
## A 116 44 9
## B 118 50 13
## C 90 203 465
## D 335 180 34
## E 65 49 10
## groups
## low mid high
## * 50 50 0
## A 69 26 5
## B 65 28 7
## C 12 27 61
## D 61 33 6
## E 52 40 8
## groups
## low mid high
## * 0 0 0
## A 16 8 2
## B 16 9 2
## C 12 39 88
## D 46 34 6
## E 9 9 2
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12
## * 0.001 0.002 0.004 0.003 0.002 0.003 0.004 0.004 0.002 0.001 0.003 0.005
## A 0.092 0.417 0.086 0.172 0.231 0.437 0.076 0.231 0.175 0.363 0.219 0.122
## B 0.097 0.120 0.163 0.394 0.360 0.131 0.070 0.158 0.168 0.356 0.175 0.145
## C 0.425 0.180 0.377 0.127 0.141 0.134 0.095 0.279 0.168 0.109 0.210 0.107
## D 0.297 0.120 0.165 0.144 0.123 0.180 0.077 0.139 0.352 0.082 0.232 0.089
## E 0.067 0.139 0.175 0.133 0.101 0.079 0.651 0.143 0.102 0.055 0.108 0.502
## <NA> 0.021 0.023 0.029 0.027 0.042 0.036 0.026 0.047 0.033 0.034 0.053 0.030
## C13
## * 0.001
## A 0.187
## B 0.199
## C 0.173
## D 0.250
## E 0.135
## <NA> 0.055
## C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13
## 0 0 0 0 0 0 0 0 0 0 0 0 0
Buradan, bütün tapşırıqların hər bir distraktorunu 5 faizdən çox şağir seçdiyi müəyyən edilir. Başqa sözlə, qapalı suallar distraktorların yzılması baxımından uğurlu hesab edilə bilər.
Test tapşırıqlarının analizınə onun etbarliliq əmsalı- nın hesablanması da daxildir. Tapşırığın etbarliliq əmsalını tapmaq üçün onun standart meylini (sd), ona verilən cavabla, cəm cavab arasındakı korrelyasiyaya (itc) vurmaq lazım gəlir. Bu əmsal (-.5, +.5) aralığında dəyişir və mütləq qiymətcə 0.2-dən çox olması normal qəbul edilir.
## [1] 0.32412532 0.26580723 0.31463541 0.28501975 0.24021314 0.29929595
## [7] 0.26982990 0.16236440 0.27317196 0.29098141 0.08541996 0.33729108
## [13] 0.21651680
## [1] "C8" "C11"
Bu əlamət də I-ci üsulda olduğu kimi C8 və C11-tapşırıqlarını göstərir.
## [1] 0.1716797 0.1423630 0.3390408 0.2032511 0.1108399 0.2291317 0.2423433
## [8] 0.3274198
## [1] "C14" "C15" "C18"
Bu üsul bizə C14, C15 və C18 tapşırıqlarının qüsurlu olduğunu bildirir.
## [1] 0.29860815 0.24017510 0.29989419 0.27155155 0.22809819 0.28264647
## [7] 0.23519069 0.16337687 0.25476501 0.27721921 0.07304552 0.30531490
## [13] 0.21217738 0.14475405 0.12639608 0.31501345 0.19160989 0.09399241
## [19] 0.21283815 0.20816821 0.31027724 0.21609006 0.16529512 0.72330022
## [25] 0.29937273
## [1] "C8" "C11" "C14" "C15" "C17" "C18" "C23"
Tam testin tapşırıqlarının etibarlılıq əmsalına qoyulan tələblərə görə C8, C11, C14, C15, C17, C18 və C23 tapşırıqları sınaqdan sonra testə daxil edilməli deyildi.
Bizim variantın tam testini və yaxud onun alttestlərinin Müasir Test Nəzəriyyəsi ilə analizin aparmaq üçün biz əvvəlcə testin cavabında boş yerlərin (NA-lərin) sayına baxmalıyıq. Ümumiyyətlə, dataya hər hansı bir modeli uğurlu biçmək üçün boş yerləri faizi bəlli bir həddi keçməli deyil. Məsələn, Raş modellərində və digər loqistik modellərdə bu hədd 20%-dir. Buna görə bizim tam testin və onun ayrı-ayrı alttestlərinin olmayan cavablarının faizlərini hesablayaq.
DF_Q2 <- apply(Var12_Chiy_Q2, 2, table, exclude = NULL)
DF_Q2
## C14 C15 C16 C17 C18 C19 C20 C21
## 0 913 804 571 717 765 803 625 542
## 1 191 130 644 186 112 253 313 438
## <NA> 967 1137 856 1168 1194 1015 1133 1091
Burada sütunlar üzrə hər bir tapşırığa verilən cavablar, 0-verilən doğru olmayan, 1-verilən doğru və NA-verilməyən cavabların sayıdır. Məsələn, C14-ə 913 şagir doğru olmayan, 191 doğru cavab verib. 967 şagir isə cavab verməyib.
Bu cədvəlin sütunlarını faizlə ifadə edək
DF_Q2_F <-round(apply(DF_Q2, 2, prop.table)*100,2)
DF_Q2_F
## C14 C15 C16 C17 C18 C19 C20 C21
## 0 44.08 38.82 27.57 34.62 36.94 38.77 30.18 26.17
## 1 9.22 6.28 31.10 8.98 5.41 12.22 15.11 21.15
## <NA> 46.69 54.90 41.33 56.40 57.65 49.01 54.71 52.68
Aşağıdakı kodla hansı tapşırıqlarda cavab verənlərin sayının verməyənlərin sayından az olduğunu tapırıq
DF_Q2_F_Cavab_Azlar <- colnames(DF_Q2_F)[DF_Q2_F[1,] + DF_Q2_F[2,] <= DF_Q2_F[3,]]
DF_Q2_F_Cavab_Azlar ## Cavab verməyənlərin sayı, cavab verənlərdən çox olanlar
## [1] "C15" "C17" "C18" "C20" "C21"
write.csv(DF_Q2_F_Cavab_Azlar, file = "DF_Q2_F_Cavab_Azlar.csv",row.names = F)
Biz, hər üç alttest və tam test üçün NA-lərin faizlə ifadəsinı aşağıdakı kimi tapa bilərik.
N_Qapalı <- sum(is.na(Var12_NA_Q1))/(ncol(Var12_NA_Q1)*nrow(Var12_NA_Q1))*100
N_Qapalı
## [1] 3.502581
Qapalı tapşırıqlara verilməyən cavabların faizi 3.5 faiz.
N_Kodlaşan <- sum(is.na(Var12_NA_Q2))/(ncol(Var12_NA_Q2)*nrow(Var12_NA_Q2))*100
N_Kodlaşan
## [1] 51.6719
Açıq kodlaşanlarda verilməyən cavabların faizi 51.6719 faiz.
N_Yazılı <- sum(is.na(Var12_NA_A))/(ncol(Var12_NA_A)*nrow(Var12_NA_A))*100
N_Yazılı
## [1] 72.77885
Yazılı testlərdə verilməyən cavabların faizi 72.77885 faiz
N_Tam <- sum(is.na(Var12_NA_T))/(ncol(Var12_NA_T)*nrow(Var12_NA_T))*100
N_Tam
## [1] 30.00097
Yazılı testlərdə verilməyən cavabların faizi 30.00097 faiz
Beləliklə, tam testdə və onun alttestlərində olmayan cavabların faizləri aşağıdakı kimidir.
Tam testdə- 30.00097%
Yazılı alttestdə- 72.77885%
Açıq kodlaşan alttestdə- 51.6719%
Qapalı alttestdə- 3.502581%
Biz yazılı tapşırıqların sıfırdan fərqli qiymətlərinin faizinidə hesablaya bilərik.
DF_A <- apply(Var12_NA_A, 2, table, exclude = NULL)
DF_A_Y <- rbind(DF_A$C22, DF_A$C23, DF_A$C24, DF_A$C25)
## Warning in rbind(DF_A$C22, DF_A$C23, DF_A$C24, DF_A$C25): number of columns of
## result is not a multiple of vector length (arg 1)
DF_A_Y
## 0 1 2 3 <NA>
## [1,] 624 19 40 1388 624
## [2,] 472 23 18 19 1539
## [3,] 261 27 46 213 1524
## [4,] 373 58 18 44 1578
row.names(DF_A_Y) <- c("C22","C23", "C24", "C25")
colnames(DF_A_Y) <- c("0","1", "2", "3", "NA")
DF_A_Y <- as.data.frame(DF_A_Y)
DF_A_Y
## 0 1 2 3 NA
## C22 624 19 40 1388 624
## C23 472 23 18 19 1539
## C24 261 27 46 213 1524
## C25 373 58 18 44 1578
DF_A_Y_1 <-DF_A_Y %>%
mutate(Verilən_cavab = round(rowSums(DF_A_Y[,1:4])/rowSums(DF_A_Y)*100,3),
Verilməyən_cavab = round(DF_A_Y[,5]/rowSums(DF_A_Y)*100,3),
Verilən_Sifir = round(DF_A_Y[,1]/rowSums(DF_A_Y)*100,3),
Fərq = Verilən_cavab - Verilən_Sifir)
DF_A_Y_1
## 0 1 2 3 NA Verilən_cavab Verilməyən_cavab Verilən_Sifir Fərq
## C22 624 19 40 1388 624 76.846 23.154 23.154 53.692
## C23 472 23 18 19 1539 25.688 74.312 22.791 2.897
## C24 261 27 46 213 1524 26.412 73.588 12.603 13.809
## C25 373 58 18 44 1578 23.805 76.195 18.011 5.794
Var12_A_Fərq <- DF_A_Y_1[,"Fərq"]
Var12_A_Fərq
## C22 C23 C24 C25
## 53.692 2.897 13.809 5.794
write.csv(Var12_A_Fərq, file = "Var12_A_Fərq.csv",row.names = F)
Beləliklə, yazılı tapşırıqlardan C22-dən- 53.692 %, C23-dən- 2.897%, C24-dən- 13.809% və C25-dən cəmi 5.794$ şagird sıfırdan fərqli, yəni 1, 2 yaxud 3 bal ala bilmişlər. Yəni, məsələn, bu variantda C23 tapşırığından 3 faizdən az şagird sıfırdan fərqli qiymət alib. Bu o deməkdirmi ki, bu tapşırıqda yerinə yetirilməsi tələb olunan bilik və bacarığı bütün azərbaycan bölməsi məzunlarının 3 faizdən azı bilir və yerinə yetirir? Əgər bu doğurdan da belədirsə 3 faizdən az uşağın bildiyini və bacardığını yoxlayan sual buraxılış testində olmalıdırmı? Bəlkə, problem, tapşırığın formasındadır, çünki qapalı tiplərə 97 faizə yaxın şagird cavab verir. Doğurdan da açıq tipli tapşırıqlarla elə bacarığı yoxlamaq mümkündür ki, onları qapalı və açıq kodlaşanlarla yoxlamaq olmur. Bunlar məsələn,isbat məsələləri, mühakimə yürütmək və sairə kimi idrakı bacarıqlardır. Bu sualların testin axırında olması da öz təsirin göstərə bilər. Yəni, şağirdlərin ona vaxtı çatmaz. Bütün hallarda bu tapşırıqlar çox ciddi sınaqdan keçməli idi (həm vaxt həm də cavabların faizi baxımından).
Yuxarıda qeyd etdik ki, cavab datasına ümumilikdə hər hansı bir model biçmək mümkün deyil. Buna baxmayaraq biz qapalı və açıq kodlaşan tapşırıqları birləşdirib bir dixotomik test düzəldək və ona model biçməyə çalışaq.
Var12_NA_D1D2 <- Var12_NA_T[1:21]
names(Var12_NA_D1D2)
## [1] "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12"
## [13] "C13" "C14" "C15" "C16" "C17" "C18" "C19" "C20" "C21"
Bu testdə olmayan cavabların faizini tapaq.
N_Var12_NA_D1D2 <-
sum(is.na(Var12_NA_D1D2))/(ncol(Var12_NA_D1D2)*nrow(Var12_NA_D1D2))*100
N_Var12_NA_D1D2 ## 21.8528
## [1] 21.8528
Bu dixotomik testdə olmayan cavablrın faizi 21.8528% -dir. Adətən, olmayan cavabların faizi 20-dən az olanda dataya model biçməyə (Müasir Test Nəzəriyyəsində) cəhd edirlər. Biz də fərq çox olmadığından (1.85%) bu dataya bir model biçməyə çalışacağıq.
Qabağa qaçaraq deyək ki, biz bu testin bir tapşırığını kənarlaşdırdıqdan sonra yerdə qalan 20 tapşırıqdan ibarət testə 4 parametrli Raş-Birnbaum modelini biçə biləcəyik.
Modelin qrulması üçün yeni düzəltdiyimiz testin (Var12_NA_D1D2) kodlaşmış versiyası lazım olacaqdır.
Var12_S_D1D2 <- Var12_S_T[1:21]
names(Var12_S_D1D2)
## [1] "C1" "C2" "C3" "C4" "C5" "C6" "C7" "C8" "C9" "C10" "C11" "C12"
## [13] "C13" "C14" "C15" "C16" "C17" "C18" "C19" "C20" "C21"
data <-Var12_S_D1D2
onepl_mod <- "F = 1 - 21
CONSTRAIN = (1 - 21, a1)"
onepl_fit <- mirt(data = Var12_S_D1D2, model = onepl_mod, SE = TRUE)
##
Iteration: 1, Log-Lik: -20054.560, Max-Change: 0.60930
Iteration: 2, Log-Lik: -19750.342, Max-Change: 0.11878
Iteration: 3, Log-Lik: -19679.200, Max-Change: 0.11374
Iteration: 4, Log-Lik: -19646.431, Max-Change: 0.05719
Iteration: 5, Log-Lik: -19633.136, Max-Change: 0.04192
Iteration: 6, Log-Lik: -19625.852, Max-Change: 0.02889
Iteration: 7, Log-Lik: -19622.630, Max-Change: 0.01985
Iteration: 8, Log-Lik: -19620.870, Max-Change: 0.01428
Iteration: 9, Log-Lik: -19619.912, Max-Change: 0.01156
Iteration: 10, Log-Lik: -19618.757, Max-Change: 0.01669
Iteration: 11, Log-Lik: -19618.620, Max-Change: 0.00419
Iteration: 12, Log-Lik: -19618.541, Max-Change: 0.00303
Iteration: 13, Log-Lik: -19618.346, Max-Change: 0.00252
Iteration: 14, Log-Lik: -19618.337, Max-Change: 0.00138
Iteration: 15, Log-Lik: -19618.329, Max-Change: 0.00110
Iteration: 16, Log-Lik: -19618.312, Max-Change: 0.00024
Iteration: 17, Log-Lik: -19618.311, Max-Change: 0.00015
Iteration: 18, Log-Lik: -19618.311, Max-Change: 0.00059
Iteration: 19, Log-Lik: -19618.310, Max-Change: 0.00013
Iteration: 20, Log-Lik: -19618.310, Max-Change: 0.00042
Iteration: 21, Log-Lik: -19618.309, Max-Change: 0.00008
##
## Calculating information matrix...
onepl_fit
##
## Call:
## mirt(data = Var12_S_D1D2, model = onepl_mod, SE = TRUE)
##
## Full-information item factor analysis with 1 factor(s).
## Converged within 1e-04 tolerance after 21 EM iterations.
## mirt version: 1.34
## M-step optimizer: BFGS
## EM acceleration: Ramsay
## Number of rectangular quadrature: 61
## Latent density type: Gaussian
##
## Information matrix estimated with method: Oakes
## Second-order test: model is a possible local maximum
## Condition number of information matrix = 34.46515
##
## Log-likelihood = -19618.31
## Estimated parameters: 42
## AIC = 39280.62; AICc = 39281.11
## BIC = 39404.61; SABIC = 39334.71
## G2 (2097129) = 10718.69, p = 1
## RMSEA = 0, CFI = NaN, TLI = NaN
onepl_params <- coef(onepl_fit, IRTpars = TRUE, simplify = TRUE)
onepl_params
## $items
## a b g u
## C1 1.505 0.242 0 1
## C2 1.505 0.272 0 1
## C3 1.505 0.431 0 1
## C4 1.505 0.363 0 1
## C5 1.505 0.502 0 1
## C6 1.505 0.194 0 1
## C7 1.505 -0.610 0 1
## C8 1.505 0.856 0 1
## C9 1.505 0.536 0 1
## C10 1.505 0.490 0 1
## C11 1.505 1.092 0 1
## C12 1.505 -0.049 0 1
## C13 1.505 0.997 0 1
## C14 1.505 2.082 0 1
## C15 1.505 2.436 0 1
## C16 1.505 0.710 0 1
## C17 1.505 2.107 0 1
## C18 1.505 2.566 0 1
## C19 1.505 1.805 0 1
## C20 1.505 1.582 0 1
## C21 1.505 1.203 0 1
##
## $means
## F
## 0
##
## $cov
## F
## F 1
onepl_items <- onepl_params$items
onepl_items
## a b g u
## C1 1.504695 0.24227901 0 1
## C2 1.504695 0.27218086 0 1
## C3 1.504695 0.43071983 0 1
## C4 1.504695 0.36309798 0 1
## C5 1.504695 0.50165143 0 1
## C6 1.504695 0.19405951 0 1
## C7 1.504695 -0.61037845 0 1
## C8 1.504695 0.85579667 0 1
## C9 1.504695 0.53569194 0 1
## C10 1.504695 0.48972384 0 1
## C11 1.504695 1.09188456 0 1
## C12 1.504695 -0.04923555 0 1
## C13 1.504695 0.99707589 0 1
## C14 1.504695 2.08192904 0 1
## C15 1.504695 2.43583711 0 1
## C16 1.504695 0.71001309 0 1
## C17 1.504695 2.10720278 0 1
## C18 1.504695 2.56638026 0 1
## C19 1.504695 1.80479844 0 1
## C20 1.504695 1.58212535 0 1
## C21 1.504695 1.20250734 0 1
onepl_se <- coef(onepl_fit, printSE = TRUE)
names(onepl_se)
## [1] "C1" "C2" "C3" "C4" "C5" "C6"
## [7] "C7" "C8" "C9" "C10" "C11" "C12"
## [13] "C13" "C14" "C15" "C16" "C17" "C18"
## [19] "C19" "C20" "C21" "GroupPars"
plot(onepl_fit, type = "trace", which.items = 1:21)
Bir parametrli logistik modeldə tapşırıqların ayırdetmə əmsalı a = 1.505 olur.
Hər bir tapşırığın xarakterik əyrisinə və məlumat funksiyasına ayrıca baxa bilərik. Biz modelə görə ən çətin və ən asan tapşırıqları seçək və onların xarakterik əyrilərinə və məlumat funksiyalarına baxaq. Bunun üçün tapşırıqları çətinlik dərəcələrinin artması sırası ilə düzək.
onepl_items <- as.data.frame(onepl_items)
onepl_items %>% arrange(b)
## a b g u
## C7 1.504695 -0.61037845 0 1
## C12 1.504695 -0.04923555 0 1
## C6 1.504695 0.19405951 0 1
## C1 1.504695 0.24227901 0 1
## C2 1.504695 0.27218086 0 1
## C4 1.504695 0.36309798 0 1
## C3 1.504695 0.43071983 0 1
## C10 1.504695 0.48972384 0 1
## C5 1.504695 0.50165143 0 1
## C9 1.504695 0.53569194 0 1
## C16 1.504695 0.71001309 0 1
## C8 1.504695 0.85579667 0 1
## C13 1.504695 0.99707589 0 1
## C11 1.504695 1.09188456 0 1
## C21 1.504695 1.20250734 0 1
## C20 1.504695 1.58212535 0 1
## C19 1.504695 1.80479844 0 1
## C14 1.504695 2.08192904 0 1
## C17 1.504695 2.10720278 0 1
## C15 1.504695 2.43583711 0 1
## C18 1.504695 2.56638026 0 1
Bu cədvəldən görünür ki, ən asan tapşırıq C7 (b = -0.61037845) və ən çətin tapşırıq C18-dir (2.56638026).
itemplot(onepl_fit, type = "trace", item = 7, lwd = 3)
itemplot(onepl_fit, type = "trace", item = 18, lwd = 3)
plot(onepl_fit, type = "infotrace", which.items = c(7, 18), lwd = 3)
plot(onepl_fit, type = "infoSE", theta_lim = c(-3, 3),lwd = 3)
plot(onepl_fit, type = "info", theta_lim = c(-3, 3), lwd = 3)
plot(onepl_fit, type = "SE", theta_lim = c(-3, 3), lwd = 3)
onepl_fit <- itemfit(onepl_fit, fit_stats = c("S_X2", "G2"),
impute = 10)
onepl_fit
## item G2 df.G2 RMSEA.G2 p.G2 S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
## 1 C1 81.072 8 0.066 0.000 40.174 16 0.027 0.001
## 2 C2 17.585 8 0.024 0.025 39.970 16 0.027 0.001
## 3 C3 64.662 8 0.058 0.000 46.505 16 0.030 0.000
## 4 C4 23.581 8 0.031 0.003 20.273 16 0.011 0.208
## 5 C5 38.132 8 0.043 0.000 69.808 16 0.040 0.000
## 6 C6 46.341 8 0.048 0.000 19.996 16 0.011 0.220
## 7 C7 130.153 8 0.086 0.000 64.942 14 0.042 0.000
## 8 C8 149.297 8 0.092 0.000 273.470 17 0.085 0.000
## 9 C9 25.037 8 0.032 0.002 26.772 16 0.018 0.044
## 10 C10 33.934 8 0.040 0.000 28.602 16 0.020 0.027
## 11 C11 379.281 8 0.150 0.000 691.429 17 0.138 0.000
## 12 C12 175.329 7 0.108 0.000 103.244 15 0.053 0.000
## 13 C13 39.169 8 0.043 0.000 66.994 17 0.038 0.000
## 14 C14 6.526 7 0.000 0.480 7.234 17 0.000 0.980
## 15 C15 21.267 4 0.046 0.000 22.527 17 0.013 0.165
## 16 C16 153.185 7 0.100 0.000 110.688 16 0.053 0.000
## 17 C17 86.053 2 0.142 0.000 84.274 17 0.044 0.000
## 18 C18 6.533 4 0.017 0.163 16.998 17 0.000 0.455
## 19 C19 57.443 4 0.080 0.000 52.307 18 0.030 0.000
## 20 C20 29.403 7 0.039 0.000 25.094 17 0.015 0.093
## 21 C21 157.554 4 0.136 0.000 139.014 17 0.059 0.000
Bu cədvəldə biz iki sütuna baxacayıq p.G2 və p.S_X2. Əgər, tapşırığın önündəki bu iki göstərici 0.05-dən böyükdürsə onda tapşırıq bu modelə biçilmiş hesab ediləcəkl.
Cədvəldən görünür ki, bu modelə çox az tapşırıq biçilə biçilir.
Raş modeli ilə birparametrli logistik modelinin fərqi budur ki, Raş modelində tapşırıqların hamısının ayırdetmə əmsalı 1(bir) qəbul edilir.
data <-Var12_S_D1D2
rasch_mod <- "F = 1 - 21"
rasch_fit <- mirt(data = data, model = rasch_mod,
itemtype = "Rasch", SE = TRUE)
##
Iteration: 1, Log-Lik: -19866.685, Max-Change: 0.45232
Iteration: 2, Log-Lik: -19688.824, Max-Change: 0.35609
Iteration: 3, Log-Lik: -19638.145, Max-Change: 0.21515
Iteration: 4, Log-Lik: -19624.673, Max-Change: 0.11510
Iteration: 5, Log-Lik: -19621.039, Max-Change: 0.05806
Iteration: 6, Log-Lik: -19619.884, Max-Change: 0.02861
Iteration: 7, Log-Lik: -19619.242, Max-Change: 0.01572
Iteration: 8, Log-Lik: -19618.990, Max-Change: 0.00720
Iteration: 9, Log-Lik: -19618.821, Max-Change: 0.00567
Iteration: 10, Log-Lik: -19618.426, Max-Change: 0.00472
Iteration: 11, Log-Lik: -19618.400, Max-Change: 0.00185
Iteration: 12, Log-Lik: -19618.385, Max-Change: 0.00163
Iteration: 13, Log-Lik: -19618.342, Max-Change: 0.00168
Iteration: 14, Log-Lik: -19618.341, Max-Change: 0.00047
Iteration: 15, Log-Lik: -19618.340, Max-Change: 0.00027
Iteration: 16, Log-Lik: -19618.339, Max-Change: 0.00026
Iteration: 17, Log-Lik: -19618.339, Max-Change: 0.00011
Iteration: 18, Log-Lik: -19618.339, Max-Change: 0.00010
##
## Calculating information matrix...
rasch_fit
##
## Call:
## mirt(data = data, model = rasch_mod, itemtype = "Rasch", SE = TRUE)
##
## Full-information item factor analysis with 1 factor(s).
## Converged within 1e-04 tolerance after 18 EM iterations.
## mirt version: 1.34
## M-step optimizer: nlminb
## EM acceleration: Ramsay
## Number of rectangular quadrature: 61
## Latent density type: Gaussian
##
## Information matrix estimated with method: Oakes
## Second-order test: model is a possible local maximum
## Condition number of information matrix = 10.91217
##
## Log-likelihood = -19618.34
## Estimated parameters: 22
## AIC = 39280.68; AICc = 39281.17
## BIC = 39404.67; SABIC = 39334.77
## G2 (2097129) = 10718.75, p = 1
## RMSEA = 0, CFI = NaN, TLI = NaN
rasch_params <- coef(rasch_fit, IRTpars = TRUE, simplify = TRUE)
Yenə də tapşırıqları çətinlik dərəcələrinin artması sırası ilə düzək
rasch_items <- as.data.frame(rasch_params$items)
rasch_items %>% arrange(b)
## a b g u
## C7 1 -0.92181748 0 1
## C12 1 -0.07765845 0 1
## C6 1 0.28835211 0 1
## C1 1 0.36089166 0 1
## C2 1 0.40587514 0 1
## C4 1 0.54264564 0 1
## C3 1 0.64437056 0 1
## C10 1 0.73313048 0 1
## C5 1 0.75107308 0 1
## C9 1 0.80227990 0 1
## C16 1 1.06450922 0 1
## C8 1 1.28381688 0 1
## C13 1 1.49635853 0 1
## C11 1 1.63899127 0 1
## C21 1 1.80541146 0 1
## C20 1 2.37640617 0 1
## C19 1 2.71127728 0 1
## C14 1 3.12806212 0 1
## C17 1 3.16606847 0 1
## C15 1 3.66013414 0 1
## C18 1 3.85635511 0 1
Var12_S_D1D2_Rasch_Chetin <-
row.names(rasch_items)[rasch_items$b >3]
Var12_S_D1D2_Rasch_Chetin
## [1] "C14" "C15" "C17" "C18"
write.csv(Var12_S_D1D2_Rasch_Chetin, file =
"Var12_S_D1D2_Rasch_Chetin.csv")
Cədvəldən görünür ki, hətta 4 tapşırığın (C14. C15, C17, C18) çətinlik dərəcəsi 3 logitdən çoxdur. Yəni, demək olar ki, şagirdlərin qabiliyyətləri yerləşən diapazondan (-3, 3)-dən kənara düşür.
Bizim yuxarıdakı tab_Var12_S_Q2_Item_An cədvəlindən həmin tapşırıqlara cavab verənlərin faizinə baxaq.
tab_Var12_S_Q2_Item_An[c(1,2,4,5), 1]
## [1] 0.09 0.06 0.09 0.05
Həmin tapşırıqlar cavab verənlərin faizi C14-9%ç C15-6%ç C17-9$ və C18-5% olmuşdur.
Raş modeli üzrə də ən asan C7, ən çətin C18-dir. Onların xarakterik əyrisi və məlumat funksiyası aşağıdakı kimdir.
itemplot(rasch_fit, type = "trace", item = 7, lwd = 3)
itemplot(rasch_fit, type = "trace", item = 18, lwd = 3)
plot(rasch_fit, type = "infotrace", which.items = c(7, 18), lwd = 3)
plot(rasch_fit, type = "infoSE", theta_lim = c(-3, 3),lwd = 3)
plot(rasch_fit, type = "info", theta_lim = c(-3, 3), lwd = 3)
plot(rasch_fit, type = "SE", theta_lim = c(-3, 3), lwd = 3)
rasch_itemfit <- itemfit(rasch_fit, fit_stats = c("S_X2", "G2"),
impute = 10)
rasch_itemfit
## item G2 df.G2 RMSEA.G2 p.G2 S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
## 1 C1 90.288 9 0.066 0.000 40.191 16 0.027 0.001
## 2 C2 15.599 9 0.019 0.076 39.943 16 0.027 0.001
## 3 C3 66.461 9 0.056 0.000 46.522 16 0.030 0.000
## 4 C4 25.011 8 0.032 0.002 20.274 16 0.011 0.208
## 5 C5 40.143 9 0.041 0.000 69.773 16 0.040 0.000
## 6 C6 66.367 9 0.055 0.000 20.005 16 0.011 0.220
## 7 C7 116.329 9 0.076 0.000 64.929 14 0.042 0.000
## 8 C8 181.637 9 0.096 0.000 273.358 17 0.085 0.000
## 9 C9 23.083 9 0.027 0.006 26.751 16 0.018 0.044
## 10 C10 28.892 9 0.033 0.001 28.606 16 0.020 0.027
## 11 C11 371.230 9 0.139 0.000 691.130 17 0.138 0.000
## 12 C12 175.002 8 0.100 0.000 103.263 15 0.053 0.000
## 13 C13 33.512 9 0.036 0.000 66.958 17 0.038 0.000
## 14 C14 6.211 8 0.000 0.624 7.243 17 0.000 0.980
## 15 C15 19.747 5 0.038 0.001 22.540 17 0.013 0.165
## 16 C16 151.471 8 0.093 0.000 110.714 16 0.053 0.000
## 17 C17 64.937 2 0.123 0.000 84.289 17 0.044 0.000
## 18 C18 8.804 5 0.019 0.117 16.991 17 0.000 0.455
## 19 C19 53.900 5 0.069 0.000 52.315 18 0.030 0.000
## 20 C20 19.504 8 0.026 0.012 25.097 17 0.015 0.093
## 21 C21 155.328 5 0.121 0.000 139.049 17 0.059 0.000
Burda da biçilmənin vəziyyəti yaxşı deyıl. Əslində, birparametrlidən yaxşı olmalı da deyil. Çünki, birparametrlidə ayırdetmə ortalama götürüldüyü halda burada əvvəlcədə birə bərabər qəbul edilir. Yəni, bütün tapşırıqların xarakterik əyrilərinin orta nöqtəsində toxunanın bucaq əmsalı bir olur.
data <-Var12_S_D1D2
twopl_mod <- "F = 1 - 21"
twopl_fit <- mirt(data = data, model = twopl_mod,
itemtype = "2PL", SE = TRUE)
##
Iteration: 1, Log-Lik: -20054.560, Max-Change: 1.68864
Iteration: 2, Log-Lik: -19161.970, Max-Change: 1.65421
Iteration: 3, Log-Lik: -19050.999, Max-Change: 0.40335
Iteration: 4, Log-Lik: -18985.982, Max-Change: 0.29127
Iteration: 5, Log-Lik: -18961.683, Max-Change: 0.22618
Iteration: 6, Log-Lik: -18948.635, Max-Change: 0.18346
Iteration: 7, Log-Lik: -18941.357, Max-Change: 0.11461
Iteration: 8, Log-Lik: -18936.600, Max-Change: 0.08792
Iteration: 9, Log-Lik: -18933.913, Max-Change: 0.06357
Iteration: 10, Log-Lik: -18932.609, Max-Change: 0.04334
Iteration: 11, Log-Lik: -18931.298, Max-Change: 0.03083
Iteration: 12, Log-Lik: -18930.436, Max-Change: 0.02155
Iteration: 13, Log-Lik: -18929.484, Max-Change: 0.02006
Iteration: 14, Log-Lik: -18929.171, Max-Change: 0.01488
Iteration: 15, Log-Lik: -18928.947, Max-Change: 0.01171
Iteration: 16, Log-Lik: -18928.519, Max-Change: 0.00492
Iteration: 17, Log-Lik: -18928.454, Max-Change: 0.00480
Iteration: 18, Log-Lik: -18928.401, Max-Change: 0.00446
Iteration: 19, Log-Lik: -18928.220, Max-Change: 0.00590
Iteration: 20, Log-Lik: -18928.212, Max-Change: 0.00130
Iteration: 21, Log-Lik: -18928.207, Max-Change: 0.00229
Iteration: 22, Log-Lik: -18928.195, Max-Change: 0.00118
Iteration: 23, Log-Lik: -18928.193, Max-Change: 0.00114
Iteration: 24, Log-Lik: -18928.191, Max-Change: 0.00110
Iteration: 25, Log-Lik: -18928.185, Max-Change: 0.00032
Iteration: 26, Log-Lik: -18928.185, Max-Change: 0.00066
Iteration: 27, Log-Lik: -18928.185, Max-Change: 0.00023
Iteration: 28, Log-Lik: -18928.185, Max-Change: 0.00019
Iteration: 29, Log-Lik: -18928.185, Max-Change: 0.00062
Iteration: 30, Log-Lik: -18928.185, Max-Change: 0.00014
Iteration: 31, Log-Lik: -18928.185, Max-Change: 0.00012
Iteration: 32, Log-Lik: -18928.185, Max-Change: 0.00055
Iteration: 33, Log-Lik: -18928.185, Max-Change: 0.00053
Iteration: 34, Log-Lik: -18928.185, Max-Change: 0.00032
Iteration: 35, Log-Lik: -18928.185, Max-Change: 0.00047
Iteration: 36, Log-Lik: -18928.184, Max-Change: 0.00022
Iteration: 37, Log-Lik: -18928.184, Max-Change: 0.00017
Iteration: 38, Log-Lik: -18928.184, Max-Change: 0.00046
Iteration: 39, Log-Lik: -18928.184, Max-Change: 0.00013
Iteration: 40, Log-Lik: -18928.184, Max-Change: 0.00011
Iteration: 41, Log-Lik: -18928.184, Max-Change: 0.00043
Iteration: 42, Log-Lik: -18928.184, Max-Change: 0.00043
Iteration: 43, Log-Lik: -18928.184, Max-Change: 0.00024
Iteration: 44, Log-Lik: -18928.184, Max-Change: 0.00040
Iteration: 45, Log-Lik: -18928.184, Max-Change: 0.00017
Iteration: 46, Log-Lik: -18928.184, Max-Change: 0.00014
Iteration: 47, Log-Lik: -18928.184, Max-Change: 0.00039
Iteration: 48, Log-Lik: -18928.184, Max-Change: 0.00010
Iteration: 49, Log-Lik: -18928.184, Max-Change: 0.00041
Iteration: 50, Log-Lik: -18928.184, Max-Change: 0.00021
Iteration: 51, Log-Lik: -18928.184, Max-Change: 0.00037
Iteration: 52, Log-Lik: -18928.184, Max-Change: 0.00026
Iteration: 53, Log-Lik: -18928.184, Max-Change: 0.00036
Iteration: 54, Log-Lik: -18928.184, Max-Change: 0.00019
Iteration: 55, Log-Lik: -18928.184, Max-Change: 0.00014
Iteration: 56, Log-Lik: -18928.184, Max-Change: 0.00035
Iteration: 57, Log-Lik: -18928.184, Max-Change: 0.00011
Iteration: 58, Log-Lik: -18928.184, Max-Change: 0.00008
##
## Calculating information matrix...
twopl_params <- coef(twopl_fit, IRTpars = TRUE, simplify = TRUE)
twopl_items <- as.data.frame(twopl_params$items)
twopl_items %>% arrange(b)
## a b g u
## C7 2.0378806 -0.54512054 0 1
## C12 2.5704663 -0.07207992 0 1
## C6 1.5969879 0.18974782 0 1
## C1 1.9170964 0.20546911 0 1
## C2 1.1436083 0.34455933 0 1
## C4 1.4100166 0.38720552 0 1
## C3 1.8134980 0.38874047 0 1
## C10 1.4550345 0.50819454 0 1
## C16 2.6325913 0.54702516 0 1
## C9 1.3230972 0.59083845 0 1
## C5 1.0033747 0.67628795 0 1
## C21 3.7274616 0.88519183 0 1
## C13 1.1198446 1.20722612 0 1
## C20 1.8622581 1.43087482 0 1
## C19 2.5541594 1.46111065 0 1
## C17 3.8863714 1.56635832 0 1
## C8 0.6282160 1.63549789 0 1
## C14 1.6470888 1.98248311 0 1
## C15 2.2692816 2.02867240 0 1
## C18 1.5595133 2.50201421 0 1
## C11 0.2481975 4.89386390 0 1
Var12_S_D1D2_twopl_Chetin <-
row.names(twopl_items)[twopl_items$b >3]
Var12_S_D1D2_twopl_Chetin
## [1] "C11"
write.csv(Var12_S_D1D2_twopl_Chetin, file =
"Var12_S_D1D2_twopl_Chetin.csv")
Bu modeldə yalnız C11 tapşırığının çətinlik dərəcəsi 3-dən çox olur. Bu tapşırıq qapalı tapşırıqlar içində ən çətinıdir. Ona cəmi 24.5% şagird cavab verib
two_itemfit <- itemfit(twopl_fit, fit_stats = c("S_X2", "G2"),
impute = 10)
two_itemfit
## item G2 df.G2 RMSEA.G2 p.G2 S_X2 df.S_X2 RMSEA.S_X2 p.S_X2
## 1 C1 15.128 7 0.024 0.034 16.246 15 0.006 0.366
## 2 C2 16.660 8 0.023 0.034 19.232 17 0.008 0.315
## 3 C3 21.275 8 0.028 0.006 38.108 15 0.027 0.001
## 4 C4 15.135 8 0.021 0.057 21.280 16 0.013 0.168
## 5 C5 22.555 8 0.030 0.004 22.910 17 0.013 0.152
## 6 C6 31.103 8 0.037 0.000 17.979 15 0.010 0.264
## 7 C7 29.637 6 0.044 0.000 18.539 12 0.016 0.100
## 8 C8 37.253 8 0.042 0.000 33.024 18 0.020 0.017
## 9 C9 15.560 8 0.021 0.049 20.098 17 0.009 0.269
## 10 C10 37.596 8 0.042 0.000 30.086 16 0.021 0.018
## 11 C11 16.300 8 0.022 0.038 33.911 18 0.021 0.013
## 12 C12 45.316 6 0.056 0.000 14.431 12 0.010 0.274
## 13 C13 8.979 8 0.008 0.344 30.960 17 0.020 0.020
## 14 C14 6.352 6 0.005 0.385 8.443 17 0.000 0.956
## 15 C15 3.031 2 0.016 0.220 16.119 16 0.002 0.445
## 16 C16 48.311 6 0.058 0.000 53.757 14 0.037 0.000
## 17 C17 0.307 1 0.000 0.579 23.606 10 0.026 0.009
## 18 C18 7.931 4 0.022 0.094 18.944 17 0.007 0.332
## 19 C19 11.512 4 0.030 0.021 42.503 15 0.030 0.000
## 20 C20 11.779 7 0.018 0.108 21.515 16 0.013 0.160
## 21 C21 4.037 3 0.013 0.257 23.874 12 0.022 0.021
Buradan bizi maraqlandıran sütunlarda vəziyyət yaxşılaşır.
data <-Var12_S_D1D2
threepl_mod <- "F = 1 - 21"
threepl_fit <- mirt(data = data, model = threepl_mod,
itemtype = "3PL", SE = TRUE)
##
Iteration: 1, Log-Lik: -21937.238, Max-Change: 4.62650
Iteration: 2, Log-Lik: -19183.925, Max-Change: 2.25641
Iteration: 3, Log-Lik: -18886.845, Max-Change: 0.83199
Iteration: 4, Log-Lik: -18800.996, Max-Change: 0.37715
Iteration: 5, Log-Lik: -18761.734, Max-Change: 0.33598
Iteration: 6, Log-Lik: -18741.608, Max-Change: 0.21096
Iteration: 7, Log-Lik: -18730.060, Max-Change: 0.16020
Iteration: 8, Log-Lik: -18723.853, Max-Change: 0.12023
Iteration: 9, Log-Lik: -18720.021, Max-Change: 0.09249
Iteration: 10, Log-Lik: -18714.442, Max-Change: 0.22126
Iteration: 11, Log-Lik: -18713.336, Max-Change: 0.16068
Iteration: 12, Log-Lik: -18713.089, Max-Change: 1.22573
Iteration: 13, Log-Lik: -18712.691, Max-Change: 0.05343
Iteration: 14, Log-Lik: -18712.596, Max-Change: 0.02839
Iteration: 15, Log-Lik: -18712.537, Max-Change: 0.03439
Iteration: 16, Log-Lik: -18712.377, Max-Change: 0.02333
Iteration: 17, Log-Lik: -18712.354, Max-Change: 0.02247
Iteration: 18, Log-Lik: -18712.336, Max-Change: 0.01129
Iteration: 19, Log-Lik: -18712.330, Max-Change: 0.01106
Iteration: 20, Log-Lik: -18712.316, Max-Change: 0.01050
Iteration: 21, Log-Lik: -18712.304, Max-Change: 0.00994
Iteration: 22, Log-Lik: -18712.252, Max-Change: 0.00343
Iteration: 23, Log-Lik: -18712.249, Max-Change: 0.00318
Iteration: 24, Log-Lik: -18712.247, Max-Change: 0.00306
Iteration: 25, Log-Lik: -18712.235, Max-Change: 0.00145
Iteration: 26, Log-Lik: -18712.233, Max-Change: 0.00121
Iteration: 27, Log-Lik: -18712.232, Max-Change: 0.00147
Iteration: 28, Log-Lik: -18712.230, Max-Change: 0.00097
Iteration: 29, Log-Lik: -18712.229, Max-Change: 0.00147
Iteration: 30, Log-Lik: -18712.229, Max-Change: 0.00080
Iteration: 31, Log-Lik: -18712.228, Max-Change: 0.00070
Iteration: 32, Log-Lik: -18712.227, Max-Change: 0.00095
Iteration: 33, Log-Lik: -18712.227, Max-Change: 0.00144
Iteration: 34, Log-Lik: -18712.227, Max-Change: 0.00137
Iteration: 35, Log-Lik: -18712.226, Max-Change: 0.00042
Iteration: 36, Log-Lik: -18712.226, Max-Change: 0.00103
Iteration: 37, Log-Lik: -18712.226, Max-Change: 0.00313
Iteration: 38, Log-Lik: -18712.225, Max-Change: 0.00021
Iteration: 39, Log-Lik: -18712.225, Max-Change: 0.00060
Iteration: 40, Log-Lik: -18712.225, Max-Change: 0.00115
Iteration: 41, Log-Lik: -18712.225, Max-Change: 0.00035
Iteration: 42, Log-Lik: -18712.225, Max-Change: 0.00087
Iteration: 43, Log-Lik: -18712.225, Max-Change: 0.00083
Iteration: 44, Log-Lik: -18712.224, Max-Change: 0.00070
Iteration: 45, Log-Lik: -18712.224, Max-Change: 0.00107
Iteration: 46, Log-Lik: -18712.224, Max-Change: 0.00084
Iteration: 47, Log-Lik: -18712.224, Max-Change: 0.00026
Iteration: 48, Log-Lik: -18712.224, Max-Change: 0.00064
Iteration: 49, Log-Lik: -18712.224, Max-Change: 0.00032
Iteration: 50, Log-Lik: -18712.224, Max-Change: 0.00080
Iteration: 51, Log-Lik: -18712.224, Max-Change: 0.00024
Iteration: 52, Log-Lik: -18712.224, Max-Change: 0.00108
Iteration: 53, Log-Lik: -18712.224, Max-Change: 0.00033
Iteration: 54, Log-Lik: -18712.223, Max-Change: 0.00082
Iteration: 55, Log-Lik: -18712.224, Max-Change: 0.00044
Iteration: 56, Log-Lik: -18712.223, Max-Change: 0.00109
Iteration: 57, Log-Lik: -18712.223, Max-Change: 0.00033
Iteration: 58, Log-Lik: -18712.223, Max-Change: 0.00029
Iteration: 59, Log-Lik: -18712.223, Max-Change: 0.00073
Iteration: 60, Log-Lik: -18712.223, Max-Change: 0.00111
Iteration: 61, Log-Lik: -18712.223, Max-Change: 0.00083
Iteration: 62, Log-Lik: -18712.223, Max-Change: 0.00025
Iteration: 63, Log-Lik: -18712.223, Max-Change: 0.00062
Iteration: 64, Log-Lik: -18712.223, Max-Change: 0.00032
Iteration: 65, Log-Lik: -18712.223, Max-Change: 0.00079
Iteration: 66, Log-Lik: -18712.223, Max-Change: 0.00024
Iteration: 67, Log-Lik: -18712.223, Max-Change: 0.00106
Iteration: 68, Log-Lik: -18712.223, Max-Change: 0.00033
Iteration: 69, Log-Lik: -18712.223, Max-Change: 0.00081
Iteration: 70, Log-Lik: -18712.223, Max-Change: 0.00044
Iteration: 71, Log-Lik: -18712.223, Max-Change: 0.00108
Iteration: 72, Log-Lik: -18712.223, Max-Change: 0.00033
Iteration: 73, Log-Lik: -18712.223, Max-Change: 0.00029
Iteration: 74, Log-Lik: -18712.223, Max-Change: 0.00072
Iteration: 75, Log-Lik: -18712.222, Max-Change: 0.00110
Iteration: 76, Log-Lik: -18712.222, Max-Change: 0.00083
Iteration: 77, Log-Lik: -18712.222, Max-Change: 0.00025
##
## Calculating information matrix...
threepl_params <- coef(threepl_fit, IRTpars = TRUE,
simplify = TRUE)
threepl_items <- as.data.frame(threepl_params$items)
threepl_items %>% arrange(b)
## a b g u
## C7 2.812440 -0.3091107 1.221084e-01 1
## C12 3.728359 0.1580947 1.009097e-01 1
## C1 3.460152 0.5195285 1.439665e-01 1
## C16 2.894482 0.5956098 6.984877e-05 1
## C6 3.700756 0.6342436 2.065920e-01 1
## C3 3.716790 0.6617889 1.317555e-01 1
## C9 1.856378 0.7618736 8.518739e-02 1
## C4 3.203495 0.7739586 1.861674e-01 1
## C2 2.329650 0.8151448 2.111181e-01 1
## C10 3.829095 0.8326962 1.695600e-01 1
## C21 4.240082 0.8985623 8.208752e-05 1
## C5 2.467795 1.0586205 2.018142e-01 1
## C13 2.465622 1.2584210 1.121509e-01 1
## C20 2.297033 1.3418243 6.991597e-03 1
## C19 3.015983 1.3624986 2.094557e-05 1
## C17 4.757662 1.4379197 1.559913e-05 1
## C8 3.212363 1.5357398 2.078204e-01 1
## C14 2.467673 1.7294150 1.340328e-02 1
## C15 2.730302 1.8203907 5.573459e-05 1
## C18 2.130129 2.1534073 5.867041e-03 1
## C11 2.252342 2.3882900 2.081694e-01 1
Üçparametrli logistik model üzrə də ən asan C7, ən çətin C11-dir. Onların xarakterik əyrisi və məlumat funksiyası aşağıdakı kimdir.
itemplot(threepl_fit, type = "trace", item = 7, lwd = 3)
itemplot(threepl_fit, type = "trace", item = 11, lwd = 3)
plot(threepl_fit, type = "infotrace", which.items = c(7, 11), lwd = 3)
plot(threepl_fit, type = "infoSE", theta_lim = c(-3, 3),lwd = 3)
plot(threepl_fit, type = "info", theta_lim = c(-3, 3), lwd = 3)
plot(threepl_fit, type = "SE", theta_lim = c(-3, 3), lwd = 3)
three_itemfit <- itemfit(threepl_fit, fit_stats = c("S_X2", "G2"),
impute = 10)
three_itemfit <- as.data.frame(three_itemfit)
three_itemfit
## item G2 df.G2 RMSEA.G2 p.G2 S_X2 df.S_X2 RMSEA.S_X2
## 1 C1 53.4527496 6 0.06181159 9.510507e-10 12.717897 13 0.000000000
## 2 C2 50.5602484 6 0.05989809 3.629399e-09 19.448636 15 0.011969682
## 3 C3 27.4176923 7 0.03753783 2.802356e-04 22.253111 13 0.018543301
## 4 C4 21.5615348 7 0.03170074 3.022141e-03 13.384598 14 0.000000000
## 5 C5 32.6335973 7 0.04206013 3.097809e-05 14.557311 16 0.000000000
## 6 C6 38.8719540 7 0.04689971 2.067526e-06 10.156422 13 0.000000000
## 7 C7 359.0148558 4 0.20706567 1.983397e-76 9.630200 9 0.005816112
## 8 C8 9.0890978 7 0.01200730 2.463224e-01 6.320386 16 0.000000000
## 9 C9 110.3568898 5 0.10089306 3.444098e-22 15.504534 16 0.000000000
## 10 C10 36.6784091 7 0.04525704 5.396512e-06 18.663738 14 0.012685800
## 11 C11 27.4722587 7 0.03758795 2.739505e-04 11.287147 17 0.000000000
## 12 C12 85.9633053 4 0.09949347 9.474951e-18 8.376278 11 0.000000000
## 13 C13 13.9714129 7 0.02193442 5.169215e-02 23.595002 16 0.015143240
## 14 C14 8.5911960 6 0.01444406 1.979075e-01 6.789681 16 0.000000000
## 15 C15 2.7261873 1 0.02887745 9.871469e-02 11.717574 14 0.000000000
## 16 C16 41.3708066 3 0.07860581 5.455965e-09 27.585729 14 0.021651714
## 17 C17 0.5809115 0 NaN NaN 18.739291 9 0.022864265
## 18 C18 7.9416933 3 0.02820929 4.723223e-02 15.971467 16 0.000000000
## 19 C19 7.0720564 2 0.03500192 2.912879e-02 23.200920 14 0.017818307
## 20 C20 7.1450497 5 0.01439622 2.100744e-01 15.938947 15 0.005499077
## 21 C21 5.5105993 2 0.02911994 6.358996e-02 13.930238 12 0.008815149
## p.S_X2
## 1 0.46983067
## 2 0.19411876
## 3 0.05156196
## 4 0.49648852
## 5 0.55726856
## 6 0.68109588
## 7 0.38124323
## 8 0.98425043
## 9 0.48804180
## 10 0.17819999
## 11 0.84125323
## 12 0.67925337
## 13 0.09873082
## 14 0.97710502
## 15 0.62897217
## 16 0.01613964
## 17 0.02750319
## 18 0.45495400
## 19 0.05707790
## 20 0.38612084
## 21 0.30518533
three_itemfit$item[three_itemfit$p.S_X2 < 0.05] ## C16, C17 yaxşı bicilmir
## [1] "C16" "C17"
Bu modeldə cəmi iki tapşırıq C16 və C17 yaxşı bicilmir.
data <-Var12_S_D1D2
fourpl_mod <- "F = 1 - 21"
fourpl_fit <- mirt(data = data, model = fourpl_mod,
itemtype = "4PL", SE = TRUE)
##
Iteration: 1, Log-Lik: -22114.462, Max-Change: 3.07344
Iteration: 2, Log-Lik: -19210.721, Max-Change: 1.43655
Iteration: 3, Log-Lik: -18884.750, Max-Change: 1.11420
Iteration: 4, Log-Lik: -18781.738, Max-Change: 0.76578
Iteration: 5, Log-Lik: -18736.988, Max-Change: 0.52030
Iteration: 6, Log-Lik: -18713.529, Max-Change: 0.42118
Iteration: 7, Log-Lik: -18701.506, Max-Change: 0.34390
Iteration: 8, Log-Lik: -18694.609, Max-Change: 0.30427
Iteration: 9, Log-Lik: -18690.390, Max-Change: 0.26267
Iteration: 10, Log-Lik: -18683.747, Max-Change: 0.21340
Iteration: 11, Log-Lik: -18682.457, Max-Change: 0.25795
Iteration: 12, Log-Lik: -18681.986, Max-Change: 0.60066
Iteration: 13, Log-Lik: -18681.374, Max-Change: 0.21746
Iteration: 14, Log-Lik: -18681.181, Max-Change: 0.56772
Iteration: 15, Log-Lik: -18680.939, Max-Change: 0.41931
Iteration: 16, Log-Lik: -18680.770, Max-Change: 0.23223
Iteration: 17, Log-Lik: -18680.682, Max-Change: 0.06666
Iteration: 18, Log-Lik: -18680.639, Max-Change: 0.02592
Iteration: 19, Log-Lik: -18680.628, Max-Change: 0.02552
Iteration: 20, Log-Lik: -18680.602, Max-Change: 0.02489
Iteration: 21, Log-Lik: -18680.579, Max-Change: 0.02400
Iteration: 22, Log-Lik: -18680.477, Max-Change: 0.02337
Iteration: 23, Log-Lik: -18680.465, Max-Change: 0.02034
Iteration: 24, Log-Lik: -18680.455, Max-Change: 0.01929
Iteration: 25, Log-Lik: -18680.406, Max-Change: 0.01856
Iteration: 26, Log-Lik: -18680.398, Max-Change: 0.01828
Iteration: 27, Log-Lik: -18680.392, Max-Change: 0.01925
Iteration: 28, Log-Lik: -18680.390, Max-Change: 0.64251
Iteration: 29, Log-Lik: -18680.304, Max-Change: 0.14816
Iteration: 30, Log-Lik: -18680.270, Max-Change: 0.01624
Iteration: 31, Log-Lik: -18680.270, Max-Change: 0.01633
Iteration: 32, Log-Lik: -18680.265, Max-Change: 0.01580
Iteration: 33, Log-Lik: -18680.261, Max-Change: 0.02295
Iteration: 34, Log-Lik: -18680.248, Max-Change: 0.00491
Iteration: 35, Log-Lik: -18680.244, Max-Change: 0.00549
Iteration: 36, Log-Lik: -18680.243, Max-Change: 0.00120
Iteration: 37, Log-Lik: -18680.243, Max-Change: 0.00101
Iteration: 38, Log-Lik: -18680.243, Max-Change: 0.00106
Iteration: 39, Log-Lik: -18680.242, Max-Change: 0.00105
Iteration: 40, Log-Lik: -18680.241, Max-Change: 0.00108
Iteration: 41, Log-Lik: -18680.241, Max-Change: 0.00100
Iteration: 42, Log-Lik: -18680.240, Max-Change: 0.00103
Iteration: 43, Log-Lik: -18680.240, Max-Change: 0.00101
Iteration: 44, Log-Lik: -18680.240, Max-Change: 0.00142
Iteration: 45, Log-Lik: -18680.240, Max-Change: 0.00045
##
## Calculating information matrix...
fourpl_params <- coef(fourpl_fit, IRTpars = TRUE,
simplify = TRUE)
fourpl_items <- as.data.frame(fourpl_params$items)
fourpl_items %>% arrange(b)
## a b g u
## C7 2.756933 -0.3763127 7.142437e-02 0.9994868
## C12 3.861020 0.1618940 1.051806e-01 0.9998864
## C16 3.738672 0.4710500 6.640029e-05 0.9199185
## C1 3.956347 0.5085010 1.542656e-01 0.9887821
## C9 3.069161 0.5944078 1.279797e-01 0.8606828
## C6 3.801747 0.6134119 2.061505e-01 0.9989153
## C3 4.214281 0.6253077 1.355808e-01 0.9824864
## C2 3.307341 0.6922798 2.304693e-01 0.9151861
## C10 6.757664 0.7228397 1.810251e-01 0.9197182
## C4 3.449107 0.7391545 1.887704e-01 0.9864461
## C21 4.321807 0.8720795 4.335984e-05 0.9992974
## C5 2.467362 1.0374359 2.006435e-01 0.9992879
## C19 4.249031 1.0619783 1.290487e-05 0.7452319
## C13 2.788450 1.1542200 1.165333e-01 0.9275735
## C20 2.229354 1.3304033 5.019432e-03 0.9944651
## C8 4.472624 1.3401901 2.124558e-01 0.8454639
## C17 4.973434 1.3807008 8.326821e-06 0.9427491
## C14 2.388064 1.7360107 1.290722e-02 0.9895039
## C15 2.613991 1.8430793 2.351874e-05 0.9902598
## C11 4.200449 1.8774400 2.143120e-01 0.6384845
## C18 2.051365 2.1934649 5.537077e-03 0.9949366
Var12_S_D1D2_fourpl<-fourpl_items %>% arrange(g)
Dördparametrli logistik model üzrə də ən asan C7, ən çətin C18-dir. Onların xarakterik əyrisi və məlumat funksiyası aşağıdakı kimdir.
itemplot(fourpl_fit, type = "trace", item = 7, lwd = 3)
itemplot(fourpl_fit, type = "trace", item = 18, lwd = 3)
plot(fourpl_fit, type = "infotrace", which.items = c(7, 18), lwd = 3)
plot(fourpl_fit, type = "infoSE", theta_lim = c(-3, 3),lwd = 3)
plot(fourpl_fit, type = "info", theta_lim = c(-3, 3), lwd = 3)
plot(fourpl_fit, type = "SE", theta_lim = c(-3, 3), lwd = 3)
four_itemfit <- itemfit(fourpl_fit, fit_stats = c("S_X2", "G2"),
impute = 10)
four_itemfit <- as.data.frame(four_itemfit)
four_itemfit$item[four_itemfit$p.S_X2 < 0.05] # yalnız C3, 17-ə baxmaqolar
## [1] "C3" "C17"
Bizim düzəltdiyimiz Var12_S_D1D2 -datası iki növ tapşırıqların birləşdirilməsindən alınmışdır. Onlar qapalı və açıq kodlaşan tapşırıqlardır. Aydındır ki, açıq kodlaşan tapşırıqlarda cavabın təxminedilməsi praktiki olaraq mümkün deyil və bu onlara ölçmə aləti kimi çox böyük üstünlük verir. Gəlin bizim variant üçün bunu yoxlayaq
Var12_S_D1D2_fourpl
## a b g u
## C17 4.973434 1.3807008 8.326821e-06 0.9427491
## C19 4.249031 1.0619783 1.290487e-05 0.7452319
## C15 2.613991 1.8430793 2.351874e-05 0.9902598
## C21 4.321807 0.8720795 4.335984e-05 0.9992974
## C16 3.738672 0.4710500 6.640029e-05 0.9199185
## C20 2.229354 1.3304033 5.019432e-03 0.9944651
## C18 2.051365 2.1934649 5.537077e-03 0.9949366
## C14 2.388064 1.7360107 1.290722e-02 0.9895039
## C7 2.756933 -0.3763127 7.142437e-02 0.9994868
## C12 3.861020 0.1618940 1.051806e-01 0.9998864
## C13 2.788450 1.1542200 1.165333e-01 0.9275735
## C9 3.069161 0.5944078 1.279797e-01 0.8606828
## C3 4.214281 0.6253077 1.355808e-01 0.9824864
## C1 3.956347 0.5085010 1.542656e-01 0.9887821
## C10 6.757664 0.7228397 1.810251e-01 0.9197182
## C4 3.449107 0.7391545 1.887704e-01 0.9864461
## C5 2.467362 1.0374359 2.006435e-01 0.9992879
## C6 3.801747 0.6134119 2.061505e-01 0.9989153
## C8 4.472624 1.3401901 2.124558e-01 0.8454639
## C11 4.200449 1.8774400 2.143120e-01 0.6384845
## C2 3.307341 0.6922798 2.304693e-01 0.9151861
Bu cədvəldə dördparametrli logistik modelə görə tapşırıqlar çətinlik dərəcələrinin azalması sırası ilə düzülmüşdür. Yuxarıdan birinci 8 tapşırıq açıq kodlaşanlardır. Yəni, hər bir açıq kodlaşan hər bir qapalıdan çətindir. İndi isə ( ən maraqlısı ) onların ayrıdetmələrin müqayisə edək.
Var12_S_D1D2_fourpl[1:8,] ## Açıq kodlaşanlar
## a b g u
## C17 4.973434 1.3807008 8.326821e-06 0.9427491
## C19 4.249031 1.0619783 1.290487e-05 0.7452319
## C15 2.613991 1.8430793 2.351874e-05 0.9902598
## C21 4.321807 0.8720795 4.335984e-05 0.9992974
## C16 3.738672 0.4710500 6.640029e-05 0.9199185
## C20 2.229354 1.3304033 5.019432e-03 0.9944651
## C18 2.051365 2.1934649 5.537077e-03 0.9949366
## C14 2.388064 1.7360107 1.290722e-02 0.9895039
Var12_S_D1D2_fourpl[9:21,] ## Qapalı tapşırıqlar
## a b g u
## C7 2.756933 -0.3763127 0.07142437 0.9994868
## C12 3.861020 0.1618940 0.10518056 0.9998864
## C13 2.788450 1.1542200 0.11653328 0.9275735
## C9 3.069161 0.5944078 0.12797970 0.8606828
## C3 4.214281 0.6253077 0.13558078 0.9824864
## C1 3.956347 0.5085010 0.15426561 0.9887821
## C10 6.757664 0.7228397 0.18102510 0.9197182
## C4 3.449107 0.7391545 0.18877042 0.9864461
## C5 2.467362 1.0374359 0.20064354 0.9992879
## C6 3.801747 0.6134119 0.20615054 0.9989153
## C8 4.472624 1.3401901 0.21245580 0.8454639
## C11 4.200449 1.8774400 0.21431196 0.6384845
## C2 3.307341 0.6922798 0.23046933 0.9151861
mean(Var12_S_D1D2_fourpl[1:8,3]) ## Açıq kodlaşanların təxminetmələri 0.00295228
## [1] 0.00295228
mean(Var12_S_D1D2_fourpl[9:21,3]) ## Qapalıların təxminetmələri 0.1649839
## [1] 0.1649839
Qapalı tapşırıqların təxminetmələrinin orta qiyməti 0.1649839 yəni, təxminən 17 faiz, Açıq kodlaşan tapşırıqların təxminetmələrin orta qiyməti 0.003 yəni, yoxdur. Bu nöqteyi nəzərdən, yaxşı qurulmuş açıq kodlaşan tapşırıqlardan ibarət testlər, qapalı tapşırıqlardan ibarər testlərdən çox məlumatlı olurlar. Yəni, ölçülən latent kəmiyyət haqda daha çox məlumat verirlər.
Var12_S_D1D2 <- Var12_S_T[1:21]
D_Var12_S_D1D2 <- ltm(Var12_S_D1D2 ~ z1)
summary(D_Var12_S_D1D2) # Obtain LL, SE & z.vals
##
## Call:
## ltm(formula = Var12_S_D1D2 ~ z1)
##
## Model Summary:
## log.Lik AIC BIC
## -18927.55 37939.11 38175.81
##
## Coefficients:
## value std.err z.vals
## Dffclt.C1 0.2044 0.0377 5.4281
## Dffclt.C2 0.3433 0.0516 6.6574
## Dffclt.C3 0.3884 0.0404 9.6118
## Dffclt.C4 0.3844 0.0458 8.3859
## Dffclt.C5 0.6746 0.0640 10.5353
## Dffclt.C6 0.1900 0.0411 4.6256
## Dffclt.C7 -0.5480 0.0383 -14.2933
## Dffclt.C8 1.6366 0.1542 10.6111
## Dffclt.C9 0.5891 0.0509 11.5786
## Dffclt.C10 0.5071 0.0470 10.7829
## Dffclt.C11 4.8753 1.0838 4.4982
## Dffclt.C12 -0.0723 0.0328 -2.2028
## Dffclt.C13 1.2057 0.0765 15.7693
## Dffclt.C14 1.9719 0.0923 21.3726
## Dffclt.C15 2.0211 0.0822 24.5735
## Dffclt.C16 0.5465 0.0358 15.2561
## Dffclt.C17 1.5558 0.0491 31.6927
## Dffclt.C18 2.4929 0.1368 18.2224
## Dffclt.C19 1.4532 0.0529 27.4501
## Dffclt.C20 1.4265 0.0609 23.4071
## Dffclt.C21 0.8812 0.0362 24.3108
## Dscrmn.C1 1.9193 0.1050 18.2780
## Dscrmn.C2 1.1419 0.0698 16.3610
## Dscrmn.C3 1.8081 0.0979 18.4757
## Dscrmn.C4 1.4170 0.0807 17.5605
## Dscrmn.C5 1.0032 0.0651 15.4094
## Dscrmn.C6 1.5827 0.0881 17.9637
## Dscrmn.C7 2.0291 0.1341 15.1362
## Dscrmn.C8 0.6267 0.0574 10.9222
## Dscrmn.C9 1.3240 0.0758 17.4709
## Dscrmn.C10 1.4535 0.0818 17.7623
## Dscrmn.C11 0.2491 0.0558 4.4666
## Dscrmn.C12 2.5569 0.1529 16.7241
## Dscrmn.C13 1.1193 0.0713 15.6946
## Dscrmn.C14 1.6596 0.1184 14.0137
## Dscrmn.C15 2.2782 0.1845 12.3468
## Dscrmn.C16 2.6308 0.1423 18.4929
## Dscrmn.C17 3.9430 0.3840 10.2675
## Dscrmn.C18 1.5657 0.1343 11.6541
## Dscrmn.C19 2.5842 0.1747 14.7933
## Dscrmn.C20 1.8677 0.1128 16.5605
## Dscrmn.C21 3.7502 0.2533 14.8038
##
## Integration:
## method: Gauss-Hermite
## quadrature points: 21
##
## Optimization:
## Convergence: 0
## max(|grad|): 0.052
## quasi-Newton: BFGS
Tam_info_Var12_S_D1D2 <- information(D_Var12_S_D1D2, c(-3, 3))
Tam_info_Var12_S_D1D2
##
## Call:
## ltm(formula = Var12_S_D1D2 ~ z1)
##
## Total Information = 38.45
## Information in (-3, 3) = 36.41 (94.72%)
## Based on all the items
Sonuncu olaraq biz qapalı və açıq kodlaşan testlərdən düzəltdiyimiz testin əsas göstəricilərindən biri olan məlumat funksiyasın hesabladıq. Ümumi məlumat (38.45) -(Total Information = 38.45). Onun (-3, 3) intervalına düşən hissəsi-36.41(94.72%). (Information in (-3, 3) = 36.41 (94.72%)). Yəni, model dataya pis biçilmir. Amma test bütövlükdə az məlumat verir ki, bu da verilməyən cavabların çoxluğu ilə əlaqə lidir.
Biz üç parametrli modellə şagirdləri qapalı və açıq kodlaşan tapşırıqlarla 3 üsulla “təxmini” qiymətləndirə bilərik.
latent_mle <- fscores(threepl_fit, method = "ML",
full.scores = TRUE, full.scores.SE = TRUE)
latent_map <- fscores(threepl_fit, method = "MAP",
full.scores = TRUE, full.scores.SE = TRUE)
## Warning: The following factor score estimates failed to converge successfully:
## 233,238
latent_eap <- fscores(threepl_fit, method = "EAP",
full.scores = TRUE, full.scores.SE = TRUE)
head(latent_mle)
## F SE_F
## [1,] 0.1999607 0.2918678
## [2,] -0.2594182 0.4563862
## [3,] 0.7298484 0.2022382
## [4,] -0.4614211 0.4730855
## [5,] 1.3234009 0.1978199
## [6,] -Inf NA
latent <- data.frame(MLE = latent_mle[, 1],
MAP = latent_map[, 1],
EAP = latent_eap[, 1])
head(latent, 10)
## MLE MAP EAP
## 1 0.1999607 0.1839224 0.006567779
## 2 -0.2594182 -0.2166945 -0.452198547
## 3 0.7298484 0.7007508 0.674860876
## 4 -0.4614211 -0.3846143 -0.633205630
## 5 1.3234009 1.2738967 1.279035351
## 6 -Inf -0.8372562 -1.045285192
## 7 0.8470878 0.8164637 0.802175226
## 8 2.1356046 1.9431710 1.997681371
## 9 0.8545835 0.8253342 0.817963873
## 10 1.4181149 1.3623979 1.370059273
dim(latent)
## [1] 2071 3
hist(latent$MAP)
hist(latent$EAP)
latent[1:21, ] ## Bu balla uyğun faktor qiymətlər
## MLE MAP EAP
## 1 0.1999607 0.1839224 0.006567779
## 2 -0.2594182 -0.2166945 -0.452198547
## 3 0.7298484 0.7007508 0.674860876
## 4 -0.4614211 -0.3846143 -0.633205630
## 5 1.3234009 1.2738967 1.279035351
## 6 -Inf -0.8372562 -1.045285192
## 7 0.8470878 0.8164637 0.802175226
## 8 2.1356046 1.9431710 1.997681371
## 9 0.8545835 0.8253342 0.817963873
## 10 1.4181149 1.3623979 1.370059273
## 11 -Inf -0.7669924 -0.996568024
## 12 0.9302105 0.8936668 0.883008439
## 13 0.1163217 0.1003280 -0.138992672
## 14 -Inf -0.3700665 -0.759690901
## 15 -Inf -0.8372562 -1.045285192
## 16 -0.2594182 -0.2166945 -0.452198547
## 17 0.1107903 0.1021805 -0.078217297
## 18 0.6382020 0.6084979 0.549876056
## 19 0.2962163 0.2741069 0.121740422
## 20 -Inf -0.8715138 -1.097669707
## 21 0.3326332 0.3105081 0.167970062
latent_est <- latent[is.finite(latent$MLE), ] ## MLE-də yalnız sonlular
apply(latent_est, 2, summary)
## MLE MAP EAP
## Min. -1.8208085 -0.7117462 -0.9679724
## 1st Qu. -0.1398742 -0.1153552 -0.3762113
## Median 0.3632755 0.3428983 0.2492209
## Mean 0.4373473 0.4398479 0.3217647
## 3rd Qu. 0.9450004 0.9122036 0.9053251
## Max. 2.7054700 2.2745851 2.3524716
apply(latent_est, 2, sd)
## MLE MAP EAP
## 0.7480866 0.6648679 0.7730099
cor(latent_est)
## MLE MAP EAP
## MLE 1.0000000 0.9946441 0.9908062
## MAP 0.9946441 1.0000000 0.9967434
## EAP 0.9908062 0.9967434 1.0000000
pairs(latent_est)
Beləliklə, həm tam testin həm də onun alt testlərinin Klassik Test Nəzəriyyəsi metodları ilə analizi bizə tapşırıqların keyfiyyətləri haqda daha çox məlumat əldə etməyə imkan verir. Bu isə yuxarıda qeyd olunduğu kimi suallara verilən cavablarda olmayan cavabların çoxluğu ilə əlaqəlidir.
Biz, yuxarıda C8, C11, C14, C15, C16, C17, C18, C23, C24 və C25 suallarının bu və ya diğər baxımdan və bu və ya digət dərəcədə qüsurlu olduğunu göstərdik. Və nəhayət, nəzərə alsaq ki, 4 yazılı tapşırığın verəcəyi maksimum bal (12 bal) demək olar ki, 13 qapalı sualların vediyi bala bərabərdir, onda yazılı sualların belə pis işləməsi (onlara verilən cavabların əhəmiyyətli dərəcədə az olması) testin keyfiyyətini çox aşağı salmışdır.