Bu yazıda istifadə olunan kodlar mətnin axırında verilən ikinci mənbədəndir. Mən, yalnız test datası (Cavablar) və valid cavabları (Y) süni qurmuşam. Həmçinin, prosesin şərhini və əlavə izahatları vermişəm.
Parametrləri verilmiş tapşırıqlardan bu və ya digər məqsəd üçün müəyyən sayda tapşırıqlar seçib tələb olunan keyfiyyətə malik testlərin qrulması çox vacib məsələdir. Ümumiyyətlə, hər hansı bir test qrularkən onun iki vacib xarakteristikası diqqətdə saxlanılır. Testin etibarlılığı və validliyi. Yəni, çalışmaq lazımdır ki, mövcud imkanlar çərçivəsində bu iki göstərici qrulması nəzərdə tutulan testdə mümkün qədər optimal olsun. Əvvəlcə, testin etibarlılığı haqda qısa məlumat verək.
Test üzrə iştirakçıların müşahidə olunan balı ilə iştirakçıların həqiqi balları arasındakı korrelyasiyaya testin etibarlılığı, yaxud etibarlılıq göstəricisi deyilir.
Bu tərif özlüyündə məntiqi anlaşılan olsa da praktikada özünün əhəmiyyətli tətbiqini tapa bilmir. Çünki, testləşmənin nəticəsində iştirakçının həqiqi balı bir başa müşahidə olunmur. Lakin, bir qrup iştirakçı ilə dalba-dal iki dəfə eyni bir testlə, yaxud paralel formalı testlərlə testləşmə aparıldıqda, müşahidə olunan balların korrelyasıyası ilə müşahıdə olunmayan həqiqi balların korrelyasiya arasında riyazi əlaqə yaratmaq olur.
Onu da qeyd edək ki, etibarlılıq anlayışı nəzəri anlayışdır və heç bir testə dəqiq paralel test qurmaq mümkün olmur. Bununla belə, etibarlılıq əmsalının riyazi hesablanmasının müxtəlif metodları vardır.
Biz bir testin bir dəfə tətbiq olunmasından hesablanması mümkün olan Kronbax alfası düsturundan istifadə edəcəyik. (Bəzi mənbələrdə görə bu düsturu daha öncə Qutman lambda-5 düsturu adı altında verib). Kronbax alfasını testin bütün tapşırıqlarına verilən cavablar məlum olduqda hesablamaq olur və testin etibarlılığının aşağı sərhəddini verir. Kronbaxın alfasının hesablanma düsturu belədir. \[\rho_{XX'} \geq \alpha = \frac{N}{N-1} \left[{\frac{\sigma^2_X - \sum_{j=1}^N \sigma^2_{X_j}}{\sigma^2_X}}\right]\]
N: testin alt testlərinin sayı (adətən, bu alt testlər elə tapşırıqların özü olur, yəni test tapşırıqlara qədər xırdalanır);
\(\sigma^2_X\): tam testin cəm ballarının dispersiyasıdır;
\(\sigma^2_{X_j}\): testin \(X_j\) alt testinin cəm ballarının dispersiyasıdır. Burada, sadəcə bir tapşırığın cavab ballarının dispersiyasıdır.
Testin tapşırıqlarının hamısı dixotomik olduqda Kronbaxın alfa düsturu sadəşələrək Kuder-Riçardsonun 20-ci düsturu formasını alır.\[KR20 = \frac{N}{N-1} \left[{\frac{\sigma^2_X - \sum_{j=1}^N p_j(1-p_j)}{\sigma^2_X}}\right]\] burada, \(p_j\) \(X_j\)-tapşırığına cavabların dispersiyasıdır.
Testin keyfiyyət göstəricisi kimi digər vacib anlayış onun validliyidir. Testin etibarlılığının hesablanması üçün çoxsaylı riyazi düsturlar olduğu halada (hətta, yalnız, bir testin nəticələrindən istifadə olunmaqla) onun validliyinin hesablanması üçün elə riyazi düsturlar yoxdur. Validlik, testin doğurdan da ölçülməsi nəzərdə tutulan konstruktu ölçdüyünü xarakterizə edən kəmiyyətdir. Validliyi həmin konstruktu daha keyfiyyətli ölçən digər imtahanların nəticələri ilə korrelyasiyada müşahidə etmək olur.
Məsələn, liseylərə qəbul testlərinin validliyi qəbul olunan şagirdlərin cari qiymətləri yaxud, məktəbdaxili imtahanların nəticələri ilə korrelyasiyada görmək olar. Ali məktəblərə qəbul məqsədilə aparılan imtahanlarının validliyi həmin tələbələrin birinci semestr nəticələri ilə korrelyasiyada görünür və s.
İndi isə biz R proqramından istifadə edərək 40 suala 1000 nəfərin cavabından ibarət bir süni test düzəldəcəyik. Sonra, bu testin cəm balları ilə korrelyasiya edən digər bir süni nəticəyə baxacayıq. Və yekunda ilkin testin tapşırıqlarından daha etibarlı və valid test düzəltməyə cəhd edəcəyik.
library("epmr")
library("ggplot2")
library(irtoys)
set.seed(1)
Tapş <- as.matrix(cbind(alpha = runif(40, .1, 1.5),
delta = rnorm (40, 0, 1),
chi = runif(40, 0, .3)))
set.seed(1)
Cavablar <- irtoys::sim(ip = as.matrix(Tapş), x = rnorm(1000, 0, 1))
colnames(Cavablar) <- paste0("Tapsh", "-",1:40)
rownames(Cavablar) <- paste0("Ish", "-",1:1000)
Seçəcəyimiz test tapşırıqlarından düzəltmək istıdiyimiz testin validliyini təmin etmək üçün bizə validlik meyarı deyilən test göstəriciləri də lazımdır. Yəni, fərz edəcəyik ki, belə bir testin nəticələri məlumdur. Bu test ola bilər yaxın zamanda aparılıb yaxud, gələcəkdə aparılacaq məlum deyil. Biz sadəcə, quracağımız testin nəticələrin həmin testin nəticələrinə uyğunlaşdırmaq istəyirik.
set.seed(123)
A <- rowSums(Cavablar)
# Təsadüfü C vektoru yaradaq
C <- rnorm(1000)
# A və C vektorunun xətti kombinasiyasından istifadə edərək B vektoru yaradaq.
Y <- 0.2 * scale(A) + sqrt(1 - 0.2^2) * scale(C)
# B-nin orta qiymətini və orta kvadratik meylini A ilə eyniləşdirək.
Y <- Y * sd(A) + mean(A)
head(round(Y,3))
## [,1]
## Ish-1 19.172
## Ish-2 21.390
## Ish-3 31.320
## Ish-4 24.027
## Ish-5 24.187
## Ish-6 31.275
# Korrelyasiyanın yoxlanılması
correlation <- cor(A, Y) ## Bu korrelyasiya bizim testin nəticələri ilə etalon testin, yəni validliyi təmin edəcək testin nəticəsi ilə korrelyasiyadır
print(correlation)
## [,1]
## [1,] 0.2156798
İndi bizim əlimizdə 1000 nəfərin 40 tapşırığa verdiyi cavablardan ibarət cavab matrisi (Cavablar) və meyar kimi qəbul edəcəyimiz diqər testin nəticələri (Y) vardır. Fərz edəcəyik ki, hər iki testləşmədə eyni adamlar iştirak ediblər və biz bu şərti süni testləri yaradarkən nəzərə almışık. Yəni, hər iki nəticəni alarkən, iştirakçıların bilik səviyyələrin eyni qəbul etmişik.
Meyar balları əsasən, aşağıdakı kimi iki növ testlərdən almaq olur
Bu testlə eyni zamanda, yaxud yaxın zamanda eyni məqsədlə keçirilən digər testlərərin balları
Test nəticələrindən gələcək testi proqnozlaşdırmaq üçün istifadə edildikdə.
Biz həm də fərz edəcəyik ki, tapşırıqların hamısı əhəmiyyətli dərəcədə tau ekvivalentdir. Bu o deməkdir ki, hər iki testdə tapşırıqların həqiqi balları eynidir.
Biz Klassik Test Nəzəriyyəsi çərçivəsində tapşırıqların analizindən istifadə edilərək bu və ya digər tapşırığın yeni qrulacaq testə daxil edilməsi haqda qərar verəcəyik.
İndi fərz edək ki, bizim 40 tapşırıqdan ibarət testimiz 1000 nəfərdən ibarət seçimdə sınaqdan keçirmişik və yuxarıdakı “Cavablar” matrisini almışıq. Biz bu cavablar matrisindən istifadə edib 40 tapşırığın hamısı üçün lazım olacaq aşağıdakı göstəriciləri hesablayaq. Biz bu hesablamaları yuxarıda qeyd olunan müəllifin etdiyi kimi R proqramında aparacayıq. Qeyd edək ki, bu hesablamaları EXSEL-də də çox asan eləmək olar.
Tapşırığın çətinliyi (Item difficulty);
Tapşırığın ayırdetmə əmsalı (Item discrimination);
Tapşırığın ballarınının Orta kvadratik meyli (Item-score SD).
Tapşırığın çətinliyi, bütün imtahan verənlər içərisində bu tapşırığa doğru cavab verənlərin payıdır, və yaxud, düsturla \[p_i = \frac{\sum_{p=1}^n X_{pi}}{n}\]. Burada, n imtahanda iştirak edənlərin sayı, \(X_{pi}\), \(i\)-ci iştirakçının \(p\)-ci tapşırığa verdiyi cavabdır.
difficulty <- colMeans(Cavablar)
difficulty
## Tapsh-1 Tapsh-2 Tapsh-3 Tapsh-4 Tapsh-5 Tapsh-6 Tapsh-7 Tapsh-8
## 0.595 0.488 0.552 0.889 0.538 0.592 0.627 0.783
## Tapsh-9 Tapsh-10 Tapsh-11 Tapsh-12 Tapsh-13 Tapsh-14 Tapsh-15 Tapsh-16
## 0.610 0.580 0.490 0.529 0.426 0.586 0.839 0.641
## Tapsh-17 Tapsh-18 Tapsh-19 Tapsh-20 Tapsh-21 Tapsh-22 Tapsh-23 Tapsh-24
## 0.644 0.575 0.551 0.435 0.643 0.599 0.409 0.520
## Tapsh-25 Tapsh-26 Tapsh-27 Tapsh-28 Tapsh-29 Tapsh-30 Tapsh-31 Tapsh-32
## 0.680 0.652 0.542 0.524 0.540 0.536 0.533 0.685
## Tapsh-33 Tapsh-34 Tapsh-35 Tapsh-36 Tapsh-37 Tapsh-38 Tapsh-39 Tapsh-40
## 0.480 0.659 0.331 0.190 0.649 0.576 0.369 0.532
Bu əmsal tapşırığın aldığı ballar (0/1) ilə testin cəm balları (X) arasında nöqtəvi-biserial korrelyasiya əmsalıdır. Tapşırıqlar dixotomik olduqda Pirson korrelyasiya əmsalının xüsusi halıdır. Və \[r_{iX}=r_{pbis} = \left[\frac{\bar X_1 - \bar X_0}{S_X}\right]\sqrt{\frac{n_1 n_0}{n(n-1)}},\] kimi hesablanır. Bu əmsalın R proqramında hesablanması aşağıdakı kimidir:
X <- rowSums(Cavablar) # cəm ballar
discrimination <- numeric(ncol(Cavablar)) # nəticə vektoru
for(i in 1:ncol(Cavablar)){
discrimination[i] <- cor(Cavablar[,i], X) # Pearson correlation between the i-th item score and the total score
}
discrimination
## [1] 0.2006240 0.2783469 0.3573439 0.3624516 0.1930892 0.4255262 0.4693575
## [8] 0.3632050 0.4492853 0.1432492 0.2161031 0.2575441 0.4395249 0.2747038
## [15] 0.3339811 0.3511850 0.4130493 0.4994784 0.2328850 0.4192895 0.4592648
## [22] 0.2077234 0.3813583 0.1920833 0.2216639 0.2671197 0.1485696 0.2519306
## [29] 0.5128366 0.2920617 0.3454034 0.3329812 0.3659142 0.2160764 0.2943556
## [36] 0.3676357 0.4560395 0.2145945 0.4079296 0.3569080
Tapşırığın ballarının orta kvadratik meyli, balların dispersiyasının kvadrat kökü kimi tapılır. Bu halda, yəni tapşırıqlar dixotomik olduqda dispersiya (Var). \[Var_i = {p_i(1-p_i)}.\] aşağıdakı kimi hesablanır. Deməli, tapşırığın orta kvadratik meylı \[s_i = \sqrt{p_i(1-p_i)}.\] onda aşağıdakı kimi olar. Orta kvadratik meylin R-da hesablanması:
item_sd <- sqrt(difficulty * (1-difficulty))
item_sd
## Tapsh-1 Tapsh-2 Tapsh-3 Tapsh-4 Tapsh-5 Tapsh-6 Tapsh-7 Tapsh-8
## 0.4908920 0.4998560 0.4972886 0.3141321 0.4985539 0.4914631 0.4836021 0.4122026
## Tapsh-9 Tapsh-10 Tapsh-11 Tapsh-12 Tapsh-13 Tapsh-14 Tapsh-15 Tapsh-16
## 0.4877499 0.4935585 0.4999000 0.4991583 0.4944937 0.4925485 0.3675310 0.4797072
## Tapsh-17 Tapsh-18 Tapsh-19 Tapsh-20 Tapsh-21 Tapsh-22 Tapsh-23 Tapsh-24
## 0.4788152 0.4943430 0.4973922 0.4957570 0.4791148 0.4901010 0.4916493 0.4995998
## Tapsh-25 Tapsh-26 Tapsh-27 Tapsh-28 Tapsh-29 Tapsh-30 Tapsh-31 Tapsh-32
## 0.4664762 0.4763360 0.4982329 0.4994237 0.4983974 0.4987023 0.4989098 0.4645159
## Tapsh-33 Tapsh-34 Tapsh-35 Tapsh-36 Tapsh-37 Tapsh-38 Tapsh-39 Tapsh-40
## 0.4995998 0.4740454 0.4705731 0.3923009 0.4772829 0.4941902 0.4825339 0.4989749
Və yaxud, ona ekvivalent olaraq, aşağıdakı kimi
n <- nrow(Cavablar)
item_sd2 <- apply(Cavablar, 2, sd)*sqrt((n-1) / n)
item_sd2
## Tapsh-1 Tapsh-2 Tapsh-3 Tapsh-4 Tapsh-5 Tapsh-6 Tapsh-7 Tapsh-8
## 0.4908920 0.4998560 0.4972886 0.3141321 0.4985539 0.4914631 0.4836021 0.4122026
## Tapsh-9 Tapsh-10 Tapsh-11 Tapsh-12 Tapsh-13 Tapsh-14 Tapsh-15 Tapsh-16
## 0.4877499 0.4935585 0.4999000 0.4991583 0.4944937 0.4925485 0.3675310 0.4797072
## Tapsh-17 Tapsh-18 Tapsh-19 Tapsh-20 Tapsh-21 Tapsh-22 Tapsh-23 Tapsh-24
## 0.4788152 0.4943430 0.4973922 0.4957570 0.4791148 0.4901010 0.4916493 0.4995998
## Tapsh-25 Tapsh-26 Tapsh-27 Tapsh-28 Tapsh-29 Tapsh-30 Tapsh-31 Tapsh-32
## 0.4664762 0.4763360 0.4982329 0.4994237 0.4983974 0.4987023 0.4989098 0.4645159
## Tapsh-33 Tapsh-34 Tapsh-35 Tapsh-36 Tapsh-37 Tapsh-38 Tapsh-39 Tapsh-40
## 0.4995998 0.4740454 0.4705731 0.3923009 0.4772829 0.4941902 0.4825339 0.4989749
Bu yuxarıda verilən, tapşırığın üç əsas parametrindən istifadə edərək bizə lazım olacaq, tapşırığın diğər iki parametrini də hesablayaq:
Tapşırığın etibarlılıq indeksi onun orta kvadratik meyli ilə ayırdermə əmsalını hasilinə bərabərdir. Başqa sözlə \(s_i\cdot r_{iX}\). Burada iki vektorun eyni komponentlər üzrə hasilinə baxılır \(s_i\cdot r_{iX}\).
item_rel <- item_sd * discrimination
round(item_rel, 2) # vergüldən sonra iki rəqəmə qədər yuvarlaqlaşdırmaq
## Tapsh-1 Tapsh-2 Tapsh-3 Tapsh-4 Tapsh-5 Tapsh-6 Tapsh-7 Tapsh-8
## 0.10 0.14 0.18 0.11 0.10 0.21 0.23 0.15
## Tapsh-9 Tapsh-10 Tapsh-11 Tapsh-12 Tapsh-13 Tapsh-14 Tapsh-15 Tapsh-16
## 0.22 0.07 0.11 0.13 0.22 0.14 0.12 0.17
## Tapsh-17 Tapsh-18 Tapsh-19 Tapsh-20 Tapsh-21 Tapsh-22 Tapsh-23 Tapsh-24
## 0.20 0.25 0.12 0.21 0.22 0.10 0.19 0.10
## Tapsh-25 Tapsh-26 Tapsh-27 Tapsh-28 Tapsh-29 Tapsh-30 Tapsh-31 Tapsh-32
## 0.10 0.13 0.07 0.13 0.26 0.15 0.17 0.15
## Tapsh-33 Tapsh-34 Tapsh-35 Tapsh-36 Tapsh-37 Tapsh-38 Tapsh-39 Tapsh-40
## 0.18 0.10 0.14 0.14 0.22 0.11 0.20 0.18
Tapşırığın validliyi də oxşar qayda ilə tapılır, lakin bu halda \(s_i\cdot r_{iX}\) əvəzinə \(s_i\cdot r_{iY}\) hesablanır. Yəni, orta kvadratik meyl meyar ballarla korrelyasiya vurulur. R-da hesablanması isə aşağıdakı kimidir.
r_iy <- numeric(ncol(Cavablar))
for(i in 1:ncol(Cavablar)){
r_iy[i] <- cor(Cavablar[,i], Y)
}
round(r_iy, 2)
## [1] 0.04 0.08 0.06 0.11 0.07 0.08 0.07 0.10 0.07 0.05 0.06 0.09 0.14 0.04 0.04
## [16] 0.07 0.09 0.06 0.07 0.09 0.12 0.07 0.04 0.00 0.04 0.06 0.01 0.05 0.10 0.02
## [31] 0.08 0.04 0.09 0.02 0.04 0.13 0.11 0.12 0.11 0.06
Biz, tapşırığın validlik əmsalını həm də aşağıdakı kimi hesablaya bilərik \(s_i\cdot r_{iY}\).
item_val <- item_sd * r_iy
round(item_val, 2)
## Tapsh-1 Tapsh-2 Tapsh-3 Tapsh-4 Tapsh-5 Tapsh-6 Tapsh-7 Tapsh-8
## 0.02 0.04 0.03 0.03 0.04 0.04 0.03 0.04
## Tapsh-9 Tapsh-10 Tapsh-11 Tapsh-12 Tapsh-13 Tapsh-14 Tapsh-15 Tapsh-16
## 0.03 0.02 0.03 0.05 0.07 0.02 0.02 0.03
## Tapsh-17 Tapsh-18 Tapsh-19 Tapsh-20 Tapsh-21 Tapsh-22 Tapsh-23 Tapsh-24
## 0.04 0.03 0.04 0.04 0.06 0.03 0.02 0.00
## Tapsh-25 Tapsh-26 Tapsh-27 Tapsh-28 Tapsh-29 Tapsh-30 Tapsh-31 Tapsh-32
## 0.02 0.03 0.01 0.02 0.05 0.01 0.04 0.02
## Tapsh-33 Tapsh-34 Tapsh-35 Tapsh-36 Tapsh-37 Tapsh-38 Tapsh-39 Tapsh-40
## 0.05 0.01 0.02 0.05 0.05 0.06 0.05 0.03
Qeyd: Qeyd edək ki, tapşırığın etbarlılıq əmsalının və validlik əmsallarının hesablanması oxşardır. Tapşırığın orta kvadratik meyli birində cəm ballarla korrelyasiyaya vurulur, digərində isə meyar ballarla korrelyasiyaya. Onu da qeyd edək ki, tapşırığın etibarlılığını və tapşırığın validliyinı testin validliyi və etibarlılığı ilə qarışdırmayın bunlar tapşırıq səviyyəli statisklərdir.
Tapşırıqların etibarlılığı və validliyi quracağımız k tapşırıqdan ibarət testin özünün dispersiyasını, etibarlılıq və validlik əmsallarını hesablanmasında istifadə oluna bilir
Xüsusi halda:
Cəm balının orta kvadratik meylinə SD, \(S_X\), tapşırıqların orta kvadratik meylləri ilə \[\hat S_X = \sum_{i=1}^k s_ir_{iX}.\] yaxınlaşmaq olur.
Daxili-razılaşdırma etibarlılığına (Internal-consistency reliability), \(\rho_{XX^1}\) k tapşırığın Kronbax alfaları ilə \[\hat r_{XX^\prime} = \frac{k}{k-1}[1-\frac{\sum_{i=1}^k s_i^2}{(\sum_{i=1}^k s_ir_{iX})^2}]\] yaxınlaşmaq olar
Meyar validliyi əmsalına \(\rho_{XY}\) isə k sayda tapşırığın statistiklərindən düzəlmiş bu hədlərlə yaxınlaşmaq olar \[\hat r_{XY} = \frac{\sum_{i=1}^k s_ir_{iY}}{\sum_{i=1}^k s_ir_{iX}}.\]
Bizim əsas məqsədimiz yeni k tapşırıqdan ibarət testin mümkün qədər etibarlı və valid olmasıdır.
Beləliklə, biz bütün 40 tapşırıqdan elə mümkün k tapşırıq seçməliyik ki, ya etibarlılıq \(\hat r_{XX^\prime}\) maksimum olsun, ya validlik \(\hat r_{XY^\prime}\) maksimum olsum yaxud hər ikisi maksimum olsunə
Fərz edək ki, biz bu 40 tapşırıqdan ibarət testən 10 tapşırıqdan ibarət qisa test qurmaq istəyirik
Testin etibarlılığını maksimallaşdırmaq üçün Allen və Yen 1971-ci ildə belə məsləhət ediblər ki, tapşırıqların orta kvadratik meylərini ordinat oxunda, etibarlılıq əmsalını isə absiss oxunda verib, səpələnmə qrafikini qurmaq lazımdır. Bu zaman səpələnmə qrafikinin sağ tərəfində yer tutan tapşırıqları seçib götürmək lazımdır.
# Tapşırığın orta kvadratik meylinin etibarlılıq indeksinə qarşı səpələnmə qrafiki
plot(item_rel, item_sd, xlab = 'Tapşırığın etibarlılıq indeksi',
ylab = 'Tapşırığın orta kvadratik meyli')
text(item_rel+.003,item_sd+.003,1:40,cex=.8)
max_rel <- order(item_rel,decreasing=T)[1:10]
points(item_rel[max_rel],item_sd[max_rel], col=2, pch=19)
İndi isə baxaq görək ki, hansı tapşırıqlarda \(s_{i}r_{iX}\) ifadəsi daha böyük qiymətlər alır
max_rel <- order(item_rel,decreasing=T)[1:10]
max_rel
## [1] 29 18 7 21 9 37 13 6 20 17
Qrafikin sağ tərəfindəki tapşırıqlarla müqayisə edildikdə görürük ki, bunlar elə əsasən, etibarlılıq indekslərini maksimallaşdıran tapşırıqlardır
Başqa sözlə, daxili razılaşdırma əmsalını maksimallaşdıran 10 tapşırıq seçmək üçün qrafikin sağındakı 10 tapşırığı seçmək lazımdır.
Testin validliyini maksimallaşdırmaq üçün Allen və Yen 1971-ci ildə (Bax:[1]) belə məsləhət veriblər ki, tapşırıqların validlik indeksini ordinat oxunda (y) etibarlılıq əmsalını isə absiss oxunda (x) verib, səpələnmə qrafikini qurmaq lazımdır. Bu zaman səpələnmə qrafikinin yuxarı hissəsində yer tutan tapşırıqları seçib götürmək lazımdır.
# tapşırığın validlik indeksinin indeksi ilə etibarlılıq indeksinin səpələnmə qrafiki
plot(item_rel, item_val, xlab = 'Tapşırığın etibarlılıq indeksi',
ylab = 'Tapşırığın validlik indeksi')
text(item_rel+.003, item_val+.003,1:40, cex=.8)
max_val <- order(item_val/item_rel,decreasing=T)[1:10]
points(item_rel[max_val],item_val[max_val], col=2, pch=19)
İndi isə \(\frac{s_ir_{iY}}{s_{i}r_{iX}}\) -fadəsini maksimallaşdıran 10 tapşırığın nömrələrinin tapaq:
max_val <- order(item_val/item_rel,decreasing=T)[1:10]
max_val
## [1] 38 5 12 36 22 10 13 19 4 8
Qrafikin yuxarı hıssəsindəki nömrələr əsasən, bu nömrələr olduğu görünür.
Bu iki müxtəlif məqsədlər üçün seçilən tapşırıqlar çoxluğunda ortaq tapşırıq varmı. R-da intersect()-funksiyası ilə bu iki etibarlılığı və validliyi optimallaşdıran çoxluqların kəsişməsin tapsaq, hər iki çoxluğa dxil olan yeğanə 13 nömrəli tapşırığın olduğunu görərik
intersect(max_val, max_rel)
## [1] 13
Biz isə həm etibarlılığı həm də validliyi eyni zamanda mümkün qədər yaxşılaşdıran tapşırıqlar seçmək istəyirik. Bəzən, bu iki məqsəd ziddiyyətdə olur. Yəni, daxili razılaşmanı maksimallaşdıran tapşırıq meyar balını yaxşı proqnozlaşdıra bilmir və tərsinə, meyar balını yaxşı proqnozlaşdıran daxili razılaşmanı maksimallaşdıra bilmir.
Əgər, biz bu iki məqsədi balanslaşdırmaq istəyiriksə biz etibarlılığa və validliyə müəyyən çəki əmsalları verməliyik və bu iki məqsədi çəki əmsallari ilə optimallaşdırarıq. Başqa, sözlə \[w\cdot s_ir_{iX}+(1-w)\frac{s_{i}r_{iY}}{s_ir_{iX}}\] Aşağıdakı kodda hər iki məqsədə 0.5 çəki verdikdə tapşırıqların seçilməsi proseduru verilibdir
w <- .5
obj <- w*item_rel + (1-w)*(item_val/item_rel)
max_weighted_both <- order(obj,decreasing=T)[1:10]
Beləliklə, hər iki məqsədə eyni dərəcədə önəmli baxsaq, onda bu tapşırıqlar önəmli olur
max_weighted_both
## [1] 38 13 36 12 5 21 39 37 29 8
Biz çəki əmsalı 0.5- dəyişdirməklə digər tapşırıqlar çoxluğu alarıq. İndiki halda bizim üçün həm etibarlılıq həm də validlik eyni dərəcədə önəmlidir. Əgər, bizm üçün etibarlılıq daha önəmlidirsə məsələn, nəticələrin təkrarlanması daha çox vacibdirsə biz etibarlılıq əmsalına 0.8 çəki əmsalı verərik. Bu zaman aydındır ki, validliyin çəki əmsalı 0.2 olacaqdır.
Qeyd: Bizim təhsildə baxdığımız əksər testlər konkret sahəyə aid olduğundan etbarlılığın optimallaşmasına nail olmaq kifayət edər.