Uji Validitas dan Reliabilitas Menggunakan R
Pagi ini ada satu DM masuk ke inbox saya.
Uji validitas dan reliabilitas itu gimana sih?
Seketika itu juga saya coba search di blog saya yang lama, ternyata saya belum pernah menuliskan tentang hal ini sama sekali.
Pertama kali saya bersentuhan dengan uji validitas dan reliabilitas adalah saat membantu istri saya dulu ketika saat mengerjakan tugas akhir di jurusan Psikologi. Berdasarkan pengalaman saya, kedua uji ini memang lebih sering dipakai oleh rekan-rekan di jurusan sosial karena terkait design alat pengukuran (kuesioner) yang menggunakan skala likert.
Bagi saya sebenarnya kedua uji ini cukup simpel untuk dilakukan. Sekarang saya akan memberikan contoh dan langkah-langkah mengerjakannya di R.
Saat sedang berseluncur di Kaggle, saya menemukan data survey kepuasan pelanggan Starbucks di Malaysia. Menggunakan data tersebut, saya akan coba menguji validitas dan reliabilitasnya.
Berikut adalah data yang digunakan:
## 'data.frame': 113 obs. of 7 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ product_rate : int 4 4 4 2 3 4 5 4 5 4 ...
## $ price_rate : int 3 3 3 1 3 3 5 2 4 3 ...
## $ ambiance_rate: int 5 4 4 3 2 5 5 3 4 4 ...
## $ wifi_rate : int 4 4 4 3 2 4 3 3 4 3 ...
## $ service_rate : int 4 5 4 3 3 5 5 3 4 3 ...
## $ choose_rate : int 3 2 3 3 3 4 5 3 4 4 ...
Ada sebanyak 113
orang responden yang memberikan jawaban berupa skala
likert (1-5) terhadap 7 items pertanyaan.
## Cuplikan 10 Data yang Digunakan
id | product_rate | price_rate | ambiance_rate | wifi_rate | service_rate | choose_rate |
---|---|---|---|---|---|---|
1 | 4 | 3 | 5 | 4 | 4 | 3 |
10 | 4 | 3 | 4 | 3 | 3 | 4 |
21 | 2 | 2 | 3 | 3 | 4 | 3 |
34 | 3 | 2 | 3 | 3 | 4 | 3 |
48 | 3 | 1 | 4 | 3 | 3 | 2 |
53 | 5 | 4 | 5 | 3 | 5 | 5 |
58 | 5 | 5 | 5 | 5 | 5 | 5 |
81 | 3 | 2 | 3 | 1 | 3 | 3 |
96 | 3 | 3 | 4 | 3 | 3 | 4 |
101 | 3 | 2 | 3 | 3 | 3 | 3 |
Uji validitas dan reliabilitas bertujuan untuk mengecek apakah kuesioner atau items pertanyaan yang kita buat sudah baik atau belum.
Validitas
Uji validitas dilakukan dengan cara membuat satu variabel (kolom) baru
berisi penjumlahan dari semua variabel rates yang ada. Misalkan saya
definisikan variabel baru bernama starbucks_rate
sebagai berikut:
starbucks_rate = product_rate + price_rate + ambiance_rate + wifi_rate + service_rate + choose_rate
Berikut R script-nya:
data =
data %>%
mutate(starbucks_rate = product_rate + price_rate + ambiance_rate + wifi_rate + service_rate + choose_rate)
Ini adalah hasilnya:
## Cuplikan 10 Data Hasil Perhitungan
id | product_rate | price_rate | ambiance_rate | wifi_rate | service_rate | choose_rate | starbucks_rate |
---|---|---|---|---|---|---|---|
1 | 4 | 3 | 5 | 4 | 4 | 3 | 23 |
10 | 4 | 3 | 4 | 3 | 3 | 4 | 21 |
21 | 2 | 2 | 3 | 3 | 4 | 3 | 17 |
34 | 3 | 2 | 3 | 3 | 4 | 3 | 18 |
48 | 3 | 1 | 4 | 3 | 3 | 2 | 16 |
53 | 5 | 4 | 5 | 3 | 5 | 5 | 27 |
58 | 5 | 5 | 5 | 5 | 5 | 5 | 30 |
81 | 3 | 2 | 3 | 1 | 3 | 3 | 15 |
96 | 3 | 3 | 4 | 3 | 3 | 4 | 20 |
101 | 3 | 2 | 3 | 3 | 3 | 3 | 17 |
Untuk menguji validitas, kita cukup menghitung korelasi antar variabel terhadap variabel totalnya.
korel = data %>% select(-id) %>% cor()
korel = round(korel,2)
product_rate | price_rate | ambiance_rate | wifi_rate | service_rate | choose_rate | starbucks_rate | |
---|---|---|---|---|---|---|---|
product_rate | 1.00 | 0.50 | 0.54 | 0.24 | 0.37 | 0.40 | 0.72 |
price_rate | 0.50 | 1.00 | 0.38 | 0.26 | 0.33 | 0.41 | 0.71 |
ambiance_rate | 0.54 | 0.38 | 1.00 | 0.47 | 0.55 | 0.32 | 0.76 |
wifi_rate | 0.24 | 0.26 | 0.47 | 1.00 | 0.56 | 0.22 | 0.64 |
service_rate | 0.37 | 0.33 | 0.55 | 0.56 | 1.00 | 0.40 | 0.74 |
choose_rate | 0.40 | 0.41 | 0.32 | 0.22 | 0.40 | 1.00 | 0.67 |
starbucks_rate | 0.72 | 0.71 | 0.76 | 0.64 | 0.74 | 0.67 | 1.00 |
Terlihat bahwa semua items memiliki korelasi
terhadap starbucks_rate
yang
berarti semua items tersebut valid (sejalan dengan apa yang kuisionernya ukur).
Updates
Salah seorang rekan saya yang merupakan Social-Organizational Psychologist @hermansbm memberikan penjelasan lebih lanjut terkait uji validitas sebagai berikut:
Threshold untuk item-total correlations-nya sometimes
> 0.3
sudah cukup (medium effect size). Jika memakai threshold> 0.5
sudah termasuk strong effect size. Ada juga metode perhitungan lain dengan metode item-total correlations tapi totalnya minus item yang dihitung (agregat dari seluruh items kecuali item tersebut).
Banyak pihak juga yang berargumen bahwa item-total correlations tidak bisa digunakan untuk melihat validitas, which is quite true dan validitas itu ada berbagai macam jenisnya (face validity, content validity, dan lainnya). Tapi untuk kepentingan praktis metode yang dijelaskan di blog ini adalah metode yang paling sering dipakai. Cuma tujuan utamanya adalah untuk nge-drop item yang tidak sejalan dengan apa yang kuisionernya ukur.
Uji Reliabilitas
Uji reliabilitas digunakan untuk melihat konsistensi responden dalam menjawab kuisioner. Uji ini dilakukan terhadap seluruh pertanyaan yang ada.
Kita akan melihat nilai Cronbach’s Alpha sebagai pedoman:
- Jika nilai Cronbach’s Alpha maka reliabel.
- Jika nilai Cronbach’s Alpha maka tidak reliabel.
Untuk menghitung Cronbach’s Alpha, saya menggunakan library(psych)
sebagai berikut:
library(psych)
data %>% select(-id,-starbucks_rate) %>% alpha()
##
## Reliability analysis
## Call: alpha(x = .)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.79 0.8 0.79 0.4 3.9 0.031 3.5 0.66 0.4
##
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## product_rate 0.75 0.76 0.74 0.39 3.2 0.038 0.0129 0.39
## price_rate 0.76 0.77 0.76 0.41 3.4 0.036 0.0152 0.40
## ambiance_rate 0.74 0.74 0.73 0.37 2.9 0.039 0.0119 0.38
## wifi_rate 0.78 0.78 0.76 0.42 3.6 0.033 0.0069 0.40
## service_rate 0.74 0.75 0.73 0.37 3.0 0.038 0.0123 0.39
## choose_rate 0.77 0.78 0.77 0.42 3.6 0.034 0.0145 0.43
##
Nilai Cronbach’s Alpha dapat dilihat dari nilai raw_alpha
, yakni
sebesar 0.79
, artinya kuesioner yang kita gunakan sudah reliabel.
Selanjutnya, kita bisa melihat data raw_alpha
per variabel. Nilai
raw_alpha
tersebut mengindikasikan besaran raw_alpha
dari kuesioner
jika item tersebut dihapus (Reliability if an item is dropped).
Terlihat bahwa nilai Cronbach’s Alpha malah turun jika items yang ada dihapus. Artinya, kuesioner kita sudah baik.
if you find this article helpful, support this blog by clicking the ads.