Əgər hər hansı bir şey varsa, onda onu ölçmək olar (E.Torndayk)

Bütün incəsənət musiqiyə yönəldiy kimi, bütün elmlər də ölçməyə yönəlir. (C.Santayana)

Giriş

Bu yazı üç hissədən ibarətdir.

I hissədə ölçü şkalaları, onların səviyyələri haqda zəruri məlumatlar verilir. Müxtəlif səviyyəli şkalaların xarakteristikaları haqda danışılır və nümunəlıər qətirilir. Birinci hissənin sonunda sosilal və hümanitar tədqiqatlarda geniş istifadə olunan və son dövrlərdə çox əhəmiyyət kəsb etməyə başlayan Lakert şkalasından söhbət açılır.

Hər üç hissədə şərhin anlaşılmasını asanlaşdırmaq məqsədilə eyni bir datadan istifadə olunur. Bu data 2009-cu ilin PİSA tədqiqatlarında şagirdlərin oxuduqları məktəbə olan münasibətlərini öyrənmək məqsədilə təklif olunan 4 mühakimədən ibarət sorğunun nəticələridir. Datanın bəzi aspektlərdən tədqiqi Tony Albanonun 2018-ci ildə çap olunan Introduction to Educational and Psychological Measurement Using R adlı kitabında vardır. Kitabı https://www.thetaminusb.com/intro-measurement-r/ mənbəsindən yükləmək olur. Data və onun tədqiq üçün lazım olan diğər funksiyalar müəllifin tərtib etdiyi epmr R paketində verilmişdir.

II hissədə bu sorğunun (PİSA09) nəticələrinin təsviri statistik analizi aparılır. Bu zaman http://jason.bryer.org/likert linkindəki materialdan istifadə edilir.

III hissədə isə PİSA09-datasının müasir test nəzəriyyəsinin vasitələrilə analizinə baxılır. Burada isə bu sahədə geniş istifadə olunan mirteRm paketlərindən istifadə edilir.

Ölçmə anlyışına giriş

Hər bir ölçmənin nəticəsinə, ölçülən obyektin xassəsinin ədədi ifadəsi kimi baxmaq olur və ənənəvi olaraq ölçməyə, elmi tədqiqatların zəruri və vacib bir tərkib hissəsi, kompanenti kimi baxılır. Ümumiyyətlə, ölçüləbilmə elmliyin də meyarı rolunu oynayır. Əğər, biz obyektlərin, proseslərin xassələrini seçib onun əlamətlərini ölçməsək və onun əsasında səbəb-nəticə əlaqələrini müəyyən etməsək, aparılan tədqiqatın elmliyindən və obyektivliyindən danışa bilmərik. Bu prinsip yalnız təbiyyət elmlərində yox həm də hümanitar və sosial tədqiqat sahələrində də doğrudur.

Hal-hazırda, aparılan sosial tədqiqatların nəticələri ilə geniş ictimaiyyəti tanış etmək üçün tədqiqatın qarşıya qoyduğu məqsəd, onun aparılması üçün zəruri datanın toplanılması qaydası və emalı üçün istifadə olunan proqramlar haqqında ətraflı və mümkün qədər anlaşılan formada məlumat verilməlidir. Burada, son dövrlərdə geniş yayılmş praktika ondan ibarətdir ki, əldə olunan data hardasa bir bazada digər istifadəçilər üçün əlçatan bir yerdə yerləşdirilir. Sonra isə datanın emalında istifadə edilən proqram kodları aşkar formada verilir. Belə ki, istənilən maraqli tərəf datanı köçürüb tədqiqatı təkrar aparmaq imkanı əldə etmiş olur. Datanın tələb olunan məqsədə müvafiq emal prosesinin aparılması üçün çoxsaylı proqramlar (ödənişliödənişsiz ) vardır. Bu proqramlardan ən geniş istifadə olunanlardan biri də R statistik paket proqramıdır. Bu proqram ödənişsizdir, istifadə üçün çoxsaylı hazır paketləri vardır. Biz də ondan istifadə edəcəyik.

Bu yazıda biz sosial tədqiqatlarda geniş istifadə olunan Lakert şkalası haqda məlumat verəcəyik. Məqsəd, həm klassik həm də müasir test nəzəriyyəsinin imkanlarının Lakert şkalasının emalında istıfadəsini nümayiş etdirməkdir.

Ölçmənin nəticəsində alınan şkalaların (ölçü şkalaları) təsnifatı

Əslində, ölçmədən danışılanda mütləq şkaladan söhbət getməlidir. Yəni, ölçmənin nəticəsində alınan ədədlər çoxluğu həqiqi ədədlər çoxluğunun bir alt çoxluğu kimi həqiqi ədədlər çoxluğunun hansı xassələrini özündə ehtiva edir, saxlayır. Belə olduğu halda, şkala özündə həqiqi ədədlər çoxluğunun nə qədər çox xassəsini saxlayarsa o bir o qədər zəngindir və orada daha çox riyazi, statistik və məntiqi əməlləri aparmaq mümkün olur.

Qeyd edək ki, ölçmə məsələlərindən danışarkən şkala anlayışından başlayanda bir çox oxucunun, xüsusən hümanitar sahədə çalışanların oxumağa maraqları sönür. Bu bir növ orta məktəb riyaziyyat kursunda ehtimal nəzəriyyəsinə girişı birləşmələr nəzəriyyəsindən (kombinatorikadan) başlamağa bənzəyir. Lakin, ölçmənin nəticəsinin hansı şkalada alındığını bilmək çox vacib məsələdir. Çünki, şkalada bu və ya digər riyazi, statistik və ya məntiqi əməlin aparılması bir başa şkalanın xüsusiyyətindən asılıdır və çox zaman yanliş nəticələr şkalada onun imkan vermədiyi əməllərin aparılması nəticəsində alınır

Aşağıdakı üç əsas əlamətin (atributun) varlığı, yaxud yoxluğu ölçü şkalasının bu və ya digər növə aid olduğunu müəyyən edir. Şkala nizamlanmışdir deyilir o vaxt ki, şkalada ölçülən xassənin ifadəsinə uyğun gələn ədədlə ifadə olunan bir mövqe diğər mövqelərə nəzərən ya böyükdür, ya kiçikdir və yaxud ona bərabərdir. Şkala intervaldır deyilir o vaxt ki, onun üzərindəki müvqelər arasındakı məsafələr bərabərdir. Şkalanın sıfır nöqtəsi vardır, deyilir o vaxt ki, ölçülən əlamətin ifadəliliyinə uyğun gələn ədədlər çoxluğunda ölçülən xassənin tamamilə olmadığını ifadə edən və 0-la işarə olunan bir mövqe vardır. Bəzən, bu mövqeyə şkalanın hesablama başlanğıcı da deyilir.

Ölçü şkalalarının ən ümumi təsnifatı, onlaraın iki hissəyə, metrik şkalalara (məsələn, kiloqram, metr, dərəcə, manat və sairə kimi ölçü vahidlərinin təyin edilməsi mümkün olan) və qeyri-metrik şkalalara (hansılardakı ölçü vahidi təyin etmək mümkün deyil) bölünməsidir.

Metrik şkalalar daha güclüdür. Belə ki, onlar ölçülən obyektlərin xassələrini daha yaxşı differensiallaşdırır. Yəni, ölçülən obyektin müxtəlifliyi haqda daha zəngin məlumata malikdirlər. Qeyri-metrik şkalara nominal (nominal scale) və nizam şkalası (ordinal scale) aiddir.

Nominal şkalada ölçü şkalasının yuxarıda geyd olunan üç əsas atributlarından heç birisi, yəni nizamlılıq, intervallılıqsıfır nöqtəsinin varlığı xüsusiyyətləri olmur. Nominal şkaladan obyektlərin təsnifatında, yaxud identifikasiyasında istifadə olunur. Bu zaman obyektlər siniflər üzrə elə qruplaşdırılır ki, hər bir sinfin içərisindəki obyektlər ülçülən xassə üzrə eyni, yaxud identik olurlar.

Bu şkalada ölçülən xassələrə aid misal olaraq, sosial tədqiqatlarda geniş istifadə olunan Cins mənsubiyyətini göstərmək olar. Bu dəyişənin iki kateqoriyası vardır, KişiQadın. Ümumiyyətlə, kateqoriyaların sayı ən azı iki ola bilər. Kateqoriyaların kodlaşdırılmasında Kişi-lər məsələn, “1” kimi, Qadın-lar isə “2” kimi ifadə oluna bilərlər. Nəticədə, hansı kateqoriyada obyektlərin sayının çoxluğundan asılı olaraq qərar qəbul etmək olar kişilər çoxdur yoxsa qadınlar. Lakin, bu məlumatın əsasında kateqoriyalar üzərində hər hansı bir riyazi, və yaxud məntiqi əməl həyata keçirmək olmur. Nominal şkalada ölçülən digər xassələrə misal olaraq dini mənsubiyyəti, bu və ya digər millətə aidolmanı, doğumyerini, evliliyi və sairələri göstərmək olar.

Bu şkalada dəyişənlərin kateqoriyaları faktiki olaraq ədədlər deyil və onları bir-birləri ilə yalnız onlara daxil olan müşahıdələrin sayı ilə müqayisə etmək olur.

Baxmayaraq ki,bu şkalada təmsil olunan məlumatlarla heç bir riyazi və ya məntiqi əməl aparmaq mümkün olmur, burada da bəzi statistik hipotezləri yoxlayan prosedurlar vardır.

Nizam şkalasında (ordinal scal) qeyd olunan mövqelərin nizami vardır, lakin intervallıq və sıfır nöqtəsinin varlığı atributları yoxdur. Bəzən bu şkalaya ranqlar şkalası-da deyilir.

Nizam şkalası sosial və hümanitar tətqiqatlarda ən çox yayılmış şkaladır. Nizam şkalasında ölçmənin nəticəsində nizamlanmış mövqelər alınır. Nominal şkalada olduğundan fərqli olaraq burada ixtiyari iki müxtəlif mövqenin birinin diğərindən böyüklüyündən və ya kiçikliyindən danışmaq olur.

İntrervallar şkalasında (interval scale) nizam və intervallılıq vardır. Lakin sıfır nöqtəsi yoxdur. Bu şkalada ölçülən xassənin standart ifadəsi kimi, tədqiq olunan obyektə qarşı ölçü vahidi deyilən bir ədəd müəyyən edilir. Şkalanın müxtəlif hıssələrində qonşu mövqelər arasında məsafələr bərabər olur. Bu səbəbdən, burada müxtəlif (o cümlədən, qonşu olmayan) kateqoriyalar arasındakı məsafələri də dəqiq müəyyən etmək olur.

İntervallar şkalasına aid misallar: vaxtın və zamanın qeydiyyatı, Selsi, Farenqeyt kimi temperatur şkalaları və sairələrini göstərmək olar. İntervallar şkalasında sıfır başlanğıc nöqtəsinin və ölçü vahidinin seçilməsi bir növ ixtiyarıdir. Bu zaman meydana çıxan problemlər haqda təsəvvür əldə etmək üçün bizə yaxşı məlum olan Selsi temperatur şkalasına yaxından baxaq:

Bu şkalanın geniş şərhini vermək fikrindəyik çünki, sosial tədgiqatlarda istifadə olunan ölçü şkalalarında (Məsələn, Rasch şkalasında) sıfır nöqtəsinin və ölçü vahidinn təyini çox problemli məsələ olur. Beləki, hər bir sorğu dəsti (test) demək olar ki, öz fərdi şkalasını yaradır və şkalalarda sıfır nöqtəsi rolunu ədəd oxunun istənilən nöqtəsi oynaya bilir.

Bildiyimiz kimi, Selsi temperatur şkalası qurularkən, suyun iki aqreqat halına (donmaqaynama) qarşı uyğun olaraq 0 (sıfır) və 100 (yüz) ədədləri qoyulur. Sonra, bu [1,100]-parçası yüz bərabər hissəyə bölünür və Selsi temperatur vahidi olaraq bu hissələrdən biri qəbul edilir. Deməli, bu şkalada sıfır nöqtəsi suyun donma temperaturunu bildirir. Yəni, bu nöqtə heç də istilik xassəsinin tam olmamasını bildirmir, ifadə etmir. Selsi şkalasında istiliyin tamam olmamasını ifadə edən ədəd çox aşağıda (-273 Selsi) mənfi iki yüz yetmiş üçüncü dərəcədədir. Şkala intervaldır çünki, donma və qaynama anları arasındakı məsafə bərabər yerlərə bölünüb və bu bölünmə prinsipi bütün ədəd oxuna davam etdirilib.

Onu da qeyd ədək ki, biz burada yalnız, sosial tədqiqatların və nailiyyət testlərinin nəticələrində alınan ilkin şkalalardan söhbət edəcəyik. Lakin, nəticələrin təhlili və geniş ictimaiyyətə çatdırılması məqsədilə belə şkalaların üzərində çoxsaylı müxtəlif çevrilmələr aparılır ki, biz onlara toxunmayacayıq.

Qiymətləndirmə ilə ölçmənin fərqi

Ədəbiyyatlarda ölşmə anlayışının çoxlu tərifləri vardır. Onlardan kifayət qədər genişi belədir: ölçü şkalası ilə xarakterizə olunan, empirik obyektlərin hər birinə qarşı müəyyən qayda ilə ədədlərin qoyulmasına ölçmə deyilir. Ölçmənin bu tərifi də mübahisəsis qəbul edilmir.

Adətən, ölçməni kəmiyyət miqdarının diqər xarakteristikası olan qiymətləndirmə-dən, fərqləndirirlər. Ölçmə və qiymətləndirmənin fərqləri aşağıdakı xarakteristikalara əsaslanır:

Qiymətləndirmə kəmiyyətin, yaxud parametrin təxmini qiymətini verir və ölçmədən fərqli olaraq kəmiyyət və onun miqdar xarakteristikası arasında müəyyən vahidlə ifadə olunmuş bir qiymətli uyğunluq yarada bilmir. Bu zaman, belə qəbul edilir ki, əgər nəticə qeyri metrik şkalada alınırsa, onda tədqiq olunan obyektin xassəsinin qiymətləndirilməsi aparıllır. Ölçmədə isə nəticə ya metrik şkalada, ya da nəticələrin hansısa bir üsulla metrik şkalaya gətirilməsindən alınır.

Laykert şkalası (Likert scale)

Laykert şkalası 1932-ci ildə amerikalı sosial psixoloq Rensis Laykert tərəfindən təklif edilmişdir. https://en.wikipedia.org/wiki/Rensis_Likert. O, bu şkalanı Kolumbiya universitetində (Columbia University) aspiranturada oxuyarkən doktorluq dissertasiyasını hazırlayarkən işləmişdir. Həmin vaxtdan bəri bu şkala müxtəlif yönümlü sorğularda respondentlərin tədqiqat predmetinə olan münasibətlərinin öyrənilməsində geniş istifadə olunur.

Lakert şkalasının qrulmasında belə fərz edilir ki, respondent ona təklif edilən mühakimələrin hər birinə verilən mövqelərdən (punktlardan) birini seçməklə öz münasibətini bildirmiş olur. Respondentin yekun şkalada yeri isə hər bir mühakimədən aldığı balların cəmi ilə müəyyən olunur.

Laykert öz doktorluq dissertasiyasında təklif ediyi bu şkalanın nizam şkalası olduğunu söyləmiş və bunu əsaslandırmışdır.

Qeyd eək ki, baxmayaraq ki, Laykertin özü cəmi beş mövqeli şklaya baxmışdır, hal-hazırda 3, 4, 6, 7… mövqeyi olan şkalalar da Laykert şkalası adlanır. Bundan başqa, belə şkalalarda neytral mövqey ola da bilər, olmaya da bilər. Şkalada neytral mövqeyin olmaması sorğunu tərtib edənlərin, respondentin sorğuya mütləq ya müsbət, ya da mənfi münasibəti bildirmək istəyindən irəli gəlir. Çünki, bəzi sorğularda respondentlər təkliflərə bu və ya diğər səbəbdən neytral olmayan münasibət bildirməkdən çəkinirlər.

Laykert şkalasının bir xüsusi halı da hamıya yaxşı məlum olan dixotomik, yəni cəmi 2 mövqeyli, 01-lə kodlaşdırılan şkaladır.

Laykert şkalasında mövqelər tezliyə, əhəmiyyət dərəcəsinə, razılıq dərəcəsinə, miqdara və sairə bu kimi kateqoriyalarla ifadə oluna bilərlər. Aşağıda mövqeləri müxtəlif növ kateqoriyalarla ifadə edilmiş mühakimələr verilmişdir. Mövqelərin sonundakı mötərizədə verilən ədəd kodlaşdırmada mövqeyə verilən baldır:

Razılıq kateqoriyaları ilə ifadə olunan mühakimələrdə

  • Tam razıyam-(5bal), Razıyam-(4bal), Neytralam-(3bal), Razı deyiləm-(2bal), Heç razı deyiləm-(1bal)

Tezlik kateqoriyaları ilə ifadə olunan mühakimələrdə

  • Həmişə-(5bal), Tez-tez-(4bal), Bəzən-(3bal), Hərdən bir-(2bal), Heç vaxt-(1bal)

Əhəmiyyətlilik kateqoriyaları ilə ifadə olunan mühakimələrdə

  • Çox vacibdir-(4bal), Vacibdir-(3bal), Müəyyən dərəcədə vacibdir-(2bal), Vacib deyl-(1bal)

Keyfiyyət kateqoriyaları ilə ifadə olunan mühakimələrdə

  • Çox yaxşıdır-(5bal), Yaxşıdır-(4bal), Qəbul olunandır-(3bal), Pisdir-(2bal), Çox pisdir-(1bal)

Laykert şkalasında kodlaşma məsələn, beş mövqeli şkalada 1, 2, 3, 4, 5 kimi ola bilər. Lakin, şkalda kodlaşmada ixtiyarı 5 ardıcıl tam ədəddən də istifadə oluna bilər. Məsələn, -2, -1, 0, 1, 2.

Kodlaşmanın istiqaməti (yəni, kodlaşmada istifadə olunan ədədlər artma sırasıyla yoxsa, azalma sırasıyla düzülübdür) mühakimənin formalaşdırılmasından asılıdır. Mühakimənin özünə isə bu xarakteristikasından asılı olaraq pozitiv və ya neqativ yaxud, düzünə və ya tərsinə formalaşdırılmış mühakımə deyilir.

Eyni bir anket sorğusunda həm düzünə həm də tərsinə formalaşdırılmış mühakimələr olarsa, inteqrativ (ümumiləşdirilmiş) balların (mühakımələrin hamısının nəticələrini bir yerdə xarakterizə edən) alınması üçün tərsinə formalaşdırılmış mühakımələrin kodları güzgü simmetriyasındakı kimi dəyişdirilməlidir. Yəni, bildirilən münasibətin çöxluğunu ifadə edənə daha çox bal verilməlidir.

Məktəblərdədə öyrədilənlər haqda fikriniz

Nümunə üçün, 2009-cu ildə PİSA tədqiqatlarında şagirdlərin oxuduqları məktəbə olan münasibətlərini öyrənmək məqsədilə təklif olunan və aşağıda veriləcək 4 mühakimədən ibarət Məktəblərdədə öyrədilənlər haqda fikriniz adlı sorğuya baxaq:

Bu sorğunun hər bir mühakiməsində 4 mövqe, yaxud kateqoriya vardır. Mövqelər, Heç razı deyiləm, Razı deyiləm, Razıyam, Tam razıyam kimi qeyd edilmişdir. Hər bir şagirtdən yalnız bir mövqenin seçilməsi tələb olunur. Mühakimələrin adları və onların tərkibi belədir:

  1. ST33Q01- Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb.
  2. ST33Q02- Məktəb illərinə vaxtım hədər gedib.
  3. ST33Q03- Məktəb mənə doğru qərar verməkdə köməklik göstərib.
  4. ST33Q04- Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib.

Qeyd edək ki, birinci iki mühakimə tərsinə ikinci iki mühakimə isə düzünə formalaşdırılıbdır. Doğurdan da məsələn, birinci mühakimədə yuxarı münasibət Tam razıyam mövqeyinin seçilməsi, şagirdin öyrənilən məsələyə (Məktəblərdə öyrədilənlər haqda fikriniz) münasibətinin çox aşağı olmasını ifadə edir və əksinə, bu mühakimədə aşağı balla kodlaşan Heç razı deyiləm mövqeyinə üstünlük verməsi öyrənilən məsələyə münasibətinin çox yuxarı olmasını ifadə edir.

Bu dörd təklifə bildirilən münasibətlərdən bir yerdə, inteqrativ formada istifadə edilə bilinnəsi üçün əvvəlcə, kodlaşmada birinci iki təklifin kodları tərsinə dəyişdirilməlidir. Aşağıdakı kod çəngəsində (kod chunk) birinci iki mühakimənin kodlaşdırılması tərsinə dəyişdirilir.

Bu kod çəngəsinin sətirlər üzrə açılışı belədir:

Böyük mötərizənin içərisindəki r o deməkdir ki, R proqram yüklənilsin.

library(epmr) o deməkdir ki, epmr paketi yüklənilsin.

Bundan sonra gələn iki sətir epmr paketindəki recode funksiyasından istifadə edərək PISA09 datasındakı st33q01st3302 təkliflərinin kodlarını tərsinə dəyişdirir. Kodları tərsinə dəyişdirilmiş mühakimələrin adları isə müvafiq olaraq st33q01rst3302r kimi yazılır.

library(epmr)
# İki dəyişənin kodunun tərsinə dəyişməsi
PISA09$st33q01r <- rescore(PISA09$st33q01)
PISA09$st33q02r <- rescore(PISA09$st33q02)

Biz bu mühakimələrin kodlaşmasının doğurdan da tərsinə dəyişdirildiyini yoxlaya bilərik.

Doğurdan da st33q01-mühakiməsində şagirdlərin bildirdikləri mövqelərlərin tezliyi ilə st33q01r-mühakiməsində şagirdlərin bildirdikləri mövqelərlərin tezlikləri bir-birlərinə əksdir. Başqa sözlə, st33q01-də birinci kateqoriyanın tezliyi-13665, st33q01r-də dördüncü kateqoriyanın tezliyinə, ikinci kateqoriyanın tezliyi-20482, isə st33q01r-də üçüncü kateqoriyanın tezliyi ilə eyni olur.

table(PISA09$st33q01) ##  Tərsinə formalaşdırılmış ST33Q01-tapşırığı
## 
##     1     2     3     4 
## 13665 20482  7725  2175
table(PISA09$st33q01r) ## ST33Q01r-ST33Q01 tapşırığı yenidən kodlaşandan sonra
## 
##     1     2     3     4 
##  2175  7725 20482 13665
table(PISA09$st33q02) ##  Tərsinə formalaşdırılmış ST33Q02-tapşırığı
## 
##     1     2     3     4 
## 21263 19294  2457  1052
table(PISA09$st33q02r) ## ST33Q02r-ST33Q02 tapşırığı yenidən kodlaşandan sonra
## 
##     1     2     3     4 
##  1052  2457 19294 21263

Geyd etmək lazımdır ki, hər bir Lakert şkalasının qurulması iki mərhələdən ibarət olur. Birinci mərhələdə hər bir fərdi mühakimə aşağıdan yuxarıya döğru artan mövqelərlə kateqoriyalara bölünür, yaxud ranqlaşdırılir və artan tam ədədlərlə kodlaşdırılır. İkinci mərhələdə hər bir fərdin cavablandırdığı mühakimədəki ballar uyğun kateqoriyalar üzrə topalanaraq yekun,inteqrativ cavablar alınır. Lakert şkalası dedikdə əslində, məhz bu yekunda alınan inteqrativ şkala nəzərdə tutulur.

PİSA2009-cu ildə təklif olunan bu 4 mühakimədən ibarət sorğunun yekun şkalasında ballar 4-16 aralığında dəyişir.Çünki, şagird birinci iki mühakimədə axırıncı mövqeyi, ikinci iki mühakimədə isə birinci mövqeyi seçərsə yekunda 4 bal, və əksinə, birinci iki mühakimədə birinci mövqeyi, ikinci iki mühakimədı isə axırıncı mövqeyi seçərsə, yekunda 16 cəmi 16 bal toplamış olar.

Aşağıdakı kod çəngəsində PİSA09-tədqiqatındakı Məktəblərdə öyrədilənlər haqda fikirləriniz adı altında keçirilən sorğunun yekun şkalasının təsviri statistikası verilir. Yekun şkalada balların paylanmsından görünür ki, sorğunu 44878 şagird cavablandırmış, paylanmanın orta qiyməti 12,3 medianı 13, maksimum bal-16, minimun bal-0 olmuşdur. Minimum balın sıfır olması, şagirdin anketin heç bir mühakiməsinə münasibətini bildirməməsinin nəticəsidir.

library(epmr)
atsitems <- c("st33q01r", "st33q02r", "st33q03", "st33q04")
# Calculate total scores again using apply(), and look at # #descriptives
PISA09$atotal <- apply(PISA09[, atsitems], 1, sum,
                       na.rm = TRUE)
T1 <- PISA09[,atsitems]
dstudy(T1)
## 
## Descriptive Study
## 
##          mean median    sd   skew kurt min max     n na
## st33q01r 3.04      3 0.825 -0.595 2.84   1   4 43789  0
## st33q02r 3.38      3 0.699 -1.095 4.36   1   4 43789  0
## st33q03  2.88      3 0.747 -0.606 3.45   1   4 43789  0
## st33q04  3.26      3 0.740 -0.943 3.93   1   4 43789  0

II hissə

Laykert tipli şkalaların təsviri

Bu bölmədə (https://rpubs.com/m_dev/likert_summary) linkində ollan materialdan istifadə olunur.

Əvvəlcə, yuxarıda iki mühakiməsi yenidən kodlaşdırılan sorğunun nəticələrinin bəzi təsviri statiskalarını verək.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)
dim(T1)
## [1] 44878     4
T1$st33q01r <- as.factor(T1$st33q01r)
T1$st33q02r <- as.factor(T1$st33q02r)
T1$st33q03 <- as.factor(T1$st33q03)
T1$st33q04 <- as.factor(T1$st33q04)
str(T1)
## 'data.frame':    44878 obs. of  4 variables:
##  $ st33q01r: Factor w/ 4 levels "1","2","3","4": 2 2 3 4 3 3 3 2 3 2 ...
##  $ st33q02r: Factor w/ 4 levels "1","2","3","4": 3 3 4 4 3 3 3 3 4 3 ...
##  $ st33q03 : Factor w/ 4 levels "1","2","3","4": 2 1 3 3 3 3 1 3 1 3 ...
##  $ st33q04 : Factor w/ 4 levels "1","2","3","4": 3 3 4 3 3 3 3 2 1 3 ...
table(T1$st33q01r)
## 
##     1     2     3     4 
##  2175  7725 20482 13665
long_T1 <- T1 %>% gather(items, Ballar,1:4)
head(long_T1)
##      items Ballar
## 1 st33q01r      2
## 2 st33q01r      2
## 3 st33q01r      3
## 4 st33q01r      4
## 5 st33q01r      3
## 6 st33q01r      3
str(long_T1)
## 'data.frame':    179512 obs. of  2 variables:
##  $ items : chr  "st33q01r" "st33q01r" "st33q01r" "st33q01r" ...
##  $ Ballar: chr  "2" "2" "3" "4" ...
long_T1$items <- as.factor(long_T1$items)
long_T1$Ballar <- as.numeric(long_T1$Ballar)
boxplot(long_T1$Ballar ~ long_T1$items)

Əvvəlcə, datanı yükləyək

setwd("~/Desktop/IRT_hamisi/Lukert")
library(epmr)
#############################
atsitems <- c("st33q01", "st33q02", "st33q03", "st33q04")
# Calculate total scores again using apply(), and look at # #descriptives
T1 <- PISA09[,atsitems]
dim(T1)
## [1] 44878     4
str(T1)
## 'data.frame':    44878 obs. of  4 variables:
##  $ st33q01: num  3 3 2 1 2 2 2 3 2 3 ...
##  $ st33q02: num  2 2 1 1 2 2 2 2 1 2 ...
##  $ st33q03: num  2 1 3 3 3 3 1 3 1 3 ...
##  $ st33q04: num  3 3 4 3 3 3 3 2 1 3 ...
sum(is.na(T1))
## [1] 3260
colSums(is.na(T1)) ## 
## st33q01 st33q02 st33q03 st33q04 
##     831     812     829     788
TN <- na.omit(T1)                 
dim(TN)
## [1] 43789     4
sum(is.na(TN))
## [1] 0
str(TN)
## 'data.frame':    43789 obs. of  4 variables:
##  $ st33q01: num  3 3 2 1 2 2 2 3 2 3 ...
##  $ st33q02: num  2 2 1 1 2 2 2 2 1 2 ...
##  $ st33q03: num  2 1 3 3 3 3 1 3 1 3 ...
##  $ st33q04: num  3 3 4 3 3 3 3 2 1 3 ...
##  - attr(*, "na.action")= 'omit' Named int [1:1089] 15 41 46 143 169 186 202 206 230 250 ...
##   ..- attr(*, "names")= chr [1:1089] "15" "41" "46" "143" ...
TN$st33q01 <- as.factor(TN$st33q01)
TN$st33q02 <- as.factor(TN$st33q02)
TN$st33q03 <- as.factor(TN$st33q03)
TN$st33q04 <- as.factor(TN$st33q04)
str(TN)
## 'data.frame':    43789 obs. of  4 variables:
##  $ st33q01: Factor w/ 4 levels "1","2","3","4": 3 3 2 1 2 2 2 3 2 3 ...
##  $ st33q02: Factor w/ 4 levels "1","2","3","4": 2 2 1 1 2 2 2 2 1 2 ...
##  $ st33q03: Factor w/ 4 levels "1","2","3","4": 2 1 3 3 3 3 1 3 1 3 ...
##  $ st33q04: Factor w/ 4 levels "1","2","3","4": 3 3 4 3 3 3 3 2 1 3 ...
##  - attr(*, "na.action")= 'omit' Named int [1:1089] 15 41 46 143 169 186 202 206 230 250 ...
##   ..- attr(*, "names")= chr [1:1089] "15" "41" "46" "143" ...
##############
names(TN) <- c(
  st33q01 = "Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb.",
  st33q02 = "Məktəb illərinə vaxtım hədər gedib",
  st33q03 = "Məktəb mənə doğru qərar verməkdə köməklik göstərib",
  st33q04 = "Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib")

Aşağıdakı kod çəngəsində yuxarıda datanı düzəltmək üçün istifadə etdiyimiz epmr paketi R-ın bu sesiyasında istifadədən çixarılır və likert paketi yüklənilir. Bu ona görə edilir ki, bu iki paketdə bir-birlərini təkrarlayan funksiyalar vardır.

detach(package:epmr)

options(digits=2)

require(likert)
## Loading required package: likert
## Loading required package: xtable
## 
## Attaching package: 'likert'
## The following object is masked from 'package:dplyr':
## 
##     recode

Bu kodla bizim TN datasına likert funksiyası tətbiq edilir.

library(likert)
lTN <- likert(TN)
lTN #print(lTN)
##                                                                Item    1    2
## 1 Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb. 31.1 46.5
## 2                                Məktəb illərinə vaxtım hədər gedib 48.3 43.7
## 3                Məktəb mənə doğru qərar verməkdə köməklik göstərib  5.5 17.8
## 4     Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib  3.2  7.9
##      3    4
## 1 17.5  4.9
## 2  5.6  2.4
## 3 59.5 17.2
## 4 48.1 40.7
summary(lTN)
##                                                                Item low neutral
## 4     Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib  11       0
## 3                Məktəb mənə doğru qərar verməkdə köməklik göstərib  23       0
## 1 Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb.  78       0
## 2                                Məktəb illərinə vaxtım hədər gedib  92       0
##   high mean   sd
## 4 88.8  3.3 0.74
## 3 76.7  2.9 0.75
## 1 22.4  2.0 0.83
## 2  7.9  1.6 0.70
summary(lTN, center=1.5)
##                                                                Item  low
## 4     Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib  3.2
## 3                Məktəb mənə doğru qərar verməkdə köməklik göstərib  5.5
## 1 Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb. 31.1
## 2                                Məktəb illərinə vaxtım hədər gedib 48.3
##   neutral high mean   sd
## 4       0   97  3.3 0.74
## 3       0   94  2.9 0.75
## 1       0   69  2.0 0.83
## 2       0   52  1.6 0.70
summary(lTN, center=2)
##                                                                Item  low
## 4     Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib  3.2
## 3                Məktəb mənə doğru qərar verməkdə köməklik göstərib  5.5
## 1 Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb. 31.1
## 2                                Məktəb illərinə vaxtım hədər gedib 48.3
##   neutral high mean   sd
## 4     7.9 88.8  3.3 0.74
## 3    17.8 76.7  2.9 0.75
## 1    46.5 22.4  2.0 0.83
## 2    43.7  7.9  1.6 0.70
library(likert)
library(dplyr)
xtable(lTN)
## % latex table generated in R 4.3.1 by xtable 1.8-4 package
## % Thu Nov 16 10:14:24 2023
## \begin{tabular}{lrrrrr}
##   \hline
## Item & n & mean & sd & low & high \\ 
##   \hline
## Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib &  & 3.26 & 0.74 & 11.17 & 88.83 \\ 
##   Məktəb mənə doğru qərar verməkdə köməklik göstərib &  & 2.88 & 0.75 & 23.31 & 76.69 \\ 
##   Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb. &  & 1.96 & 0.83 & 77.58 & 22.42 \\ 
##   Məktəb illərinə vaxtım hədər gedib &  & 1.62 & 0.70 & 92.09 & 7.91 \\ 
##    \hline
## \end{tabular}
plot(lTN)

plot(lTN, ordered=FALSE, group.order=names(TN))

library(likert)
plot(lTN, centered=FALSE, wrap=30)

plot(lTN, center=1.5, wrap=30)

plot(lTN, center=2, wrap=30)

plot(lTN, center=2, include.center=FALSE, wrap=30)

plot(lTN, center=2, include.center=FALSE, wrap=20)

library(likert)
library(grid)
library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
plot(lTN, plot.percents=TRUE, plot.percent.low=FALSE, plot.percent.high=FALSE)

plot(lTN, center=2, plot.percents=TRUE, plot.percent.low=FALSE, plot.percent.high=FALSE)

Mövqelər üzrə rənglər dəyişdirilir

plot(lTN, colors=c('orange','darkorange','darkblue','blue'))

Diaqrama cavabların sayını bildirən histoqramlar da əlavə olunur.

#Include histogram with response counts
plot(lTN, include.histogram=TRUE)

Sıxliq qrafikləri

# Density plot
plot(lTN, type='density')

plot(lTN, type='density', facet=FALSE)

plot(lTN, type='density', facet=FALSE) + guides(color = guide_legend(title="New Legend Title"),
fill = guide_legend(title="New Legend Title"))

# Heat map
plot(lTN, type='heat', wrap=30, text.size=4, digits = 0)

plot(lTN, type='heat', wrap=30, text.size=4, digits = 3)

# Reverse the levels
TN.reverse <- reverse.levels(TN)
lTN.reverse <- likert(TN.reverse)
print(lTN.reverse)
##                                                                Item    4    3
## 1 Məktəb məni, məktəb illərindən sonrakı həyata, çox az hazırlayıb.  4.9 17.5
## 2                                Məktəb illərinə vaxtım hədər gedib  2.4  5.6
## 3                Məktəb mənə doğru qərar verməkdə köməklik göstərib 17.2 59.5
## 4     Məktəb mənə əmək fəaliyyətimdə faydalı olacaq şeyləri öyrədib 40.7 48.1
##      2    1
## 1 46.5 31.1
## 2 43.7 48.3
## 3 17.8  5.5
## 4  7.9  3.2
plot(lTN.reverse)

III Hissə

Lakert şkalası üçün bəzi təsviri statisyikalar və müvafiq modelin seçilməsi

İlk öncə biz yuxarıda baxdığımız, 2009-cu ildə PİSA tədqiqatlarında şagirdlərə təklf edilmiş Məktəblərdədə öyrədilənlər haqda fikriniz sorğusunun nəticələrindən ibarət datanı R proqramına yükləyək. Sonra birinci iki mühakimənin (st33q01 və st33q02) kodlaşmasını tərsinə dəyişək. Nəticədə T1 datasını alarıq.

library(epmr)
## 
## Attaching package: 'epmr'
## The following object is masked _by_ '.GlobalEnv':
## 
##     PISA09
# İki dəyişənin kodunun tərsinə dəyişməsi
PISA09$st33q01r <- rescore(PISA09$st33q01)
PISA09$st33q02r <- rescore(PISA09$st33q02)
#############################
atsitems <- c("st33q01r", "st33q02r", "st33q03", "st33q04")
# Calculate total scores again using apply(), and look at # #descriptives
T1 <- PISA09[,atsitems]

Indi isə T1 datasını müasir test nəzəriyyəsinin (İtem respons theory) tətbiqinə hazırlayaq. Aşağıdakı kod çəngəsinin birinci sətri T1 datasında neçə sətrin və neçə sütunun olduğunu göstərir. Başqa sözlə, bu 4 mühakimədən ibarət sorğunu cəmi neçə şagird cavablandırmışdır.

dim(T1) # 44878 sətir, 4 sütun.
## [1] 44878     4

Bu iki sətir kod çəngəsinin birinci sətrində bütün T1 datasında verilməyən cavabların ümumi sayı tapılır. İkinci kod sətrində isə verilməyən cavabların ayrı-ayrı mühakimələr üzrə paylanması tapılır.

sum(is.na(T1)) # 4 mühakımənin hamısı üzrə verilməyən #cavabların ümumi sayi-3260-dır. 
## [1] 3260
colSums(is.na(T1)) ## NA-lerin sutunlar wzre cemi
## st33q01r st33q02r  st33q03  st33q04 
##      831      812      829      788

Aşağıda birinci sətr kodda T1 datasından bütün verilməyən cavablar (onlar R-da NA kimi qeyd olunur) silinir və yeni əmələ qələn data TN kimi işarə edilir. İkinci sətr kodda yeni yaradılmış TN datasında verilməyən cavabların sayı hesablanır və onların sayının sıfır olduğu yəqin edilir.

TN <- na.omit(T1)                          # Apply na.omit iR
sum(is.na(TN))
## [1] 0

Aşağıdakı kod çəngəsinin birinci sətr kodda TN datasında olan kodların hamısı bir vahid azaldılır. Yəni, dörd mühakimənin hər birində kodlaşma artıq 1, 2, 3 və 4 kimi yox, 0, 1, 2 və 3 kimi olacaqdır. Yuxarıda, Lakert şkalalarının qruluşundan söhbət açarkən bu iki növ kodlaşmanın ekvivalent olduğun demişdik. Lakert tipli şkalalarda və ümumiyyətlə, politomik kodlaşdırılmış tapşırıqlarda kodlaşmanın sıfırdan başlanması bir çox paketlərin, o cümlədən bizim tətbiq etmək istədiyimiz eRmmirt paketlərinin tətbiqləri üçün zəruridir. Yerdə qalan dörd sətir kodda isə veilən dörd mühakimə üzrə yeni kodların (0, 1, 2 və 3) mövqelər üzrə paylanmasını verir.

TNS <- TN - 1
table(TNS$st33q01r)
## 
##     0     1     2     3 
##  2156  7661 20372 13600
table(TNS$st33q02r)
## 
##     0     1     2     3 
##  1032  2432 19155 21170
table(TNS$st33q03)
## 
##     0     1     2     3 
##  2426  7783 26052  7528
table(TNS$st33q04)
## 
##     0     1     2     3 
##  1422  3470 21082 17815

Aşağıdakı kod çəngəsində əvvəlcə eRm paketi yüklənilir. Sonra bu paketə daxil olan PCM funksiyası ilə TNS datasındakı dörd mühakimənin kateqoriyalarının keçid nöqtələri hesablanır.

library(eRm)
mod.pcm<-PCM(TNS, sum0 = F)
mod.pcm$conv
## [1] 1
thresholds(mod.pcm)$threshtable$"1" 
##          Location Threshold 1 Threshold 2 Threshold 3
## st33q01r     1.48       0.000       0.976         3.5
## st33q02r     0.73       0.042      -0.379         2.5
## st33q03      1.91       0.159       0.870         4.7
## st33q04      1.02       0.156      -0.028         2.9
cbind(thresholds(mod.pcm)$threshpar, thresholds(mod.pcm)$se.thresh)
##                           [,1]  [,2]
## thresh beta st33q01r.c1  0.000 0.000
## thresh beta st33q01r.c2  0.976 0.034
## thresh beta st33q01r.c3  3.452 0.033
## thresh beta st33q02r.c1  0.042 0.049
## thresh beta st33q02r.c2 -0.379 0.035
## thresh beta st33q02r.c3  2.516 0.031
## thresh beta st33q03.c1   0.159 0.036
## thresh beta st33q03.c2   0.870 0.031
## thresh beta st33q03.c3   4.687 0.035
## thresh beta st33q04.c1   0.156 0.043
## thresh beta st33q04.c2  -0.028 0.033
## thresh beta st33q04.c3   2.938 0.032

Kateqoriya xarakteristik əyriləri (CCC)

plotICC(mod.pcm, 1,lwd = 3)

plotICC(mod.pcm, 2,lwd = 3)

plotICC(mod.pcm, 3,lwd = 3)

plotICC(mod.pcm, 4,lwd = 3)

Sorğuda iştirak edənlərin qiymətləndirilməsi Person latent trait, or ability score estimation

p.pcm <- person.parameter(mod.pcm) 
head(coef(p.pcm),20) 
##    1    2    3    4    5    6    7    8    9   10   11   12   13   14   16   17 
## 0.93 0.52 3.54 3.54 1.97 1.97 0.93 0.93 0.52 1.40 5.92 2.69 1.40 1.97 1.97 2.69 
##   18   19   20   21 
## 2.69 2.69 3.54 5.92
plot(p.pcm) 

Sorguda iştirak edənlərlə sualların qarşılıqlı durumu (Person-item map)

round (thresholds(mod.pcm)$threshtable$"1", 2)
##          Location Threshold 1 Threshold 2 Threshold 3
## st33q01r     1.48        0.00        0.98         3.5
## st33q02r     0.73        0.04       -0.38         2.5
## st33q03      1.91        0.16        0.87         4.7
## st33q04      1.02        0.16       -0.03         2.9
plotPImap(mod.pcm)  

Məlumat funksiyaları Information plot

plotINFO(mod.pcm,lwd = 3) 
## Warning in plotINFO(mod.pcm, lwd = 3): additional argument(s) ignored.

plotINFO(mod.pcm, type= "item", lwd = 3) 
## Warning in plotINFO(mod.pcm, type = "item", lwd = 3): additional argument(s)
## ignored.

RSM

Təkliflərin parametrlərinin hesablanması (Item parameter estimation)

detach(package:eRm)
library(mirt)
## Loading required package: stats4
## Loading required package: lattice
mod.rsm <- mirt(TNS, model=1,itemtype = "rsm", SE= TRUE) 
## 
Iteration: 1, Log-Lik: -213915.551, Max-Change: 0.91235
Iteration: 2, Log-Lik: -182056.366, Max-Change: 0.42265
Iteration: 3, Log-Lik: -177596.480, Max-Change: 0.29775
Iteration: 4, Log-Lik: -175368.409, Max-Change: 0.20118
Iteration: 5, Log-Lik: -174115.374, Max-Change: 0.13349
Iteration: 6, Log-Lik: -173399.075, Max-Change: 0.09029
Iteration: 7, Log-Lik: -172996.854, Max-Change: 0.06532
Iteration: 8, Log-Lik: -172777.446, Max-Change: 0.04899
Iteration: 9, Log-Lik: -172661.210, Max-Change: 0.03571
Iteration: 10, Log-Lik: -172600.956, Max-Change: 0.02550
Iteration: 11, Log-Lik: -172570.135, Max-Change: 0.01793
Iteration: 12, Log-Lik: -172554.409, Max-Change: 0.01254
Iteration: 13, Log-Lik: -172546.328, Max-Change: 0.00952
Iteration: 14, Log-Lik: -172542.105, Max-Change: 0.00748
Iteration: 15, Log-Lik: -172539.836, Max-Change: 0.00593
Iteration: 16, Log-Lik: -172537.303, Max-Change: 0.00575
Iteration: 17, Log-Lik: -172537.068, Max-Change: 0.00353
Iteration: 18, Log-Lik: -172536.924, Max-Change: 0.00290
Iteration: 19, Log-Lik: -172536.896, Max-Change: 0.00652
Iteration: 20, Log-Lik: -172536.638, Max-Change: 0.00191
Iteration: 21, Log-Lik: -172536.610, Max-Change: 0.00132
Iteration: 22, Log-Lik: -172536.591, Max-Change: 0.00138
Iteration: 23, Log-Lik: -172536.579, Max-Change: 0.00080
Iteration: 24, Log-Lik: -172536.572, Max-Change: 0.00063
Iteration: 25, Log-Lik: -172536.570, Max-Change: 0.00122
Iteration: 26, Log-Lik: -172536.559, Max-Change: 0.00037
Iteration: 27, Log-Lik: -172536.558, Max-Change: 0.00026
Iteration: 28, Log-Lik: -172536.557, Max-Change: 0.00032
Iteration: 29, Log-Lik: -172536.556, Max-Change: 0.00017
Iteration: 30, Log-Lik: -172536.555, Max-Change: 0.00013
Iteration: 31, Log-Lik: -172536.555, Max-Change: 0.00027
Iteration: 32, Log-Lik: -172536.554, Max-Change: 0.00008
## 
## Calculating information matrix...
coef(mod.rsm, simplify=T, IRTpars = TRUE)
## $items
##          a1   b1   b2  b3     c
## st33q01r  1 -2.6 -1.9 1.1  0.00
## st33q02r  1 -2.6 -1.9 1.1  1.05
## st33q03   1 -2.6 -1.9 1.1 -0.40
## st33q04   1 -2.6 -1.9 1.1  0.66
## 
## $means
## F1 
##  0 
## 
## $cov
##     F1
## F1 1.9
####
coef(mod.rsm, simplify=T, IRTpars=T) $ 'items'
##          a1   b1   b2  b3     c
## st33q01r  1 -2.6 -1.9 1.1  0.00
## st33q02r  1 -2.6 -1.9 1.1  1.05
## st33q03   1 -2.6 -1.9 1.1 -0.40
## st33q04   1 -2.6 -1.9 1.1  0.66

Sorğuda iştirak edənlərin nəticəyə görə yerləri (Person latent trait, or ability score estimation)

fscores(mod.rsm, method = "EAP", full.scores=T, 
        full.scores.SE = T) 

CCC, TCC, and information plots

itemplot(mod.rsm, 1, lwd = 3) 

itemplot(mod.rsm, 2, lwd = 3) 

itemplot(mod.rsm, 3, lwd = 3) 

itemplot(mod.rsm, 4, lwd = 3) 

plot(mod.rsm, type = "trace") 

plot(mod.rsm,lwd = 3) 

plot(mod.rsm, type = "info", lwd = 3)

Modelin dataya biçilməsi

#######Model-data fit and model comparison
M2(mod.rsm, type = "C2") 
itemfit(mod.rsm) 
itemfit(mod.rsm, empirical.plot=4) 

personfit(mod.rsm, method = "EAP") 
residuals(mod.rsm, type = "LD") 
residuals(mod.rsm, type = "Q3")