1 Pendahuluan
1.1 Pengertian Analisis Diskriminan
Analisis diskriminan adalah salah satu metode statistika yang masuk
ke dalam analisis multivariat yang bertujuan untuk mengelompokkan suatu
pengamatan ke dalam suatu kelompok berdasarkan sekumpulan variabel yang
mempengaruhinya (Johnson & Wichern, 2007). Pengelompokan dilakukan
dengan membantuk sebuah fungsi diskriminan. Fungsi diskrimininan
merupakan fungsi yang terdiri atas kombinasi liniear berbagai variabel
prediktor. Pada nantinya akan terbentuk fungsi diskrimininan sebanyak
jumlah kelas atau kategori dikurangi satu yang dapat memisahkan data.
Bentuk umum dari fungsi diskriminan yaitu: \[
\hat D = b_0+ b_1 X_1+b_2 X_2+…+ b_𝑘X_𝑘 \] Keterangan:
- \(\hat D\) = Skor diskriminan
- \(k\) = Banyaknya variabel
prediktor
- \(𝑏_0\) = Intersep atau koefisien
persamaan fungsi diskriminan
- \(𝑏_𝑘\) = Bobot diskriminan untuk
peubah prediktor ke-i, di mana i = 1,2, … ,p
- \(𝑋_𝑘\) = Variabel prediktor ke-i, di
mana i = 1,2, … ,p dan k= 1,2, … ,n
1.2 tujuan Analisis Diskriminan
Tujuan dari analisis diskriminan yaitu
- Untuk mengetahui apakah ada perbedaan yang jelas diantara grup pada
variabel dependen, jika terdapat perbedaan ingin diketahui variabel
independent mana yang membuat perbedaan tersebut.
- Melakukan klasifikasi terhadap objek. Apakah objek tersebut masuk pada
grup 1 atau 2.
2 Asumsi Analisis Diskriminan
- Multivariate normality (Mardia MVN, Henze zikler MVN, Royston MVN)
- matriks kovarian dari semua variabel independent sama (Box’s M)
- Uji homogenitas matriks ragam peragam (Uji Barlett)
- Uji vektor nilai rata – rata kedua kelompok (wilk’s lambda)
3 Source Code
3.1 Input Data
> library(MVN)
> library(biotools)
> library(candisc)
> library(MASS)
> library(caret)
> library(readxl)
> datadiskriminan <- read_excel("C:/SEMESTER 5/ANMUL/datadiskriminan.xlsx", col_types = c("numeric", "numeric", "numeric", "numeric"))
> head(datadiskriminan)
# A tibble: 6 × 4
IPM AHH PPKRD HLS
<dbl> <dbl> <dbl> <dbl>
1 0 72.5 9184 12.7
2 0 73.2 10199 13.8
3 0 74.3 10042 12.5
4 1 74.5 11162 13.3
5 0 74.0 11001 12.6
6 1 73.0 11565 13.6Pada analisis dikriminan diperlukan beberapa library yang dibutuhkan
sehingga harus install packages dan mengaktifkan library seperti yang
telah tertera. Kemudian memasukkan data menggunakan function
readxl dengan memberi tambahan keterangan tipe data numeric
tiap kolom.
3.2 Uji Asumsi Multivariat Normality
> datacek<- datadiskriminan
> hasildata<-mvn(datacek[,2:4], multivariateOutlierMethod = "adj", showNewData = TRUE)> hasildata
$multivariateNormality
Test HZ p value MVN
1 Henze-Zirkler 0.652255 0.4128909 YES
$univariateNormality
Test Variable Statistic p value Normality
1 Anderson-Darling AHH 1.2523 0.0025 NO
2 Anderson-Darling PPKRD 0.7518 0.0460 NO
3 Anderson-Darling HLS 0.2863 0.6051 YES
$Descriptives
n Mean Std.Dev Median Min Max 25th
AHH 38 72.07816 1.9657993 72.835 67.29 74.54 70.775
PPKRD 38 11837.97368 2237.9152399 11564.000 8944.00 18345.00 10278.000
HLS 38 13.47868 0.8989037 13.410 11.91 15.76 12.840
75th Skew Kurtosis
AHH 73.1825 -0.8722380 -0.1507616
PPKRD 12978.7500 0.9834200 0.6218928
HLS 13.9975 0.5238481 -0.1488922
$newData
# A tibble: 31 × 3
AHH PPKRD HLS
<dbl> <dbl> <dbl>
1 71.1 12320 13.1
2 67.3 10851 13.3
3 69.6 10263 13.2
4 67.8 11254 12.6
5 70.6 10726 12.8
6 74.4 14808 15.0
7 72.9 13051 13.0
8 72.9 11579 13.6
9 72.0 12349 13.1
10 71.9 11848 13.2
# … with 21 more rowsLangkah selanjutnya mengetahui ada atau tidaknya outlier pada data
sehingga mengecek dengan function mvn dari data pada kolom
2,3,4 dan memberi keterangan untuk membuat new data tanpa
outilier yang disimpan dengan nama
hasildata.
> databaru <- hasildata$newDataLalu untuk mendapat data tanpa outlier maka mengambil dari hasil data yaitu newData lalu disimpan dengan nama databaru.
> hasil<- mvn(databaru, mvnTest = 'royston', alpha = 0.05)
> hasil
$multivariateNormality
Test H p value MVN
1 Royston 7.079969 0.06626739 YES
$univariateNormality
Test Variable Statistic p value Normality
1 Anderson-Darling AHH 0.7993 0.0341 NO
2 Anderson-Darling PPKRD 0.4389 0.2752 YES
3 Anderson-Darling HLS 0.1899 0.8915 YES
$Descriptives
n Mean Std.Dev Median Min Max 25th 75th
AHH 31 71.76097 2.0203058 71.99 67.29 74.47 70.58 72.980
PPKRD 31 12140.77419 2352.2335586 11848.00 8944.00 18345.00 10513.00 13239.000
HLS 31 13.55839 0.9528977 13.51 11.91 15.76 12.90 14.035
Skew Kurtosis
AHH -0.6623426 -0.57480082
PPKRD 0.7447039 0.08051521
HLS 0.3722732 -0.47073063Kemudian menguji asumsi multivariat normality menggunakan uji royston
dengan tingkat kepercayaan 95% dengan functionmvn()dan
disimpan dengan nama hasil
3.3 Uji Asumsi Homogenitas Matriks Ragam-Peragam
> uji_bart <- 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"))}Membuat function untuk uji barlet yang berisikan nilai chisquare dan p-value yang disimpan dengan nama uji_bart.
> library(biotools)
> dataakhir<-datadiskriminan[c(8:38),1:4]
> attach(dataakhir)
> uji_bart(dataakhir)
Bartlett's test of sphericity
data: dataakhir
Khi-squared = 72.679, df = 6, p-value = 1.152e-13Mengaktifkan library biotools. Lalu mendefinisikan data
baru yang diambil dari datadiskriminan tanpa outlier yaitu dari baris 8
hingga 38 dari semua kolom yang disimpan dengan nama dataakhir. Kemudian
uji barlet menggunakan function uji_bart dari data
akhir.
4 Pengujian Perbedaan Rata-rata Variabel Dependen
> library(candisc)
> X<-as.matrix(dataakhir[2:4])Mengaktifkan librarycandisc. Lalu mendefinisikan matriks
dari kolom 2,3,4 yang disimpan dengan nama X.Dengan
kata lain X merupakan variabel independen.
> X.manova<-manova(X~dataakhir$IPM, data=dataakhir)Melakukan uji manova variabel dpenden terhadap variabel independen
dengan function manova dan disimpan dengan nama
X.manova
> X.wilks<-summary(X.manova, test="Wilks")
> X.wilks
Df Wilks approx F num Df den Df Pr(>F)
dataakhir$IPM 1 0.3346 17.898 3 27 1.347e-06 ***
Residuals 29
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Melakukan uji perbedaan rata-rata dengan uji wilks lambda dengan
function summary() dan disimpan dengan nama
X.wilks.
> cc<-candisc(X.manova)
> cc
Canonical Discriminant Analysis for dataakhir$IPM:
CanRsq Eigenvalue Difference Percent Cumulative
1 0.6654 1.9887 100 100
Test of H0: The canonical correlations in the
current row and all that follow are zero
LR test stat approx F numDF denDF Pr(> F)
1 0.3346 17.898 3 27 1.347e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Kontribusi variabel independen terhadap variabel dependen menggunakan
function candisc() dan disimpan dengan nama
c.
4.1 Membuat Fungsi Diskriminan
> library(MASS)
> library(caret)
> modellda<-lda(IPM~., data = dataakhir)
> modellda
Call:
lda(IPM ~ ., data = dataakhir)
Prior probabilities of groups:
0 1
0.483871 0.516129
Group means:
AHH PPKRD HLS
0 70.29133 10361.80 12.86533
1 73.13875 13808.56 14.20813
Coefficients of linear discriminants:
LD1
AHH 0.3383448710
PPKRD 0.0002704442
HLS 0.6209241436Mengaktifkan library MASS dan library
caret. Lalu Membuat fungsi diskriminan menggunakan function
lda() dan disimpan dengan nama
modellda.
4.2 Membuat Tabel Klasifikasi Dan Menguji Ketepatan Model
> pred_LDA1<- predict(modellda, dataakhir)
> pred_LDA1
$class
[1] 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 1
Levels: 0 1
$posterior
0 1
1 9.957630e-01 0.004237039
2 9.743170e-01 0.025682998
3 7.484231e-01 0.251576889
4 9.951167e-01 0.004883342
5 9.785366e-01 0.021463392
6 9.969942e-01 0.003005781
7 9.654744e-01 0.034525647
8 9.948380e-04 0.999005162
9 2.845476e-01 0.715452378
10 3.054324e-01 0.694567584
11 5.780382e-01 0.421961761
12 6.328086e-01 0.367191380
13 1.137202e-01 0.886279845
14 6.202263e-01 0.379773747
15 8.814300e-01 0.118570049
16 9.487211e-01 0.051278938
17 1.678114e-01 0.832188570
18 5.127421e-02 0.948725792
19 9.977081e-01 0.002291897
20 9.993094e-01 0.000690629
21 9.955669e-01 0.004433074
22 8.478359e-01 0.152164107
23 1.997910e-03 0.998002090
24 3.665743e-03 0.996334257
25 9.483247e-05 0.999905168
26 5.761097e-01 0.423890257
27 1.501097e-01 0.849890325
28 1.467600e-02 0.985324003
29 2.137520e-03 0.997862480
30 8.100418e-05 0.999918996
31 3.133822e-02 0.968661783
$x
LD1
1 -2.0680230
2 -1.3998253
3 -0.4671126
4 -2.0157705
5 -1.4671683
6 -2.1942671
7 -1.2880801
8 2.4647911
9 0.2701484
10 0.2333433
11 -0.1829798
12 -0.2670879
13 0.6846364
14 -0.2473849
15 -0.8026599
16 -1.1367311
17 0.5190013
18 1.0014312
19 -2.2938786
20 -2.7339620
21 -2.0513796
22 -0.6970247
23 2.2089481
24 1.9859630
25 3.3263073
26 -0.1800847
27 0.5675563
28 1.4736429
29 2.1841493
30 3.3840594
31 1.1894421
> table(actual=dataakhir$IPM, predicted=pred_LDA1$class)
predicted
actual 0 1
0 15 0
1 2 14Membuat tabel prediksi dan aktual yang digunakan untuk menguji
ketepatan model. Menggunakan function predict() dan
disimpan dengan nama pred_LDA1 lalu membuat taabel
dengan function table.
5 Hasil Dan Pembahasan
5.1 Input Data
Data diambil dari website BPS Jawa Timur sebanyak 38 Kabupaten/Kota. Variabel Independen terdiri dari variabel Angka Harapan Hidup (AHH), Pengeluaran Per Kapita Disesuaikan (PPKRD), dan Harapan Lama Sekolah (HLS). Ketiga variabel independen tersebut memiliki tipe data kontinu. Sedangkan Variabel dependen yaitu Indeks Pembangunan Manusia (IPM) yang memiliki tipe data Kategori. Dengan 0 sebagai nilai IPM yang dibawah rata-rata IPM Provinsi Jawa Timur dan 1 sebagai nilai IPM yang diatas rata-rata IPM Provinsi Jawa Timur.
5.2 cek Outlier
> hasildata<-mvn(datacek[,2:4], multivariateOutlierMethod = "adj", showNewData = TRUE)
Plot diatas yaitu Q-Q Plot analisis multivariat untuk mendetekteksi
adanya outlier dari data dengan bantuan function mvn sehingga harus
memanggil packages MVN dengan data yang digunakan adalah kolom ke 2
hingga kolom ke 4 dari variabel datakrisminan. Berdasarkan gambar di
atas, dapat diketahui bahwa pada data yang digunakan masih terdapat data
outlier dengan total outliers sebanyak 7 data yaitu data
ke-1,2,3,4,5,6,dan 7.Kemudian dilakukan penanganan dengan cara membuang
baris yang mengandung outlier. Sehingga akan disimpan menjadi data
baru
5.3 Uji Asumsi Multivariat Normality
> hasil$multivariateNormality
Test H p value MVN
1 Royston 7.079969 0.06626739 YESData yang telah dibuang outliernya di uji dengan menggunakan uji Royston dengan tingkat kepercayaan 95%. Dengan function MVN didapatkan output tersebut. Hipotesis :
Ho : Variabel prediktor berdistribusi normal multivariat H1 : Variabel prediktor tidak berdistribusi normal multivariat Berdasarkan Uji Royston dengan p-value 0,066 > 0,05, maka terima Ho. Dapat disimpulkan bahwa data telah berdistribusi normal multivariat
5.4 Uji Asumsi Homogenitas Matriks Ragam Peragam
> uji_bart(dataakhir)
Bartlett's test of sphericity
data: dataakhir
Khi-squared = 72.679, df = 6, p-value = 1.152e-13Berdasarkan Uji Barlettt dapat diketahui p-value 1.152e-13 < 0,05 maka terima Ho. Dapat disimpulkan bahwa variable respon memiliki matriks ragam peragam yang sama.
5.5 Uji Vektor Nilai Rata-Rata Kedua Kelompok(Wilks Lambda)
> X.wilks
Df Wilks approx F num Df den Df Pr(>F)
dataakhir$IPM 1 0.3346 17.898 3 27 1.347e-06 ***
Residuals 29
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Hipotesis : Ho : $𝜇_1 \(=\)𝜇_2 $(tidak terdapat perbedaan rata-rata indeks pembangunan manusia kategori tinggi dan rendah) H1 : \(𝜇_1\) \(\ne\) \(𝜇_2\) (terdapat perbedaan rata-rata indeks pembangunan manusia kategori tinggi dan rendah) Berdasarkan Uji Wilks lambda dapat diketahui p-value 1,347 e -06 <0,05, maka tolak Ho. Dapat disimpulkan bahwa terdapat perbedaan rata-rata indeks pembangunan manusia kategori tinggi dan rendah.
5.6 Pengujian Kontribusi Variabel Prediktor Terhadap Respon
> cc
Canonical Discriminant Analysis for dataakhir$IPM:
CanRsq Eigenvalue Difference Percent Cumulative
1 0.6654 1.9887 100 100
Test of H0: The canonical correlations in the
current row and all that follow are zero
LR test stat approx F numDF denDF Pr(> F)
1 0.3346 17.898 3 27 1.347e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1Hasil dari pengujian yang didapat menunjukkan bahwa nilai Canonical Correlation sebesar 0.6654, artinya variabel motivasi angka harapan hidup, pengeluaran per kapita riil disesuaikan, dan harapan alam sekolah dapat indeks pembangunan manusia (Kategori IPM tinggi atau rendah) sebesar 66.54%, sedangkan 33,46% lainnya dipengaruhi oleh variabel lain di luar penelitian.
5.7 Fungsi Diskriminan
> modellda<-lda(IPM~., data = dataakhir)
> modellda
Call:
lda(IPM ~ ., data = dataakhir)
Prior probabilities of groups:
0 1
0.483871 0.516129
Group means:
AHH PPKRD HLS
0 70.29133 10361.80 12.86533
1 73.13875 13808.56 14.20813
Coefficients of linear discriminants:
LD1
AHH 0.3383448710
PPKRD 0.0002704442
HLS 0.6209241436Dalam menentukan fungsi diskriminan, dilakukan dengan bantuan function lda dari output Coefficients of linear discriminants tersebut didapatkan semua variabel membentuk fungsi diskriminan yaitu X1, X2, dan X3 . Sehingga, fungsi diskriminan baku yang terbentuk. \[ \hat D = 0,338 𝑋_1+0,0002 𝑋_2 +0,62𝑋_3\] Berdasarkan model yang dihasilkan dapat diketahui bahwa semua variabel prediktor bertanda positif semua. Dapat disimpulkan bahwa angka harapan hidup, pengeluaran perkapita riil disesuaikan dan harapan lama sekolah dapat berpengaruh secara positif terhadap indeks pembangunan manusia.
5.8 Membuat Tabel Klasifikasi Dan Menguji Ketepatan Model
> table(actual=dataakhir$IPM, predicted=pred_LDA1$class)
predicted
actual 0 1
0 15 0
1 2 14Dapat diketahui bahwa indeks pembangunan manusia yang rendah tetap berada pada kategori rendah sebanyak 15 Kabupaten/Kota sedangkan pada indeks pembangunan manusia kategori tinggi dari data awal 16, berada tetap di kategori tinggi sebanyak 14 dan 2 yang lain berada pada kategori rendah. \[𝐻𝑖𝑡 𝑅𝑎𝑡𝑖𝑜=(15+14)/(15+2+0+14)=0,9354\] Dapat disimpulkan tingkat akurasi yang diklasifikasikan oleh model sebesar 93,54%