Lazım olacaq paketlərin yüklənməsi


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)

İşlək papkanın yüklənməsi


setwd("~/Desktop/DIM/DIM_2021_11/Analiz-1")

Seanslar və variantlar arasında əlaqə


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

Az_Riy_Var12-i seansının qapalı və açıq tapşırıqlarının çiy ballarının yüklənməsi.


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"

Az_Riy_Var12-i seansının alt testlərinin (qapalı, açıq kodlaşan və yazılı) NA-lərlə (boş olan xanalarla) yüklənməsi


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

Kodlaşmış və yazılı testlər


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

Kodlaşmış və yazılı tapşırıqların adları

##  [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..


I-üsul. Hər üç alttestin (qaplı, açıq kodlaşan və yazılı) və bütovlükdə testin tapşırıqlarının daxili razılaşdırmaya (Internal consistency) görə təhlili


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!


Daxili razılaşdırma əmsalının qapalı tapşırıqlar üçün hesablanması


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)


Qapalı suallardan ibarət testin uğursuz tapşırıqları


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.


Daxili razılaşdırma əmsalının açıq kodlaşan tapşırıqlar üçün hesablanması (Var12_NA_Q2).


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)

Açıq kodlaşan tapşırıqlardan ibarət testin uğursuz tapşırıqları


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.


Yazılı tapşırıqlardan ibarət test-Var12_NA_Q2-Yazılı


##         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.


II-üsul. Hər üç alttestin (qapalı, açıq kodlaşan və yazılı) və bütovlükdə testin tapşırıqlarının ayırdetmə əmsalına görə təhlili.


Qapalı tapşırıqların ayırdetmə əmsalı


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"

Qapalı test tapşırıqlarının ayırdetmə və çətinlik dərəcələrini birgə göstərən qrafik



Bu əlamət də qapalı tapşırıqlardan C11-i uğursuz tapşırıq kimi qeyd edir.


Açıq kodlaşan tapşırıqlarin ayırdetmə əmsalı


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"

Açıq kodlaşan test tapşırıqlarının ayırdetmə və çətinlik dərəcələrini birgə göstərən qrafik



Bu əlamət açıq kodlaşan test tapşırıqlarından iki uğursuzunu seçir. C15 və C18.


Yazılı tapşırıqlar


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"

Yazılı test tapşırıqlarının ayırdetmə və çətinlik dərəcələrini birgə göstərən qrafik



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.



III-üsul. Qapalı testlərin distraktorlarının analizi və bu üsulla qüsurlu tapşırıqların müəyyən olunması



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.


IV-üsul. Tapşırıqların etibarlılıq əmsallarının hesablanması.


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.


Qapalı tapşırıqların etibarlıq əmsalları


##  [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.


Açıq kodlaşan tapşırıqların etibarlıq əmsalları


## [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.


Tam testin tapşırıqlarının etibarlılıq indeksi


##  [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.


Yekun olaraq bildirək ki, tam testin və qapalı, açıq kodlaşan və yazılı sualların ayrilıqda əmələ gətirdikləri testlərin analizi bu varıantda C8, C11, C14, C15, C16, C17, C18, C23, C24 və C25 suallarının bu və ya diğər dərəcədə qüsurlu olduğunu göstərir.


Tapşırıqların Müasir Test Nəzəriyyəsi (İRT) ilə analizi


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.


Açıq kodlaşan tapşırıqlar


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.


Qapalılarda


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.


Açıq kodlaşanlarda


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.

Yazılılarda


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

Tam testdə


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).

III Hissə. Tapşırıqların Müasir Test Nəzəriyyəsi ilə analizi


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"

Bir parmetrli Raş modeli


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.


Tapşırıqların xarakterik əyriləri və məlumat funksiyaları


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)


Testin məlumat funksiyası və standart səhv funksiyası


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)


Test tapşırıqlarının birparametrli modelə biçilməsinin yoxlanılması


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.G2p.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


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)


Testin məlumat funksiyası və standart səhv funksiyası


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)


Test tapşırıqlarının Raş modelinə biçilməsinin yoxlanılması


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.


İki parametrli logistic model


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


İki parametrli logistic modelə biçilməsinin yoxlanılması


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.


Üçparametrli logistic model


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)


Testin məlumat funksiyası və standart səhv funksiyası


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)


Üç parametrli logistic modelə biçilməsinin yoxlanılması


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.


Dörd parametrli logistik model


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)


Testin məlumat funksiyası və standart səhv funksiyası


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)


Dörd parametrli logistic modelə biçilməsinin yoxlanılması


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.


Dixotomik testin tam məlumat funksiyası və onun (-3, 3) intervalına düşən hissəsi.


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.


Bəzi əlavələr. Şagirdlərin biliklərinin tərtib etdiyimiz dixotomik testlə üçparametrli modeldə qiymətləndirilməsi


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.