Validitas dan reliabilitas adalah dua konsep kunci dalam penelitian, terutama dalam pengukuran dan evaluasi instrumen penelitian seperti kuesioner, skala, atau tes. Keduanya sangat penting untuk memastikan bahwa hasil penelitian yang diperoleh adalah tepat, akurat, dan dapat diandalkan.

Validitas

Validitas memastikan bahwa instrumen benar-benar mengukur apa yang dimaksudkan untuk diukur, sehingga hasil penelitian dapat dipercaya dan relevan (Creswell, 2014).

Jenis-Jenis Validitas:

Validitas Isi (Content Validity): seberapa baik item dalam instrumen mencakup seluruh aspek dari konsep yang ingin diukur. Misalnya, jika kita mengukur tingkat kepuasan pelanggan, item yang digunakan harus mencakup seluruh aspek kepuasan pelanggan.

Validitas Konstruksi (Construct Validity): sejauh mana instrumen mencerminkan konsep teoretis yang ingin diukur. Misalnya, untuk mengukur kecerdasan, apakah item yang digunakan mencakup seluruh aspek kecerdasan sesuai dengan teori yang diterima.

Validitas Prediktif (Predictive Validity): seberapa baik instrumen dapat memprediksi hasil atau perilaku di masa depan. Misalnya, apakah nilai ujian masuk perguruan tinggi dapat memprediksi kesuksesan akademik di masa depan.

Validitas sangat penting karena:

  • Memastikan hasil penelitian relevan dan dapat diinterpretasikan secara akurat.

  • Memberikan kepercayaan bahwa data yang dikumpulkan benar-benar mewakili konsep yang ingin diukur.

  • Menghindari bias atau kesalahan dalam pengukuran yang dapat menyebabkan kesimpulan yang salah.

Reliabilitas

Reliabilitas mengacu pada konsistensi atau stabilitas alat ukur dalam menghasilkan hasil yang sama dalam kondisi yang sama. Artinya, reliabilitas menunjukkan sejauh mana hasil pengukuran konsisten jika dilakukan berulang kali.

Jenis-Jenis Reliabilitas:

Reliabilitas Uji Ulang (Test-Retest Reliability): mengukur konsistensi hasil yang diperoleh dari pengukuran yang dilakukan dalam dua waktu yang berbeda. Jika hasilnya sama atau hampir sama, instrumen tersebut memiliki reliabilitas tinggi.

Reliabilitas Konsistensi Internal (Internal Consistency Reliability): mengukur sejauh mana item-item dalam satu instrumen memberikan hasil yang konsisten satu sama lain. Contoh yang sering digunakan adalah Cronbach’s Alpha.

Reliabilitas Antarpenilai (Inter-rater Reliability): mengukur konsistensi hasil yang diberikan oleh penilai yang berbeda terhadap hal yang sama. Hal ini penting dalam penelitian kualitatif atau penilaian subyektif.

Reliabilitas sangat penting karena:

  • Menjamin bahwa hasil penelitian tidak berubah hanya karena kesalahan pengukuran atau fluktuasi acak.

  • Menunjukkan stabilitas dan keandalan data, yang membuat hasil penelitian dapat dipercaya.

  • Tanpa reliabilitas, validitas juga akan terpengaruh karena alat ukur yang inkonsisten tidak dapat memberikan hasil yang valid.

1 Data Persiapan

library(readxl)
Mydata <- read_excel("MyData.xlsx")
head(Mydata, 10)
## # A tibble: 10 × 11
##    Nama  `Butir 1` `Butir 2` `Butir 3` `Butir 4` `Butir 5` `Butir 6` `Butir 7`
##    <chr>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
##  1 ANI           4         5         5         2         2         2         4
##  2 WATI          4         3         3         3         4         3         4
##  3 EVI           5         5         4         1         2         2         3
##  4 YANTI         4         4         3         4         4         2         4
##  5 ALDI          2         3         4         2         2         2         2
##  6 MARDI         4         4         4         4         4         4         4
##  7 MUJI          4         4         4         2         3         5         5
##  8 MIRA          5         4         4         3         3         3         5
##  9 LAILA         5         5         5         4         4         2         4
## 10 RINI          5         3         3         2         4         2         4
## # ℹ 3 more variables: `Butir 8` <dbl>, `Butir 9` <dbl>, `Butir 10` <dbl>

Pemilihan kolom yang memiliki skala likert

Mydata <- Mydata[, 2:11] 
str(Mydata)
## tibble [30 × 10] (S3: tbl_df/tbl/data.frame)
##  $ Butir 1 : num [1:30] 4 4 5 4 2 4 4 5 5 5 ...
##  $ Butir 2 : num [1:30] 5 3 5 4 3 4 4 4 5 3 ...
##  $ Butir 3 : num [1:30] 5 3 4 3 4 4 4 4 5 3 ...
##  $ Butir 4 : num [1:30] 2 3 1 4 2 4 2 3 4 2 ...
##  $ Butir 5 : num [1:30] 2 4 2 4 2 4 3 3 4 4 ...
##  $ Butir 6 : num [1:30] 2 3 2 2 2 4 5 3 2 2 ...
##  $ Butir 7 : num [1:30] 4 4 3 4 2 4 5 5 4 4 ...
##  $ Butir 8 : num [1:30] 2 2 5 4 4 4 2 3 2 3 ...
##  $ Butir 9 : num [1:30] 2 4 5 4 2 4 5 3 4 3 ...
##  $ Butir 10: num [1:30] 4 4 3 3 2 4 3 3 2 2 ...

Mengubah nama kolom agar menjadi lebih sederhana.

colnames(Mydata) <- paste0("X", 1:ncol(Mydata))    # Merubah nama variabel
Mydata$id <- 1:nrow(Mydata)                        # Menambahkan kolom baru berupa id
Mydata <- cbind(id=Mydata$id, Mydata[, !names(Mydata) %in% "id"])     # Posisi id menjadi paling depan
str(Mydata)
## 'data.frame':    30 obs. of  11 variables:
##  $ id : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ X1 : num  4 4 5 4 2 4 4 5 5 5 ...
##  $ X2 : num  5 3 5 4 3 4 4 4 5 3 ...
##  $ X3 : num  5 3 4 3 4 4 4 4 5 3 ...
##  $ X4 : num  2 3 1 4 2 4 2 3 4 2 ...
##  $ X5 : num  2 4 2 4 2 4 3 3 4 4 ...
##  $ X6 : num  2 3 2 2 2 4 5 3 2 2 ...
##  $ X7 : num  4 4 3 4 2 4 5 5 4 4 ...
##  $ X8 : num  2 2 5 4 4 4 2 3 2 3 ...
##  $ X9 : num  2 4 5 4 2 4 5 3 4 3 ...
##  $ X10: num  4 4 3 3 2 4 3 3 2 2 ...

2 Validity Test

Validitas menunjukkan sejauh mana suatu alat pengukur dapat mengukur apa yang ingin diukur. Suatu instrumen yang valid akan mempunyai validitas yang tinggi, dan sebaliknya. Untuk menguji tingkat validitas, biasanya instrumen dilakukan ujicoba instrumen.

Hal-hal yang perlu dipertimbangkan antara lain:

  1. tersedianya subyek yang akan dijadikan sasaran;

  2. unit analisis yang diambil;

  3. kemampuan peneliti dalam hal waktu dan dana;

  4. tingkat kesulitan dalam pelaksanaan.

Terdapat perbedaan mengenai dari mana subyek uji coba tersebut diambil. Jika memungkinkan sebaiknya subyek ujicoba diambil dari populasi yang tidak dilakukan penelitian. Namun jika tidak memungkinkan bisa mengambil di luar populasi dengan syarat ciri-ciri populasi yang diambil, sama atau hampir sama dengan ciri-ciri populasi yang akan diteliti.

Secara umum langkah-langkah yang dilakukan dalam pengujian validitas adalah:

  1. Menghitung korelasi setiap butir dengan skor total (corrected item-totalcorrelation).

  2. Membandingkan nilai korelasi dengan tabel r dengan tingkat signifikansi 𝛼 dan derajat bebas N-2.

  3. Pengambilan keputusan:

    Jika r hasil > r tabel, item tersebut valid.

    Jika r hasil < r tabel, item tidak valid.

  4. Dalam penerapannya, butir-butir yang tidak valid dikeluarkan dari proses dan pengujian diulang untuk butir-butir yang valid saja. Apabila dalam pengujian berikutnya masih ada butir yang belum valid, maka proses pengeluaran butir yang tidak valid dan pengulangan pengujian harus terus dilakukan sampai semua butir valid. Semakin banyak pengulangan, maka item yang menyusut semakin banyak.

Hipotesis

\(H_0\) : butir pertanyaan berkorelasi positif dengan skor total

\(H_1\) : butir pertanyaan tidak berkorelasi positif dengan skor total

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
Mydata = Mydata %>% 
  mutate(SUM = X1+X2+X3+X4+X5+X6+X7+X8+X9+X10)
head(Mydata, 10)
##    id X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 SUM
## 1   1  4  5  5  2  2  2  4  2  2   4  32
## 2   2  4  3  3  3  4  3  4  2  4   4  34
## 3   3  5  5  4  1  2  2  3  5  5   3  35
## 4   4  4  4  3  4  4  2  4  4  4   3  36
## 5   5  2  3  4  2  2  2  2  4  2   2  25
## 6   6  4  4  4  4  4  4  4  4  4   4  40
## 7   7  4  4  4  2  3  5  5  2  5   3  37
## 8   8  5  4  4  3  3  3  5  3  3   3  36
## 9   9  5  5  5  4  4  2  4  2  4   2  37
## 10 10  5  3  3  2  4  2  4  3  3   2  31
data_without_id <- Mydata[ ,2:11]
round(cor(data_without_id), 2) 
##        X1    X2    X3    X4    X5    X6    X7    X8    X9   X10
## X1   1.00  0.43 -0.01  0.15  0.17 -0.09  0.47  0.00  0.29  0.18
## X2   0.43  1.00  0.28  0.02 -0.14  0.14  0.01  0.03  0.15  0.36
## X3  -0.01  0.28  1.00 -0.05 -0.05 -0.25 -0.02 -0.18  0.00  0.31
## X4   0.15  0.02 -0.05  1.00  0.36  0.25  0.45  0.07  0.26 -0.11
## X5   0.17 -0.14 -0.05  0.36  1.00 -0.06  0.30  0.23  0.34 -0.08
## X6  -0.09  0.14 -0.25  0.25 -0.06  1.00  0.17  0.01  0.14 -0.10
## X7   0.47  0.01 -0.02  0.45  0.30  0.17  1.00  0.00  0.34  0.07
## X8   0.00  0.03 -0.18  0.07  0.23  0.01  0.00  1.00  0.39 -0.27
## X9   0.29  0.15  0.00  0.26  0.34  0.14  0.34  0.39  1.00 -0.03
## X10  0.18  0.36  0.31 -0.11 -0.08 -0.10  0.07 -0.27 -0.03  1.00
# Menghitung total skala tanpa item tertentu
get_corrected_item_total_correlation <- function(data, item_col) {
  total_score <- rowSums(data, na.rm = TRUE) - data[[item_col]]
  item_score <- data[[item_col]]
  
  # Menghitung korelasi antara item dan total skor skala yang dikoreksi
  correlation <- cor(item_score, total_score, use = "complete.obs")
  return(correlation)
}

# Menghitung korelasi item-total yang dikoreksi untuk setiap item
item_names <- names(data_without_id)
corrected_correlations <- sapply(item_names, function(item) {
  get_corrected_item_total_correlation(data_without_id, item)
})

# Menampilkan hasil korelasi
names(corrected_correlations) <- item_names
print(round(corrected_correlations,3))
##     X1     X2     X3     X4     X5     X6     X7     X8     X9    X10 
##  0.372  0.299 -0.017  0.345  0.262  0.057  0.446  0.081  0.497  0.033

Berdasarkan output di atas diperoleh hasil bahwa pada nilai Corrected Item-Total Correlation dibandingkan dengan r tabel (df= N-2 = 30-2 = 28 dengan signifikansi 5%=0.239) berarti butir yang tidak valid adalah butir 3, 6, 8 dan 10. Oleh karena itu perlu dilakukan pengujian kembali dengan menghilangkan butir-butir yang tidak valid.

data_without_id <- Mydata[ ,2:11]
data_without_id <- data_without_id[ ,-c(3,6,8,10)]
round(cor(data_without_id), 2) 
##      X1    X2   X4    X5   X7   X9
## X1 1.00  0.43 0.15  0.17 0.47 0.29
## X2 0.43  1.00 0.02 -0.14 0.01 0.15
## X4 0.15  0.02 1.00  0.36 0.45 0.26
## X5 0.17 -0.14 0.36  1.00 0.30 0.34
## X7 0.47  0.01 0.45  0.30 1.00 0.34
## X9 0.29  0.15 0.26  0.34 0.34 1.00
# Menghitung total skala tanpa item tertentu
get_corrected_item_total_correlation <- function(data, item_col) {
  total_score <- rowSums(data, na.rm = TRUE) - data[[item_col]]
  item_score <- data[[item_col]]
  
  # Menghitung korelasi antara item dan total skor skala yang dikoreksi
  correlation <- cor(item_score, total_score, use = "complete.obs")
  return(correlation)
}

# Menghitung korelasi item-total yang dikoreksi untuk setiap item
item_names <- names(data_without_id)
corrected_correlations <- sapply(item_names, function(item) {
  get_corrected_item_total_correlation(data_without_id, item)
})

# Menampilkan hasil korelasi
names(corrected_correlations) <- item_names
print(round(corrected_correlations,3))
##    X1    X2    X4    X5    X7    X9 
## 0.481 0.118 0.396 0.329 0.516 0.446

Output menunjukkan butir 2 masih memiliki nilai di bawah r tabel. Maka, perlu dilakukan pengujian lagi dengan menghilangkan butir 2.

data_without_id <- Mydata[ ,2:11]
data_without_id <- data_without_id[ ,-c(2,3,6,8,10)]
round(cor(data_without_id), 2) 
##      X1   X4   X5   X7   X9
## X1 1.00 0.15 0.17 0.47 0.29
## X4 0.15 1.00 0.36 0.45 0.26
## X5 0.17 0.36 1.00 0.30 0.34
## X7 0.47 0.45 0.30 1.00 0.34
## X9 0.29 0.26 0.34 0.34 1.00
# Menghitung total skala tanpa item tertentu
get_corrected_item_total_correlation <- function(data, item_col) {
  total_score <- rowSums(data, na.rm = TRUE) - data[[item_col]]
  item_score <- data[[item_col]]
  
  # Menghitung korelasi antara item dan total skor skala yang dikoreksi
  correlation <- cor(item_score, total_score, use = "complete.obs")
  return(correlation)
}

# Menghitung korelasi item-total yang dikoreksi untuk setiap item
item_names <- names(data_without_id)
corrected_correlations <- sapply(item_names, function(item) {
  get_corrected_item_total_correlation(data_without_id, item)
})

# Menampilkan hasil korelasi
names(corrected_correlations) <- item_names
print(round(corrected_correlations,3))
##    X1    X4    X5    X7    X9 
## 0.360 0.435 0.430 0.569 0.435

Output di atas menunjukkan butir-butir pertanyaan yang valid adalah X1, X4, X5, X7, dan X9.

3 Reliability Test

Uji reliabilitas menunjukkan sejauh mana hasil pengukuran dengan menggunakan objek yang sama akan menghasilkan data yang sama. Uji ini dilakukan terhadap seluruh pertanyaan yang ada.

Pengambilan keputusan untuk pengujian reliabilitas dikatakan reliabel jika nilai Cronbach’s Alpha dari variabel > 0,70 (Nunnally, 1978). Namun demikian banyak penelitian yang menggunakan nilai 0.60 sebagai batasan minimum suatu instrumen dikatakan reliabel.

Pengujian reliabilitas instrumen dengan menggunakan rumus Cronbach’s Alpha:

\[ \alpha = \frac{N}{N-1} \left( 1 - \frac{\sum_{i=1}^{N} \sigma^2_{i}}{\sigma^2_{total}} \right) \]

dimana:

  • \(N\) adalah jumlah item,

  • \(\sigma^2_{i}\) adalah variansi dari setiap item,

  • \(\sigma^2_{total}\) adalah variansi total dari skor gabungan pada semua item.

#Untuk menghitung Cronbach’s Alpha, digunakan library (psych)
library(psych)
alpha(data_without_id)
## 
## Reliability analysis   
## Call: alpha(x = data_without_id)
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd median_r
##       0.68      0.69    0.67      0.31 2.3 0.091  3.6 0.56     0.32
## 
##     95% confidence boundaries 
##          lower alpha upper
## Feldt     0.46  0.68  0.83
## Duhachek  0.50  0.68  0.86
## 
##  Reliability if an item is dropped:
##    raw_alpha std.alpha G6(smc) average_r S/N alpha se  var.r med.r
## X1      0.66      0.67    0.62      0.34 2.1     0.10 0.0043  0.34
## X4      0.63      0.65    0.60      0.32 1.9     0.11 0.0088  0.32
## X5      0.64      0.66    0.62      0.33 1.9     0.11 0.0145  0.32
## X7      0.59      0.59    0.53      0.26 1.4     0.12 0.0072  0.27
## X9      0.63      0.65    0.62      0.32 1.9     0.11 0.0181  0.33
## 
##  Item statistics 
##     n raw.r std.r r.cor r.drop mean   sd
## X1 30  0.57  0.62  0.49   0.36  4.3 0.69
## X4 30  0.69  0.66  0.54   0.44  3.3 0.94
## X5 30  0.69  0.65  0.50   0.43  2.8 0.95
## X7 30  0.72  0.76  0.71   0.57  4.1 0.66
## X9 30  0.68  0.66  0.52   0.43  3.7 0.92
## 
## Non missing response frequency for each item
##       1    2    3    4    5 miss
## X1 0.00 0.03 0.03 0.57 0.37    0
## X4 0.03 0.20 0.27 0.47 0.03    0
## X5 0.03 0.43 0.20 0.33 0.00    0
## X7 0.00 0.03 0.07 0.67 0.23    0
## X9 0.00 0.13 0.20 0.50 0.17    0

Poin-poin dari output di atas adalah:

  1. raw_alpha adalah Cronbach’s Alpha. Karena nilainya > 0.7, mengindikasikan data tersebut reliabel. Nilai raw_alpha tersebut mengindikasikan besaran raw_alpha dari kuesioner jika item tersebut dihapus (Reliability if an item is dropped).

  2. std.alpha nilai ini mirip dengan raw_alpha

  3. G6 adalah Guttman’s Lambda 6

  4. average_r adalah rata-rata korelasi antar item (digunakan untuk menghitung std.alpha )

  5. mean dengan skala mean

  6. sd dengan skala sd

4 Referensi

Creswell, J. W. (2014). Research Design: Qualitative, Quantitative, and Mixed Methods Approaches (4th ed.). SAGE Publications.

Nunnally, J. C. (1978). Psychometric Theory (2nd ed.). McGraw-Hill.


Direktorat Statistik Kesejahteraan Rakyat, BPS,