Uji Beda (Paired & Unpaired Sample t-Test) dengan R

Paired Sample t-Test

Artikel ini memberikan contoh analisis uji Beda data berpasangan bisanya digunakan untuk uji beda rata-rata dua data dari sumber yang sama dengan perlakuan/karakteristik yang berbeda pada masing-masing kelompok data, berikut ini adalah contoh data nilai math waktu SD dan SMA (sederajat) dari 22 orang mahasiswa, misal nama datanya adalah dataPaired.xlsx, kita lakukan import data terlebih dahulu ke RStudio.

tingkatnilaimath
mathSD8
mathSD7
mathSD7
mathSD9
mathSD7
mathSD9
mathSD9
mathSD5
mathSD5
mathSD8
mathSD5
mathSD5
mathSD8
mathSD9
mathSD5
mathSD8
mathSD7
mathSD7
mathSD9
mathSD4
mathSD10
mathSD3
mathSMA5
mathSMA6
mathSMA7
mathSMA9
mathSMA8
mathSMA8
mathSMA8
mathSMA5
mathSMA8
mathSMA7
mathSMA6
mathSMA6
mathSMA8
mathSMA8
mathSMA5
mathSMA3
mathSMA9
mathSMA7
mathSMA7
mathSMA6
mathSMA6
mathSMA7

Sebelum dilakukan t-test, kita akan menguji beberapa asumsi yang harus dipenuhi dari data kita, yaitu apakah data merupakan data berpasangan? apakah data besar atau kecil? jika kecil apakah selisih kedua kelompok data berdistribusi normal?

Asumsi #1 apakah data berpasangan, iya karena dua kelompok data berasal dari satu kelompok sumber yang sama.

Asumsi #2, karena data berjumlah sedikit, n<30 maka perlu dilakukan uji normalitas, kita lakukan dengan Shapiro-Wilk normality test, dengan perintah di bawah ini,

#compute the difference

> selisihnilai <- with(dataPaired,nilaimath[tingkat == "mathSD"] - nilaimath[tingkat == "mathSMA"])

#Shapiro-Wilk normality test for the differences

> shapiro.test(selisihnilai)

Shapiro-Wilk normality test
data: selisihnilai
W = 0.96213, p-value = 0.5335

Hasil di atas menunjukkan nilai p-value 0.5335 lebih besar dari significance level 0.05 yang artinya distribusi dari selisih kedua data berdistribusi normal, sehingga asumsi normalitas terpenuhi.

Langkah selanjutnya kita akan menguji hipotesis di bawah ini,

h0: tidak ada perbedaan signifikan rata-rata nilai di masa SD dengan masa SMA

ha: ada perbedaan signifikan rata-rata nilai di masa SD dengan masa SMA

Setelah data kita import ke RStudio, maka kita gunakan perintah di bawah ini untuk analisis uji beda rata-rata,

> ttestKita <- t.test(nilaimath ~ tingkat, data = dataPaired, paired = TRUE)
> ttestKita
       Paired t-test
 
data:  nilaimath by tingkat
t = 0.50422, df = 21, p-value = 0.6194
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.7100959  1.1646413
sample estimates:
mean of the differences 
               0.2272727 

Hasil pengujian di atas menunjukkan nilai p-value sebesar 0.6194, lebih besar dari significance level alpha = 0.05. sehingga dapat dinyatakan kita menerima null hypothesis (h0) dan menyimpulkan bahwa tidak ada perbedaan signifikan nilai math mahasiswa sewaktu SD dan SMA.

Unpaired Sample t-Test

Kita akan membahas Unpaired Sample t-Test dengan contoh di bawah ini, tabel dataWisatawan.xlsx adalah data wisatawan yang datang ke kotaA dan kotaB tahun selama 10 tahun seperti di bawah ini,

kotawisatawan
kotaA8322
kotaA11248
kotaA11365
kotaA12172
kotaA15384
kotaA14405
kotaA19029
kotaA17286
kotaA10080
kotaA17676
kotaB8000
kotaB6500
kotaB13889
kotaB13580
kotaB14200
kotaB16869
kotaB16870
kotaB15366
kotaB11674
kotaB16417

Seperti biasa setelah data di import ke RStudio, sebelum dilakukan unpaired sample t-test, kita akan menguji beberapa asumsi yang harus dipenuhi dari data kita, yaitu:

Asumsi #1, apakah data merupakan data yang tidak saling berpasangan? ya, karena data merupakan data kunjungan wisatawan di dua kota yang berbeda,

Asumsi #2, apakah kedua kelompok data berdistribusi normal? maka akan dilakukan uji normalitas dengan Shapiro-Wilk test, dengan perintah di bawah ini,

#Shapiro-Wilk normality test for kotaA
> with(dataWisatawan, shapiro.test(wisatawan[kota == "kotaA"]))

Shapiro-Wilk normality test
data: wisatawan[kota == "kotaA"]
W = 0.952, p-value = 0.6922

#Shapiro-Wilk normality test for kotaB
> with(dataWisatawan, shapiro.test(wisatawan[kota == "kotaB"]))

Shapiro-Wilk normality test
data: wisatawan[kota == "kotaB"]
W = 0.86963, p-value = 0.09898

Hasil pengujian di atas didapat kedua nilai p-values lebih besar dari significance level 0.05 yang menunjukkan distribusi data tidak berbeda dari normal distribution, dengan kata lain asumsi normalitas terpenuhi.

Asumsi #3, apakah varians kedua data adalah sama? akan dilakukan pengujian F-test untuk menguji homogeneity pada variances, dengan function var.test() seperti di bawah ini,

> variancetest <- var.test(wisatawan ~ kota, data = dataWisatawan)
> variancetest

F test to compare two variances
data: wisatawan by kota
F = 0.98779, num df = 9, denom df = 9, p-value = 0.9857
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.2453523 3.9768252
sample estimates:
ratio of variances
0.9877871

Nilai p-value dari F-test adalah 0.9857, lebih besar dari significance level alpha = 0.05, menunjukkan tidak ada perbedaan signifikan antara variance kedua data, sehingga kita dapat lanjutkan ke tahap t-test dengan perintah di bawah ini,

> ttestKita <- t.test(wisatawan ~ kota, data = dataWisatawan, var.equal = TRUE)
> ttestKita

Two Sample t-test
data: wisatawan by kota
t = 0.22344, df = 18, p-value = 0.8257
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3026.625 3747.025
sample estimates:
mean in group kotaA mean in group kotaB
13696.7 13336.5

Nilai p-value hasil pengujian sebesar 0.8257 yang lebih besar dari nilai significance level alpha = 0.05 menunjukkan bahwa tidak ada perbedaan signifikan kunjungan wisatawan antara keduanya kotaA dan kotaB.

Analisis Faktor (PCA) dengan R

Principal Component Analysis (PCA) adalah salah satu metode statistik multivariat yang memungkinkan kita untuk melihat pola maupun variasi dalam data. PCA digunakan untuk menganalisis satu kelompok data hasil pengamatan yang dihasilkan dari indikator penelitian yang banyak untuk menghasilkan beberapa gagasan atau komponen utama, yang tidak berkorelasi satu sama lain dan menjelaskan variasi dalam data.

PCA memungkinkan untuk digunakan dalam proses reduksi data kompleks menjadi kelompok dimensi untuk mengungkapkan struktur/komponen dominan dalam pengamatan dan kelompok data.

Contoh #1

Kita lihat langsung contohnya pada pemrograman R, data yang akan saya gunakan adalah data hasil penelitian saya yang sudah dipublikasikan dengan judul Knowledge management key factors: an empirical research on small and medium-sized enterprises in Indonesia, data penelitian ini dapat didownload di sini.

Kita akan menggunakan perintah principal() dari package psych untuk melakukan proses PCA, langkah awal seperti biasa adalah dengan melakukan import data file kita ke RStudio, data di contoh kita kali ini diberi nama datapca,

Tahap awal sebelum melakukan proses PCA, untuk bisa melanjutkan Analisis Faktor maka nilai KMO minimal 0.5 dan Signifikansi Bartlett’ test harus terpenuhi (kurang dari 0.05).

dari hasil pengujian kasus kita terlihat nilai KMO 0.97,

> library(psych)
> library(GPArotation)
> KMO(datapca)
Kaiser-Meyer-Olkin factor adequacy
Call: KMO(r = datapca)
Overall MSA = 0.97
MSA for each item =
var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 var11 var12 var13 var14
0.92 0.94 0.96 0.96 0.95 0.97 0.97 0.98 0.95 0.97 0.97 0.95 0.97 0.98
var15 var16 var17 var18 var19 var20 var21 var22 var23 var24 var25 var26 var27 var28
0.98 0.98 0.93 0.97 0.96 0.97 0.98 0.96 0.97 0.98 0.97 0.98 0.98 0.98
var29 var30 var31
0.98 0.97 0.98

dan Bartlett’ test p-value < 0.05, dinyatakan data yang ada dapat dilakukan proses Analisis Faktor.

#bartlett test code designed by Professor Shigenobu Aoki
uji_Bartlett <- function(x)
{
  method <- "Bartlett's test of sphericity"
  data.name <- deparse(substitute(x))
  x <- subset(x, complete.cases(x)) 
  n <- nrow(x)
  p <- ncol(x)
  chisq <- (1-n+(2*p+5)/6)*log(det(cor(x)))
  df <- p*(p-1)/2
  p.value <- pchisq(chisq, df, lower.tail=FALSE)
  names(chisq) <- "Khi-squared"
  names(df) <- "df"
  return(structure(list(statistic=chisq, parameter=df, p.value=p.value,
                        method=method, data.name=data.name), class="htest"))
}

uji_Bartlett(datapca)

	Bartlett's test of sphericity

data:  datapca
Khi-squared = 11039, df = 465, p-value < 2.2e-16

data kita berada pada kolom 1 sampai 31, lakukan proses PCA dengan perintah di bawah ini,

> pcaKu <- principal(datapca[1:31])
> pcaKu[["values"]]
    [1] 16.7152235  2.2354955  1.3553517  1.0842009  1.0137432
    [6]  0.7397658  0.6195730  0.5542447  0.5267381  0.4924132
   [11]  0.4473847  0.4109380  0.3939930  0.3789867  0.3564000
   [16]  0.3380990  0.3244409  0.3017411  0.2854721  0.2630089
   [21]  0.2604172  0.2459034  0.2260510  0.2106246  0.2048379
   [26]  0.2032162  0.1879858  0.1625772  0.1570976  0.1553930
   [31]  0.1486821 

dari langkah di atas kita lihat bahwa ada 5 faktor utama dengan nilai eigenvalues di atas 1, untuk menentukan berapa faktor yang akan kita ekstrak, maka dapat kita lengkapi analisis dengan perintah scree untuk memvisualisasikan eigenvalues.

> scree(datapca, factors = TRUE, pc = TRUE, main = "Scree plot", hline = NULL, add = FALSE)

yang akan menghasilkan grafik di bawah ini,

pada contoh ini kita akan memutuskan bahwa ada (5) lima faktor utama dari data kita, kita akan terapkan jenis rotation oblimin pada contoh ini. Langkah selanjutnya adalah dengan perintah di bawah ini,

> pcaSayaRotation <- principal(datapca[1:31],nfactors=5,rotate="oblimin")
> pcaSayaRotation

dari hasil di atas kita dapat tentukan indikator pada setiap komponen utama yang kita dapatkan, tahapan yang cukup menantang selanjutnya adalah memberikan nama untuk faktor utama yang didapat, tentu perlu analisis mendalam terhadap setiap kelompok faktor yang didapat, pemberian nama harus mampu menggambarkan karakter khusus dari setiap komponen/faktor nya.

Pada hasil penelitian kami di atas, 5 komponen utama itu kami namakan sebagai 1. knowledge-preneur leadership; dari tabel hasil di atas var4 pada kolom TC1 bernilai 0.85, dan seterusnya kita lihat nilai-nilai di kolom TC1 yang memiliki nilai terbesar (var4, var8, var14, var15, dll) dapat dikelompokkan ke dalam komponen 1. knowledge-preneur leadership.

Demikian pula untuk component 2. techno-preneur Harmony; component 3. organisational K-partnership; component 4. knowledge-preneur employee; dan component 5. socialisation palisade. Penjelasan detail terkait nama setiap komponen dapat dibaca lebih jelas di artikel penelitian kami di sini.

Dari tabel di atas dapat kita lihat bahwa setiap komponen memiliki persentase variansinya masing-masing di mana total variansi dari 5 komponen di atas adalah sekitar 72%.

Contoh #2

Video di bawah ini merupakan contoh ke #2 untuk PCA dengan analisis paralel untuk menentukan jumlah faktor/component yang kita pertahankan.

Uji Validitas dan Reliabilitas Instrumen dengan R

Artikel ini akan membahas contoh bagaimana melakukan pengujian validitas dan reliabilitas instrumen kuesionair sebelum digunakan untuk mengumpulkan data sample penelitian.

Misalkan kita akan menguji 2 variabel yang bernama KnowledgePreneur Leadership (KPL) yang memiliki 7 indikator dan Technopreneur Harmony (TPH) dengan 5 indikator, kita telah mengumpulkan beberapa data awal untuk pengujian, dengan data tabel9 di bawah ini ada 23 data pengujian yang dikumpulkan, langkah berikutnya adalah import data kita ke data frame di R, jika anda adalah pengguna awal R, silahkan dapat melihat artikel tutorial kami sebelumnya mengenai proses import data ke R,

respKPL1KPL2KPL3KPL4KPL5KPL6KPL7TPH1TPH2TPH3TPH4TPH5
1534553535234
2555555555554
3556565564554
4655564566666
5656666643644
6545243552554
7324343564342
8666666664456
9653363555566
10323533311233
11555555555555
12666666666544
13554645666656
14655665544444
15555535553335
16555555555555
17655635622666
18556656555546
19554655444454
20666656666665
21443634333333
22554654665655
23554654555544

Pengujian Validitas Instrumen variabel KPL

Pengujian validitas instrumen kita akan lakukan dengan pengukuran korelasi antar indikator dengan total untuk tiap variabelnya. Pengukuran korelasi akan menggunakan fungsi cor() dan bantuan package dplyr untuk fungsi select() dengan perintah di bawah ini,

Pengujian validitas pada variabel KPL

> library(dplyr)
> cor(select(table9, KPL1, KPL2, KPL3, KPL4, KPL5, KPL6, KPL7, sumKPL))
  
             KPL1      KPL2      KPL3      KPL4      KPL5
   KPL1   1.0000000 0.8321850 0.5585926 0.2948178 0.6108004
   KPL2   0.8321850 1.0000000 0.6000601 0.4752553 0.5095512
   KPL3   0.5585926 0.6000601 1.0000000 0.2519275 0.4598479
   KPL4   0.2948178 0.4752553 0.2519275 1.0000000 0.1079729
   KPL5   0.6108004 0.5095512 0.4598479 0.1079729 1.0000000
   KPL6   0.5431911 0.7651682 0.7801599 0.6733389 0.3321937
   KPL7   0.6623912 0.5851437 0.6114632 0.1696273 0.4171469
   sumKPL 0.8299236 0.8937834 0.7958107 0.5829337 0.6417921
               KPL6      KPL7    sumKPL
   KPL1   0.5431911 0.6623912 0.8299236
   KPL2   0.7651682 0.5851437 0.8937834
   KPL3   0.7801599 0.6114632 0.7958107
   KPL4   0.6733389 0.1696273 0.5829337
   KPL5   0.3321937 0.4171469 0.6417921
   KPL6   1.0000000 0.4871728 0.8720856
   KPL7   0.4871728 1.0000000 0.7133480
   sumKPL 0.8720856 0.7133480 1.0000000 

kita dapatkan bahwa korelasi setiap indikator untuk variabel KPL adalah di atas 0.5 (yang di bold), hal ini menunjukkan hubungan yang kuat antara indikator dengan variabel KPL atau dapat dikatakan setiap indikator yang kita gunakan untuk mengukur variabel KPL sudah valid.

Pengujian Reliabilitas Instrumen variabel KPL

Pengujian reliabilitas instrumen kita akan lakukan dengan pengukuran Cronbach’s α dari data, analisis Reliability akan memerlukan tambahan fungsi alpha() dari package psych (mungkin perlu diinstal terlebih dahulu), selanjutnya uji reliabilitas dilakukan dengan perintah di bawah ini,

> library(dplyr)
> library(psych)
> alpha(select(table9,KPL1,KPL2,KPL3,KPL4,KPL5,KPL6,KPL7)) 
 
 Reliability analysis 
 Call: alpha(x = select(table9, KPL1, KPL2, KPL3, KPL4, KPL5, KPL6,
     KPL7))
 raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd
       0.87      0.88    0.93      0.51 7.3 0.041  4.9 0.77
  median_r
      0.54
 lower alpha upper     95% confidence boundaries
 0.8 0.87 0.95
 
Reliability if an item is dropped:
      raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r
 KPL1      0.84      0.85    0.90      0.48 5.6    0.050 0.040
 KPL2      0.83      0.84    0.89      0.46 5.2    0.056 0.039
 KPL3      0.85      0.86    0.89      0.50 5.9    0.050 0.043
 KPL4      0.89      0.89    0.92      0.58 8.4    0.036 0.019
 KPL5      0.88      0.88    0.94      0.55 7.4    0.040 0.037
 KPL6      0.83      0.85    0.86      0.48 5.5    0.054 0.039
 KPL7      0.86      0.87    0.93      0.52 6.5    0.046 0.043
      med.r
 KPL1  0.49
 KPL2  0.49
 KPL3  0.51
 KPL4  0.59
 KPL5  0.59
 KPL6  0.51
 KPL7  0.54
 
Item statistics
       n raw.r std.r r.cor r.drop mean   sd
 KPL1 23  0.83  0.84  0.84   0.77  5.1 0.87
 KPL2 23  0.89  0.89  0.90   0.84  4.7 1.06
 KPL3 23  0.80  0.80  0.79   0.71  4.7 1.01
 KPL4 23  0.58  0.56  0.51   0.42  5.2 1.13
 KPL5 23  0.64  0.64  0.56   0.50  4.8 1.07
 KPL6 23  0.87  0.86  0.87   0.81  4.6 1.08
 KPL7 23  0.71  0.74  0.67   0.62  5.1 0.85
 
Non missing response frequency for each item
         2    3    4    5    6 miss
 KPL1 0.00 0.09 0.04 0.52 0.35    0
 KPL2 0.09 0.04 0.09 0.65 0.13    0
 KPL3 0.00 0.13 0.26 0.35 0.26    0
 KPL4 0.04 0.09 0.00 0.35 0.52    0
 KPL5 0.00 0.17 0.13 0.39 0.30    0
 KPL6 0.00 0.22 0.17 0.39 0.22    0
 KPL7 0.00 0.09 0.04 0.57 0.30    0

dari hasil pengujian di atas kita lihat nilai raw_alpha sebesar 0.87 menunjukkan nilai reliabilitas yang sudah cukup bagus untuk indikator variabel KPL.

Pengujian di atas menunjukkan bahwa instrumen variabel KPL sudah layak digunakan untuk pengumpulan data sample penelitian. Bagaimana dengan variabel TPH, silahkan anda mencobanya, jika langkah anda tepat maka seharusnya akan didapat: Korelasi TPH1 0.7746555, TPH2 0.7686643, TPH3 0.8262377, TPH4 0.7754025, TPH5 0.7032110, dan Cronbach’s α 0.82

Demikian tutorial untuk pengujian instrumen penelitian anda, selamat mencoba, sukses selalu.

Intro to R Programing

Literasi Data
Literasi data menjadi salah satu literasi utama yang harus dimiliki oleh generasi mendatang untuk bisa maju bersama di tingkat global, kemampuan tata kelola pengetahuan yang dihasilkan dari pengolahan data menjadi salah satu aset utama organisasi (Sundiman, 2017).

Mengapa R?
Pertama kali dikembangkan oleh Robert Gentleman dan Ross Ihaka tahun 1993

  • Terus dikembangkan hingga saat ini
  • Memiliki paket pengolahan statistic sangat lengkap
  • Gratis dan bebas digunakan

Sumber instalasi R
www.r-project.org atau repo.bppt.go.id/cran/

Instalasi RStudio
RStudio is integrated development environment (IDE) for R
www.rstudio.com

Berikut ini adalah video kami di Youtube Pemrograman R untuk Pemula

References
Sundiman, D. (2017). Human Resource Management in the Enhancement Processes of Knowledge Management. Binus Business Review, 8(3), 167-173. doi:https://doi.org/10.21512/bbr.v8i3.3708