Mengapa Hasil Nilai di R dan SPSS terkadang beda?

By | October 20, 2022
Print Friendly, PDF & Email
577 Views

Perhitungan statistik saat ini banyak menggunakan berbagai alat analisis untuk melakukan analisis statistik. Melakukan pemeriksaan kontrol kualitas atau analisis verifikasi menggunakan paket statistik yang berbeda untuk metode statistik yang sama, seseorang dapat menerima hasil yang tidak sama secara tidak terduga. Jadi muncul pertanyaan: apa yang salah dengan perhitungannya? Jawabannya mungkin membingungkan: perhitungannya valid dan akar perbedaannya adalah perbedaan metode komputasi dan pengaturan default yang diterapkan di setiap paket statistik.

Setiap pengguna bahkan memiliki preferensi mereka dalam paket statistik seperti SPSS, SAS, Python, Matlab, ataupun R akan cukup sering hasil yang dihasilkan oleh paket statistik yang berbeda tidak sesuai dan mungkin menimbulkan pertanyaan: apakah saya melakukan sesuatu yang salah? Apakah ini sesuatu yang salah dengan paket statistik alternatif? Dan jawabannya biasanya sederhana: hasilnya benar sampai pada titik pengaturan yang digunakan. Seringkali sebuah function atau input form yang tidak diisi akan selalu diberikan dengan nilai default.

Uji Normalitas Kolmogorov Smirnov

Sebagai contoh mengenai uji normalitas kolmogorov smirnov yang berbeda, kalian bisa baca link berikut  Cara Hitung Manual Uji Normalitas dengan Uji Kolmogorov-Smirnov. Pada SPSS dihasilkan sebagai berikut

Sedangkan untuk R bisa menggunakan package nortest/liliefors dan ks.test.

Hasil nortest yaitu

Lilliefors (Kolmogorov-Smirnov) normality test 
data: dat$Nilai 
D = 0.125, p-value = 0.7235

sedangkan penggunaan function ks.test yaitu

Asymptotic one-sample Kolmogorov-Smirnov test 
data: dat$Nilai 
D = 0.125, p-value = 0.9639 
alternative hypothesis: two-sided

semuanya menghasilkan nilai D yang sama yaitu 0.125 akan tetapi menghasilkan nilai p-value yang berbeda SPSS-ks.test dengan package nortest.

Kita lihat dokumentasi dari nortest https://rdrr.io/cran/nortest/man/lillie.test.html

disitu tertera :

The Lilliefors (Kolomorov-Smirnov) test is the most famous EDF omnibus test for normality. Compared to the Anderson-Darling test and the Cramer-von Mises test it is known to perform worse. Although the test statistic obtained from lillie.test(x) is the same as that obtained from ks.test(x, "pnorm", mean(x), sd(x)), it is not correct to use the p-value from the latter for the composite hypothesis of normality (mean and variance unknown), since the distribution of the test statistic is different when the parameters are estimated.

See also  Pengertian dan Penjelasan Regresi Linear

The function call lillie.test(x) essentially produces the same result as the S-PLUS function call ks.gof(x) with the distinction that the p-value is not set to 0.5 when the Dallal-Wilkinson approximation yields a p-value greater than 0.1. (Actually, the alternative p-value approximation is provided for the complete range of test statistic values, but is only used when the Dallal-Wilkinson approximation fails.)

lebih jelasnya di https://www.maths.usyd.edu.au/u/UG/SM/STAT3022/r/current/Lecture/lecture20_2020JC.html#11

  • In R lillie.test(x) in library(nortest) returns the same test statistic as ks.test(x,"pnorm", mean=mean(x), sd=sd(x)) but the p-values differ.
  • Reason: The p-value in ks.test is calculated under the assumption that mean and variance of the normal are known, thus its p-value is wrong when those parameters are estimated

Kita coba dengan python di package scipy dan stats hasilnya sebagai berikut

Sebelum menjalankan tes K-S di Python, kita harus menyiapkan data dan menghitung z-score karena kstest() dari package scipy.stats berurusan dengan distribusi normal standar = 0 dan = 1.

import numpy as np
import scipy.stats as stats

ar_n=stats.zscore(dat)
stats.kstest(ar_n,'norm')

hasilnya

KstestResult(statistic=0.125, pvalue=0.9373548928544991)

Hasil yang kita  terima lebih mendekati hasil uji K-S yang diperoleh dengan ks.test di R pada pengaturan default, alasannya sama: Python tidak menghasilkan uji Lilliefors alih-alih K-S untuk pengujian normalitas. Jika kalian ingin mendapatkan nilai p Lilliefors Corrected, kalia harus memanggil fungsi berikut:

import statsmodels.api as sm
sm.stats.lilliefors(dat)


hasilnya

(0.125, 0.713781462024653)

Kesimpulan

Setiap tools dan package yang diuji memberikan hasil yang benar secara algoritmik sehingga tanggung jawab pengguna untuk memahami apa yang diterapkan dalam metode tertentu dan statistik apa yang ada di baliknya. Dalam semua kasus yang dijelaskan, membaca dokumentasi dan literatur statistik sangat membantu untuk memahami apa sumber perbedaan itu.

See also  Pengertian dan Cara Perhitungan ARIMA - serta Prediksi Model ARIMA

Leave a Reply