Anda di halaman 1dari 27

ANALISIS DISKRIMINAN DUA POPULASI

A. PERMASALAHAN
Dalam dunia pendidikan, khususnya pada jenjang pendidikan menengah, spesifikasi
studi siswa di kelas 11 (Sebelas) mulai dikelompokkan ke dalam beberapa jurusan yang
disediakan oleh pihak sekolah guna mengakomodir minat dan bakat masing-masing
siswa. Secara umum, ada tiga jurusan yang bisa dipilih siswa di sebagian besar sekolah
yang ada di Indonesia, yaitu jurusan IPA, IPS, dan Bahasa. Ada juga beberapa sekolah
yang hanya membuka jurusan IPA dan IPS, karena keterbatasan dayadukung sekolah
tersebut.
Pengelompokan siswa ke dalam jurusan yang ada, biasanya didasari oleh dua faktor
utama yaitu minat (keinginan) dan kemampuan akademis. Kemampuan akademis yang
ditunjukkan oleh nilai-nilai raport siswa di kelas 10 (Sepuluh) merupakan data kongkrit
yang biasanya digunakan oleh pihak sekolah sebagai dasar pengelompokan siswa ke
dalam jurusan yang ada, tentunya dengan tetap mempertimbangkan minat siswa yang
bersangkutan.
Terkait dengan hal tersebut, analisis diskriminan sepertinya dapat membantu pihak
sekolah dalam melakukan pengelompokan siswa ke dalam jurusan yang ada
berdasarkan data nilai raport siswa pada tahun ajaran sebelumnya. Oleh karena itu,
tugas ini membahas tentang penerapan analisis diskriminan untuk pengelompokan
siswa kelas 11 ke dalam jurusan IPA dan IPS (Analisis diskriminan untuk dua populasi).
Untuk keperluan tersebut, digunakan data simulasi yang dibangkitkan dari distribusi
normal ganda menggunakan SAS.
Peubah yang dijadikan sebagai dasar pengelompokan adalah nilai rata-rata raport siswa
di kelas 10 untuk mata pelajaran Matematika (MAT), Sejarah (SJR), Geografi (GEO),
Ekonomi (EKO), Sosiologi (SOS), Fisika (FIS), Kimia (KIM), dan Biologi (BIO).

B. PENGOLAHAN DATA
Ada 3 tahap yang perlu dilakukan dalam pengolahan data, yaitu membangkitkan data,
menguji asumsi, dan melakukan proses diskriminan. Berikut adalah pelaksanaan tahap-
tahap tersebut.

1. MEMBANGKITKAN DATA
Simulasi data dilakukan dengan membangkitkan data berdistribusi normal ganda (8
peubah) dengan matrik ragam peragam kedua populasi sama. Software yang
digunakan untuk membangkitkan data ini adalah SAS.
Langkah-langkah dalam membangkitkan data :
 Menetapkan ukuran contoh untuk masing-masih populasi.
Dalam kasus ini, ukuran contoh untuk kelompok IPA adalah n1=60 dan
kelompok IPS juga sama, n2 = 60.
 Menetapkan rata-rata (mean) kedua populasi
Berikut adalah rata-rata yang digunakan dalam membangkitkan data untuk
populasi IPA dan IPS.

RATA2 IPA IPS


MAT 80 75

1
SJR 75 75
GEO 78 78
EKO 80 80
SOS 82 81
FIS 81 81
KIM 78 78
BIO 76 76

 Menetapkan matriks ragam peragam


Dalam membangkitkan data normal ganda, syarat yang harus dipenuhi
adalah matriks ragam peragamnya harus definit positif. Agar diperoleh matrik
ragam peragam yang definit positif, diperlukan beberapa langkah, yaitu :
a. Membangkitkan data univariat normal untuk delapan peubah, sehingga
diperoleh data delapan peubah yang saling bebas. Dalam
membangkitkan data univariat normal ini, langkahnya adalah dengan
menetapkan mean dan standar deviasi, kemudian bangkitkan datanya.
Software yang digunakan adalah Minitab.
b. Mencari matriks ragam peragam dari delapan peubah yang telah
dibangkitkan dari distibusi univariat normal pada point a.
Berikut adalah hasil matriks ragam peragamnya.

MAT SJR GEO EKO SOS FIS KIM BIO


5.44194 -0.68407 0.49850 0.76595 1.37212 -0.46038 -0.22821 2.29353
MAT
-0.68407 4.75065 -1.24689 0.39186 -0.75504 -0.91045 -0.79542 -1.51024
SJR
0.49850 -1.24689 5.28521 0.01965 2.01840 -0.05528 -0.04171 0.75935
GEO
0.76595 0.39186 0.01965 4.67606 -0.77976 0.26745 -0.72560 -1.36895
EKO
1.37212 -0.75504 2.01840 -0.77976 5.05336 0.60005 0.71341 1.69548
SOS
-0.46038 -0.91045 -0.05528 0.26745 0.60005 5.38905 0.97215 0.40044
FIS
-0.22821 -0.79542 -0.04171 -0.72560 0.71341 0.97215 4.93728 0.25117
KIM
2.29353 -1.51024 0.75935 -1.36895 1.69548 0.40044 0.25117 7.47620
BIO

c. Menentukan akar ciri dari matriks ragam peragam pada poin b, untuk
melihat apakah matriks tersebut definit positif atau tidak.
Berikut adalah nilai akar ciri dari matriks ragam peragam tersebut.
𝝀𝟏 11,5111
𝝀𝟐 6,8974
𝝀𝟑 5,9524
𝝀𝟒 5,4226
𝝀𝟓 4,2551
𝝀𝟔 3,9793
𝝀𝟕 2,8670
𝝀𝟖 2,1251

Karena semua akar ciri dari matriks varian kovarian tersebut positif, maka
matriks varian kovarian pada poin b bersifat definit positif. Sehingga,
matriks tersebut dapat digunakan untuk membangkitkan data berdistribusi
normal ganda.
 Membangkitkan data untuk populasi IPA dan populasi IPS.

2
Proses pembangkitan data ini, dilakukan secara bersamaan dalam satu
program SAS. Output data bangkitan ini dapat dilihat di lampiran 2.

2. MENGUJI ASUMSI
Ada tiga asumsi (syarat) yang harus dipenuhi sebelum dilakukan analisis
diskriminan, yaitu :
 Masing-masing populasi memiliki sebaran normal ganda
Karena data yang digunakan adalah data bangkitan dari sebaran normal
ganda, maka data tersebut tentunya telah memenuhi asumsi normalitas
ganda. Namun, akan lebih baik jika dilakukan pengecekan uji normalitas
ganda menggunakan plot kuantil khi kuadrat. Berikut adalah hasilnya.

Dari plot quantil khi kuadrat kelompok IPA dan kelompok IPS di atas terlihat
bahwa plot quantil cenderung membentuk garis lurus (membentuk pola linier),
yang berarti bahwa data telah menyebar normal ganda. Hasil uji normalitas
ganda untuk kelompok IPA dan kelompok IPS ternyata sama persis. Berikut
adalah hasil uji berdasarkan statistik Mardia dan Henze Zikler.
Normality Test

Equation Test Statistic Value Prob

3
Normality Test

Equation Test Statistic Value Prob

mat Shapiro-Wilk W 0.98 0.7733

sjr Shapiro-Wilk W 0.96 0.0987

geo Shapiro-Wilk W 0.98 0.5831

eko Shapiro-Wilk W 0.95 0.0406

sos Shapiro-Wilk W 0.97 0.4613

fis Shapiro-Wilk W 0.94 0.0131

kim Shapiro-Wilk W 0.97 0.3829

bio Shapiro-Wilk W 0.97 0.4535

System Mardia Skewness 169.2 0.0021

Mardia Kurtosis 1.44 0.1507

Henze-Zirkler T -0.50 0.6194

Output diatas adalah hasil uji normal ganda menggunakan makro multivariate
normality test di SAS. Terlihat bahwa menurut mardia tidak memenuhi
normal ganda (prob untuk mardia skewness < 0,0021), tapi menurut Henze
Zirkler , data memenuhi asumsi normal ganda (Prob > 0,05).
 Kedua populasi memiliki matriks ragam peragam yang sama
Karena data yang digunakan adalah data yang dibangkitkan dari populasi
normal ganda dengan ragam peragam sama, maka data ini pasti memenuhi
asumsi kesamaan matriks ragam peragam kedua populasi. Untuk lebih
meyakinkan, dilakukan uji kesamaan matriks ragam peragam dengan
menggunakan statistiks Box’s M.
Hipotesis : 𝐻0 : Σ1 = Σ2
𝐻1 : Σ1 ≠ Σ2
Kriteria Pengujian :
Jika nilai Sig. > 0,05, berarti 𝐻0 diterima.
Jika nilai Sig. < 0,05, berarti 𝐻0 ditolak.

Berikut ini adalah hasil uji kesamaan matriks matriks ragam peragam yang
dikeluarkan oleh SPSS.

Test Results

Box's M .000

F Approx. .000

df1 36

df2 4.685E4

4
Sig. 1.000

Tests null hypothesis of equal


population covariance matrices.

Dari output di atas, terlihat bahwa nilai Sig. = 1.000 > 0,05. Hal ini berarti
bahwa matriks ragam peragam dari populasi IPA sama dengan matriks
ragam peragam populasi IPS.

 Terdapat perbedaan vektor nilai tengah kedua populasi


Uji ini untuk melihat apakah ada perbedaan yang signifikan antara kelompok
IPA dan IPS. Statistik yang digunakan adalah statistik V-Bartlett.
Hipotesis :
𝐻0 : 𝜇1 = 𝜇2
𝐻1 : 𝜇1 ≠ 𝜇2
Kriteria Pengujian :
Jika nilai Sig. > 0,05, berarti 𝐻0 diterima.
Jika nilai Sig. < 0,05, berarti 𝐻0 ditolak.

Berikut adalah hasil output SPSS dari uji perbedaan vektor nilai tengah
populasi IPA dan IPS.

Wilks' Lambda
Test
of
Functi Wilks'
on(s) Lambda Chi-square df Sig.
1 .344 121.794 8 .000

Hasil uji memberikan nilai Sig.=0,000 < 0,05, sehingga Ho ditolak. Dengan
demikian, terdapat perbedaan vektor nilai tengah antara populasi IPA dan
IPS.

Karena ketiga asumsi telah terpenuhi, maka proses diskriminan dapat


dilanjutkan.

3. PROSES DISKRIMINAN

Sebelum dilakukan proses diskriminan, berikut disajikan plot antara Matematika dan
Sejarah untuk kedua populasi.

5
Pada gambar di atas, Col 1 menunjukkan pubah Matematika dan Col 2 menunjukkan
peubah Sejarah. Terlihat bahwa, kedua populasi terlihat cenderung memisah bila
ditinjau dari dua matapelajaran tersebut.
Karena plot yang bisa dibentuk adalah plot 2 dimensi, maka posisi pengamatan
hanya bisa dilihat untuk 2 peubah saja.
Untuk pasangan peubah-peubah lain tentunya juga bisa dibuat plot nya.

Ada tiga tahap penting yang harus dilakukan dalam melakukan proses diskriminan,
yaitu membentuk fungsi duskriminan, melakukan klasifikasi, dan menghitung
kesalahan klasifikasi.
i) Membentuk fungsi diskriminan
Fungsi diskriminan yang akan dibentuk untuk pengelompokan dua populasi
adalah fungsi diskriminan fisher.
Rumus fungsi diskriminan fisher :
y = 𝐚′𝐱
dengan,
𝐚 = 𝚺 −𝟏 (𝛍𝟏 − 𝛍𝟐 )
μ1 =vektor rata-rata kelompok IPA
μ𝟐 =vektor rata-rata kelompok IPS
Σ−1 = matriks ragam peragam gabungan

Berikut hasil perhitungan vektor rata-rata , matriks ragam peragam kelompok IPA,
matriks ragam peragam kelompok IPS, matriks ragam peragam gabungan dan
inversnya.

Vektor rata-rata kelompok IPA dan IPS

RATA2 IPA IPS selisih

6
MAT 79,99 74,99 5
SJR 74,75 74,75 0
GEO 78,69 78,69 0
EKO 79,96 79,96 0
SOS 82,19 81,19 1
FIS 80,93 80,93 0
KIM 77,95 77,95 0
BIO 75,83 75,83 0

Matriks ragam peragam kelompok IPA


IPA MAT SJR GEO EKO SOS FIS KIM BIO
MAT 4,78 -1,80 0,29 0,59 1,16 0,09 0,09 2,41
SJR -1,80 5,47 -2,19 0,51 -1,37 -1,26 -2,08 -1,91
GEO 0,29 -2,19 5,40 -0,24 1,61 0,25 0,61 0,84
EKO 0,59 0,51 -0,24 5,84 -0,76 0,35 -0,58 -2,97
SOS 1,16 -1,37 1,61 -0,76 4,79 1,77 1,83 2,30
FIS 0,09 -1,26 0,25 0,35 1,77 6,59 2,21 0,12
KIM 0,09 -2,08 0,61 -0,58 1,83 2,21 4,71 0,79
BIO 2,41 -1,91 0,84 -2,97 2,30 0,12 0,79 9,17

Matriks ragam peragam kelompok IPS


IPS MAT SJR GEO EKO SOS FIS KIM BIO
MAT 4,78 -1,80 0,29 0,59 1,16 0,09 0,09 2,41
SJR -1,80 5,47 -2,19 0,51 -1,37 -1,26 -2,08 -1,91
GEO 0,29 -2,19 5,40 -0,24 1,61 0,25 0,61 0,84
EKO 0,59 0,51 -0,24 5,84 -0,76 0,35 -0,58 -2,97
SOS 1,16 -1,37 1,61 -0,76 4,79 1,77 1,83 2,30
FIS 0,09 -1,26 0,25 0,35 1,77 6,59 2,21 0,12
KIM 0,09 -2,08 0,61 -0,58 1,83 2,21 4,71 0,79
BIO 2,41 -1,91 0,84 -2,97 2,30 0,12 0,79 9,17

Matriks ragam peragam gabungan


COVAR
GAB MAT SJR GEO EKO SOS FIS KIM BIO
MAT 4,78 -1,80 0,29 0,59 1,16 0,09 0,09 2,41
SJR -1,80 5,47 -2,19 0,51 -1,37 -1,26 -2,08 -1,91
GEO 0,29 -2,19 5,40 -0,24 1,61 0,25 0,61 0,84
EKO 0,59 0,51 -0,24 5,84 -0,76 0,35 -0,58 -2,97
SOS 1,16 -1,37 1,61 -0,76 4,79 1,77 1,83 2,30
FIS 0,09 -1,26 0,25 0,35 1,77 6,59 2,21 0,12
KIM 0,09 -2,08 0,61 -0,58 1,83 2,21 4,71 0,79
BIO 2,41 -1,91 0,84 -2,97 2,30 0,12 0,79 9,17

Invers matriks ragam peragam gabungan


COVAR
GAB MAT SJR GEO EKO SOS FIS KIM BIO
MAT -0,08 -0,02 -0,01 0,23 0,02 -0,03 0,01 0,09

7
SJR -0,06 -0,04 -0,09 0,02 0,33 -0,06 -0,10 -0,05
GEO 0,02 0,03 0,02 -0,03 -0,06 0,19 -0,06 0,01
EKO 0,06 0,12 0,04 0,01 -0,10 -0,06 0,33 0,01
SOS -0,08 0,02 0,00 0,09 -0,05 0,01 0,01 0,17
FIS -0,08 -0,02 -0,01 0,23 0,02 -0,03 0,01 0,09
KIM -0,06 -0,04 -0,09 0,02 0,33 -0,06 -0,10 -0,05
BIO 0,02 0,03 0,02 -0,03 -0,06 0,19 -0,06 0,01

Berikut adalah koefisien fungsi disrkiminan fisher :


MATPEL KOEFESIEN
MAT 1,50
SJR 0,52
GEO 0,16
EKO -0,40
SOS 0,01
FIS 0,04
KIM 0,19
BIO -0,45

Jadi, fungsi diskriminannya adalah :


Y= 1,50 Mat + 0,52 Sjr + 0,16 Geo – 0,40 Eko + 0,01 Sos + 0,04 Fis + 0,19 Kim -0,45 Bio.

ii) Melakukan klasifikasi

Aturan Klasifikasinya adalah :


Jika Y=a’x ≥ h, maka kelompokkan x ke kelompok IPA
Jika Y=a’x < h, maka kelompokkan x ke kelompok IPS
Dimana

Hasil perhitungan dengan SAS, diperoleh nilai h = 119,27342.


Sehingga, seorang siswa akan dikelompokkan ke jurusan IPA jika skor
diskriminan Y ≥ 119,27342, dan jika sebaliknya, maka dikelompokkan ke jurusan
IPS.

Hasil klasifikasi dapat dilihat pada Lampiran 3.

Fungsi diskriminan dapat juga digunakan untuk prediksi, yaitu mengelompokkan


individu ke dalam kelompok tertentu berdasarkan nilai-nilai peubah bebas yang
diketahui.
Misalnya, pada tahun ajaran berikutnya, siswa kelas 10 memiliki nilai rata-rata
raport untuk masing – masing mata pelajaran sebagai berikut :

MATPEL NILAI
MAT 70,5
SJR 70,5
GEO 75,6

8
EKO 76,4
SOS 70,2
FIS 75,3
KIM 70
BIO 72,5

Skor diskriminan untuk siswa tersebut adalah

Y = (1,50)(70,5) + (0,52)(70,5) + (0,16)(75,6) - (0,40)(76,4) + (0,01)(70,2) +


(0,04)(75,3) + (0,19)(70) - (0,45)(72,5)

Y = 107,2429

Karena skor diskriminan lebih kecil dari 119,27342, maka siswa tersebut
dikelompokkan ke IPS.

iii) Menghitung kesalahan klasifikasi

Berikut adalah ringkasan hasil klasifikasi keluaran SPSS.


Classification Resultsa

Predicted Group Membership


JURUS
AN IPA IPS Total

Original Count IPA 54 6 60

IPS 3 57 60

% IPA 90.0 10.0 100.0

IPS 5.0 95.0 100.0

a. 92,5% of original grouped cases correctly classified.

Dari tabel hasil klasifikasi di atas, terlihat bahwa dari 60 siswa kelas 11 IPA,
berhasil diklasifikasikan secara benar ke jurusan IPA sebanyak 54 orang (90%)
dan salah klasifikasi ke jurusan IPS sebanyak 6 orang (10%). Sedangkan, dari 60
siswa kelas 11 IPS, yang berhasil diklasifikasikan secara benar ke jurusan IPS
ada 57 orang (95%) dan salah klasifikasi ke jurusan IPA sebanayk 3 orang (5%).

Peluang salah klasifikasi dapat dihitung sebagai berikut.


 Ambil peluang prior (𝜋𝑖 ) nya sebagai proporsi sampel kelompok ke-i terhadap
total sampel, i = 1,2. i=1 adalah IPA. i=2 adalah IPS.

9
Maka,
60
𝜋𝐼𝑃𝐴 = = 0,5
120
60
𝜋𝐼𝑃𝑆 = = 0,5
120
 Dugaan tingkat kesalahan klasifikasi di populasi IPA atau IPS.
6
̂R(IPA) =
E = 0,1
60
3
̂R(IPS) =
E = 0,05
60
 Total kesalahan klasifikasi :
̂R(IPA) + 𝜋𝐼𝑃𝑆 . E
= 𝜋𝐼𝑃𝐴 . E ̂R(IPS)

= 0,075
= 7,5%.
Jadi, dapat disimpulkan bahwa fungsi diskriminan yang terbentuk
memberikan total peluang salah klasifikasi sebesar 7,5%.

REFFERENSI

Johnson, R.A. & Wichern, D.W. 1998. Applied Multivariate Statistical Analysis. Fourth
edition. Prentice-Hall International, United States of America.
Mattjik, A.A. & Sumertajaya, I.M. 2011. Sidik Peubah Ganda. Dept. Statistika IPB, Bogor.
Santoso, S. 2002. Buku Latihan SPSS Statistik Multivariat. Elex Media Komputindo, Jakarta.

http://support.sas.com/kb/24/983.html

http://www.psych.yorku.ca/friendly/lab/files/macros/multnorm.sas

10
Lampiran 1. Program SAS untuk membangkitkan data normal ganda dan analisis
diskriminan
/***************************************************************/

TITLE;
%macro mvn(varcov=,
means=,
n=,
sample=);

proc iml worksize=100;


use &varcov;
read all into cov;
use &means;
read all into mu;
v=nrow(cov);
n=&n;
seed = 0;
l=t(root(cov));
z=normal(j(v,n,seed));
x=l*z;
x=repeat(mu,1,n)+x;
tx=t(x);
create &sample from tx;
append from tx;
quit;

%mend mvn;
Proc iml;
reset noprint;
varcov={ 5.44194 -0.68407 0.49850 0.76595 1.37212 -0.46038 -0.22821 2.29353,
-0.68407 4.75065 -1.24689 0.39186 -0.75504 -0.91045 -0.79542 -1.51024,
0.49850 -1.24689 5.28521 0.01965 2.01840 -0.05528 -0.04171 0.75935,
0.76595 0.39186 0.01965 4.67606 -0.77976 0.26745 -0.72560 -1.36895,
1.37212 -0.75504 2.01840 -0.77976 5.05336 0.60005 0.71341 1.69548,
-0.46038 -0.91045 -0.05528 0.26745 0.60005 5.38905 0.97215 0.40044,
-0.22821 -0.79542 -0.04171 -0.72560 0.71341 0.97215 4.93728 0.25117,
2.29353 -1.51024 0.75935 -1.36895 1.69548 0.40044 0.25117 7.47620};

print varcov;
mu1={80,75,78,80,82,81,78,76};

mu2={75,75,78,80,81,81,78,76};
print mu1 mu2;
create varcov from varcov;
append from varcov;

create mu1 from mu1;


append from mu1;

create mu2 from mu2;


append from mu2;

K=REPEAT('IPA',60,1)//REPEAT('IPS',60,1);
CREATE K FROM K[COLNAME='JURUSAN'];
APPEND FROM K;
quit;

data mu1;
set mu1;
data mu2;

11
set mu2;
data varcov;
set varcov;

%mvn(varcov=varcov,
means=mu1,
n=60,
sample=TGSCICI.data1);
%mvn(varcov=varcov,
means=mu2,
n=60,
sample=TGSCICI.data2);
DATA GABUNG;
SET TGSCICI.data1 TGSCICI.data2;

DATA TGSCICI.SAMPEL;
MERGE K GABUNG;
RUN;
proc print data=TGSCICI.SAMPEL;

symbol1 color=blue value=DOT height=0.5;


symbol2 color=red value=DOT height=0.5;

PROC GPLOT DATA=TGSCICI.SAMPEL;


PLOT COL1*COL2=JURUSAN;
TITLE " PLOT SEBARAN DATA POPULASI";
RUN;

TITLE;
proc iml;
reset noprint;
use TGSCICI.data1;
read all into grup1;
n1=nrow(grup1);
p=ncol(grup1);
rata1=grup1[+,]/n1;
mgrup1=grup1-repeat(rata1,n1,1);
covar1=(mgrup1`*mgrup1)/(n1-1); /* MATRIKS KOVARIAN KLASIK GRUP1*/

use TGSCICI.data2;
read all into grup2;
n2=nrow(grup2);
rata2=grup2[+,]/n2;
mgrup2=grup2-repeat(rata2,n2,1);
covar2=(mgrup2`*mgrup2)/(n2-1); /* MATRIKS KOVARIAN KLASIK GRUP2*/

covarX0=((n1-1)*covar1+(n2-1)*covar2)/(n1+n2-2);/* MATRIKS KOVARIAN KLASIK


GABUNGAN*/
b0KL=inv(covarX0)*(rata1`-rata2`); /* KOEFISIEN DIKRIMINAN KLASIK*/

invcovarx0=inv(covarX0);
rataKL=(rata1`+rata2`);
h0=(b0kl`*ratakl)/2;

print "matriks covarian gabungan",covarX0,,,,"koefisien


diskriminan",b0KL,,,,"invers matriks kovarian gab",invcovarx0,,,,"cut
point", h0;
x=grup1//grup2;
y0= x*b0KL;

12
create SKOR from y0[colname="SKOR_DISKRIMINAN"];
append from y0;

n=n1+n2;

KLAS=repeat("IPA",n,1);
do i=1 to n;
if y0[i, ]<h0 then KLAS[i, ]="IPS";
end;

create klasifikasi from KLAS[colname="KELOMPOK"];


append from KLAS;

K=REPEAT('IPA',60,1)//REPEAT('IPS',60,1);
T=J(N,1);

DO I=1 TO N;
IF K[I,]=KLAS[I,] THEN T[I,]=0;
END;
T1=T[1:N1,];
T2=T[N1+1:N,];

MISKLAS1=SUM(T1)/N1;;
MISKLAS2=SUM(T2)/N2;
MISKLAS=(SUM(T1)+SUM(T2))/N;

MISKLASIFIKASI=MISKLAS1||MISKLAS2||MISKLAS;
NAME={P1,P2,P};
CREATE TGSCICI.MISKLASIFIKASI FROM MISKLASIFIKASI[COLNAME=NAME];
APPEND FROM MISKLASIFIKASI;

quit;
data TGSCICI.hasil;
merge skor klasifikasi;

PROC PRINT data=TGSCICI.hasil;


TITLE1 "HASIL ANALISIS DISKRIMINAN";
TITLE2 "SKOR DISKRIMINAN DAN HASIL KLASIFIKASI";

PROC PRINT DATA=TGSCICI.MISKLASIFIKASI;


TITLE2 "";
TITLE2 "PELUANG KESALAHAN KLASIFIKASI";
run;

13
Lampiran 2. Data Hasil Bangkitan dari Distribusi Normal Ganda dengan Matriks Ragam
Peragam Sama
JURUSAN MAT SJR GEO EKO SOS FIS KIM BIO
IPA 79,92 75,96 79,85 82,07 81,93 80,21 77,81 75,55
IPA 77,91 77,36 75,61 81,03 81,24 79,84 76,94 73,06
IPA 76,28 73,65 77,55 77,14 81,87 81,25 83,55 68,64
IPA 78,33 75,26 79,84 77,76 79,77 76,33 75,74 72,47
IPA 81,28 75,98 76,31 85,83 80,29 82,42 76,99 71,22
IPA 79,38 75,38 78,44 83,00 84,29 84,31 77,31 76,72
IPA 82,48 72,59 74,98 77,15 80,07 82,88 76,26 78,96
IPA 77,93 71,72 81,72 77,27 81,86 78,80 76,06 75,62
IPA 83,14 71,06 80,91 77,70 83,98 75,43 76,53 79,70
IPA 81,25 74,58 79,16 77,52 82,95 84,06 78,93 79,71
IPA 79,58 75,58 75,49 82,16 84,06 79,85 79,29 71,29
IPA 79,19 74,18 77,10 78,93 83,75 84,54 76,09 79,08
IPA 81,29 75,58 79,51 79,43 81,01 81,31 78,73 75,08
IPA 78,96 76,05 79,13 79,11 83,49 82,40 80,14 77,65
IPA 78,45 72,83 77,94 79,56 85,41 83,82 80,49 76,14
IPA 79,79 73,33 78,71 77,21 82,85 83,54 80,45 79,14
IPA 74,28 77,76 77,46 80,24 81,24 79,93 77,07 73,36
IPA 76,24 74,55 81,87 81,81 80,08 75,18 77,71 74,76
IPA 80,88 70,97 80,61 82,16 81,43 81,96 77,05 76,97
IPA 82,12 73,15 78,95 81,52 85,88 82,18 78,15 73,50
IPA 80,64 73,34 77,79 80,97 80,87 78,03 77,13 76,90
IPA 79,97 75,17 78,01 82,91 81,49 82,54 76,90 70,62
IPA 80,90 74,72 79,96 78,25 78,67 79,69 76,16 78,84
IPA 79,45 73,73 78,21 77,06 79,37 79,82 76,36 76,56
IPA 82,49 75,54 75,56 78,73 81,20 79,86 73,84 79,05
IPA 81,85 70,39 81,23 77,62 81,78 81,58 80,39 75,96
IPA 82,06 75,35 76,69 80,35 83,50 80,09 77,35 79,48
IPA 79,68 71,13 80,21 82,47 79,03 83,18 80,64 74,88
IPA 77,23 76,12 79,93 79,59 79,62 81,66 76,74 75,67
IPA 79,73 74,91 81,16 78,29 85,11 83,11 80,29 77,85
IPA 79,16 75,65 77,47 77,20 81,63 75,94 78,94 78,76
IPA 77,61 79,18 76,84 84,11 77,84 76,48 72,96 69,68
IPA 78,06 80,65 74,19 78,92 79,96 81,11 78,87 77,53
IPA 81,19 74,77 79,18 78,17 85,08 77,32 79,30 80,62
IPA 76,56 76,10 76,67 76,48 80,60 80,09 75,20 75,60
IPA 79,96 77,48 81,14 77,89 83,88 80,85 78,33 82,85
IPA 79,51 74,80 76,46 78,05 78,97 76,46 76,21 77,11
IPA 84,36 75,68 76,39 76,48 85,59 83,35 78,57 75,87
IPA 83,91 70,10 83,82 81,36 82,22 81,83 79,97 77,50
IPA 84,21 74,03 78,72 80,80 83,57 76,03 77,33 77,01
IPA 81,17 71,97 81,41 84,20 80,43 84,21 77,80 71,73
IPA 79,09 75,43 81,34 81,60 82,10 79,99 77,23 72,83
IPA 79,02 76,40 80,08 81,45 82,32 81,71 74,48 77,14
IPA 79,46 70,09 75,00 82,70 83,38 84,96 84,80 80,06
IPA 77,87 74,46 84,11 75,79 87,88 84,48 79,75 76,20
IPA 80,09 74,06 77,52 77,58 82,06 84,24 77,88 76,56
IPA 80,84 76,14 74,56 78,29 79,81 79,86 75,94 75,85
IPA 81,46 70,64 83,22 78,24 84,23 83,34 81,96 76,26

14
IPA 79,76 75,94 79,36 80,56 84,46 78,34 75,01 74,03
IPA 76,02 76,65 77,69 80,25 81,79 79,95 80,23 73,90
IPA 79,34 75,54 78,50 80,18 82,02 82,14 79,56 72,58
IPA 81,03 80,05 79,32 80,90 80,33 78,74 76,05 75,59
IPA 79,86 77,10 76,66 81,35 81,51 81,51 77,22 71,41
IPA 77,30 74,09 82,46 80,19 86,64 85,21 77,18 76,85
IPA 84,89 71,47 80,54 85,42 85,59 79,88 77,84 78,95
IPA 84,00 75,45 78,96 80,77 85,09 80,11 80,14 79,49
IPA 80,41 78,95 78,58 84,72 79,22 82,36 75,81 69,44
IPA 78,58 75,20 77,23 79,59 80,91 82,37 77,97 73,74
IPA 81,20 75,36 75,22 82,47 81,23 82,47 79,40 74,42
IPA 80,93 73,34 78,90 77,22 82,80 80,53 78,26 75,68
IPS 74,92 75,96 79,85 82,07 80,93 80,21 77,81 75,55
IPS 72,91 77,36 75,61 81,03 80,24 79,84 76,94 73,06
IPS 71,28 73,65 77,55 77,14 80,87 81,25 83,55 68,64
IPS 73,33 75,26 79,84 77,76 78,77 76,33 75,74 72,47
IPS 76,28 75,98 76,31 85,83 79,29 82,42 76,99 71,22
IPS 74,38 75,38 78,44 83,00 83,29 84,31 77,31 76,72
IPS 77,48 72,59 74,98 77,15 79,07 82,88 76,26 78,96
IPS 72,93 71,72 81,72 77,27 80,86 78,80 76,06 75,62
IPS 78,14 71,06 80,91 77,70 82,98 75,43 76,53 79,70
IPS 76,25 74,58 79,16 77,52 81,95 84,06 78,93 79,71
IPS 74,58 75,58 75,49 82,16 83,06 79,85 79,29 71,29
IPS 74,19 74,18 77,10 78,93 82,75 84,54 76,09 79,08
IPS 76,29 75,58 79,51 79,43 80,01 81,31 78,73 75,08
IPS 73,96 76,05 79,13 79,11 82,49 82,40 80,14 77,65
IPS 73,45 72,83 77,94 79,56 84,41 83,82 80,49 76,14
IPS 74,79 73,33 78,71 77,21 81,85 83,54 80,45 79,14
IPS 69,28 77,76 77,46 80,24 80,24 79,93 77,07 73,36
IPS 71,24 74,55 81,87 81,81 79,08 75,18 77,71 74,76
IPS 75,88 70,97 80,61 82,16 80,43 81,96 77,05 76,97
IPS 77,12 73,15 78,95 81,52 84,88 82,18 78,15 73,50
IPS 75,64 73,34 77,79 80,97 79,87 78,03 77,13 76,90
IPS 74,97 75,17 78,01 82,91 80,49 82,54 76,90 70,62
IPS 75,90 74,72 79,96 78,25 77,67 79,69 76,16 78,84
IPS 74,45 73,73 78,21 77,06 78,37 79,82 76,36 76,56
IPS 77,49 75,54 75,56 78,73 80,20 79,86 73,84 79,05
IPS 76,85 70,39 81,23 77,62 80,78 81,58 80,39 75,96
IPS 77,06 75,35 76,69 80,35 82,50 80,09 77,35 79,48
IPS 74,68 71,13 80,21 82,47 78,03 83,18 80,64 74,88
IPS 72,23 76,12 79,93 79,59 78,62 81,66 76,74 75,67
IPS 74,73 74,91 81,16 78,29 84,11 83,11 80,29 77,85
IPS 74,16 75,65 77,47 77,20 80,63 75,94 78,94 78,76
IPS 72,61 79,18 76,84 84,11 76,84 76,48 72,96 69,68
IPS 73,06 80,65 74,19 78,92 78,96 81,11 78,87 77,53
IPS 76,19 74,77 79,18 78,17 84,08 77,32 79,30 80,62
IPS 71,56 76,10 76,67 76,48 79,60 80,09 75,20 75,60
IPS 74,96 77,48 81,14 77,89 82,88 80,85 78,33 82,85
IPS 74,51 74,80 76,46 78,05 77,97 76,46 76,21 77,11
IPS 79,36 75,68 76,39 76,48 84,59 83,35 78,57 75,87
IPS 78,91 70,10 83,82 81,36 81,22 81,83 79,97 77,50
IPS 79,21 74,03 78,72 80,80 82,57 76,03 77,33 77,01

15
IPS 76,17 71,97 81,41 84,20 79,43 84,21 77,80 71,73
IPS 74,09 75,43 81,34 81,60 81,10 79,99 77,23 72,83
IPS 74,02 76,40 80,08 81,45 81,32 81,71 74,48 77,14
IPS 74,46 70,09 75,00 82,70 82,38 84,96 84,80 80,06
IPS 72,87 74,46 84,11 75,79 86,88 84,48 79,75 76,20
IPS 75,09 74,06 77,52 77,58 81,06 84,24 77,88 76,56
IPS 75,84 76,14 74,56 78,29 78,81 79,86 75,94 75,85
IPS 76,46 70,64 83,22 78,24 83,23 83,34 81,96 76,26
IPS 74,76 75,94 79,36 80,56 83,46 78,34 75,01 74,03
IPS 71,02 76,65 77,69 80,25 80,79 79,95 80,23 73,90
IPS 74,34 75,54 78,50 80,18 81,02 82,14 79,56 72,58
IPS 76,03 80,05 79,32 80,90 79,33 78,74 76,05 75,59
IPS 74,86 77,10 76,66 81,35 80,51 81,51 77,22 71,41
IPS 72,30 74,09 82,46 80,19 85,64 85,21 77,18 76,85
IPS 79,89 71,47 80,54 85,42 84,59 79,88 77,84 78,95
IPS 79,00 75,45 78,96 80,77 84,09 80,11 80,14 79,49
IPS 75,41 78,95 78,58 84,72 78,22 82,36 75,81 69,44
IPS 73,58 75,20 77,23 79,59 79,91 82,37 77,97 73,74
IPS 76,20 75,36 75,22 82,47 80,23 82,47 79,40 74,42
IPS 75,93 73,34 78,90 77,22 81,80 80,53 78,26 75,68

16
Lampiran 3. Hasil Perhitungan SAS terhadap Matriks Ragam Peragam Gabungan,
Koefesien Diskriminan, Cut Point (h), dan Peluang Salah Klasifikasi

matriks covarian gabungan

COVARX0

4.7785545 -1.7994 0.2920577 0.5862351 1.1594573 0.088891 0.0854172 2.4108804

-1.7994 5.4735205 -2.187339 0.5086972 -1.369862 -1.25981 -2.07557 -1.91095

0.2920577 -2.187339 5.3992705 -0.241056 1.6086118 0.2530639 0.611452 0.8433755

0.5862351 0.5086972 -0.241056 5.8418231 -0.761586 0.3517769 -0.582688 -2.970722

1.1594573 -1.369862 1.6086118 -0.761586 4.7919923 1.7655806 1.8298034 2.298763

0.088891 -1.25981 0.2530639 0.3517769 1.7655806 6.5911139 2.212296 0.1221488

0.0854172 -2.07557 0.611452 -0.582688 1.8298034 2.212296 4.7072498 0.7875048

2.4108804 -1.91095 0.8433755 -2.970722 2.298763 0.1221488 0.7875048 9.1721694

invers matriks kovarian gab

INVCOVARX0

0.3130368 0.1122683 0.0489957 -0.083517 -0.063832 0.0195778 0.0560347 -0.07952

0.1122683 0.3155846 0.1161028 -0.019198 -0.0444 0.0261828 0.1213124 0.01971

0.0489957 0.1161028 0.2496819 -0.01225 -0.089672 0.0232084 0.0397807 0.0031343

-0.083517 -0.019198 -0.01225 0.2309679 0.0170333 -0.025168 0.013586 0.0887856

-0.063832 -0.0444 -0.089672 0.0170333 0.3275129 -0.05993 -0.095137 -0.051826

0.0195778 0.0261828 0.0232084 -0.025168 -0.05993 0.1944172 -0.064351 0.0079794

0.0560347 0.1213124 0.0397807 0.013586 -0.095137 -0.064351 0.3273321 0.0078849

-0.07952 0.01971 0.0031343 0.0887856 -0.051826 0.0079794 0.0078849 0.1747071

17
koefisien diskriminan

B0KL

1.5013517

0.5169419

0.1553065

-0.400554

0.0083519

0.0379587

0.1850366

-0.449424

cut point

H0

119.27342

HASIL ANALISIS DISKRIMINAN


PELUANG KESALAHAN KLASIFIKASI

Obs P1 P2 P

1 0.1 0.05 0.075

18
Lampiran 4. Hasil Klasifikasi Analisis Diskriminan
SKOR_DISKRIMINAN KELOMPOK SKOR_DISKRIMINAN KELOMPOK
122,9510414 IPA 115,435931 IPS
121,3561568 IPA 113,8410464 IPS
122,129043 IPA 114,6139326 IPS
122,7697703 IPA 115,2546599 IPS
124,8101285 IPA 117,2950181 IPS
120,8165878 IPA 113,3014774 IPS
124,5369691 IPA 117,0218587 IPS
119,5696531 IPA 112,0545427 IPS
124,915495 IPA 117,4003846 IPS
124,4531499 IPA 116,9380395 IPS
123,7310568 IPA 116,2159464 IPS
120,0448914 IPA 112,529781 IPS
126,2358011 IPA 118,7206907 IPS
122,2094718 IPA 114,6943614 IPS
120,2379998 IPA 112,7228894 IPS
122,179768 IPA 114,6646576 IPS
116,6085037 IPS * 109,0933933 IPS
117,2524131 IPS * 109,7373027 IPS
121,1890632 IPA 113,6739528 IPS
125,9762658 IPA 118,4611554 IPS
121,9800441 IPA 114,4649337 IPS
124,1242372 IPA 116,6091268 IPS
123,5125718 IPA 115,9974614 IPS
122,0965101 IPA 114,5813997 IPS
124,9405965 IPA 117,4254861 IPS
125,3090703 IPA 117,7939599 IPS
124,20649 IPA 116,6913796 IPS
120,9114506 IPA 113,3963402 IPS
119,783153 IPA 112,2680426 IPS
123,4126031 IPA 115,8974927 IPS
121,8373749 IPA 114,3222645 IPS
121,4276349 IPA 113,9125245 IPS
122,2990189 IPA 114,7839085 IPS
123,613727 IPA 116,0986166 IPS
119,1997097 IPS * 111,6845993 IPS
122,538627 IPA 115,0235166 IPS
121,6521514 IPA 114,137041 IPS
131,3182063 IPA 123,8030959 IPA *
126,4086664 IPA 118,893556 IPS
127,8407264 IPA 120,325616 IPA *
124,0077343 IPA 116,4926239 IPS
122,959501 IPA 115,4443906 IPS
120,8445297 IPA 113,3294193 IPS
117,690624 IPS * 110,1755136 IPS
122,56212 IPA 115,0470096 IPS
123,3721014 IPA 115,856991 IPS
124,6114246 IPA 117,0963142 IPS
125,1579745 IPA 117,6428641 IPS
123,3475473 IPA 115,8324369 IPS
119,0257962 IPS * 111,5106858 IPS

19
124,1505791 IPA 116,6354687 IPS
126,7088874 IPA 119,193777 IPS
125,0498003 IPA 117,5346899 IPS
118,7401754 IPS * 111,225065 IPS
125,36313 IPA 117,8480196 IPS
127,8872883 IPA 120,3721779 IPA *
126,4117907 IPA 118,8966803 IPS
122,056572 IPA 114,5414616 IPS
124,5703554 IPA 117,055245 IPS
124,9547041 IPA 117,4395937 IPS

20
Lampiran 5. Program SAS untuk Uji Normal Ganda dengan Plot Quantil Khi Kuadrat

PROC IML;
use Tmp2.data1;
read all into grup1;
n1=nrow(grup1);
p=ncol(grup1);
rata1=grup1[+,]/n1;
mgrup1=grup1-repeat(rata1,n1,1);
covar1=(mgrup1`*mgrup1)/(n1-1);

use Tmp2.data2;
read all into grup2;
n2=nrow(grup2);
rata2=grup2[+,]/n2;
mgrup2=grup2-repeat(rata2,n2,1);
covar2=(mgrup2`*mgrup2)/(n2-1);

*UJI NORMALGANDA TERHADAP DATA KELOMPOK IPA";


MAH1=MGRUP1*INV(COVAR1)*MGRUP1`;
JARAK1=VECDIAG(MAH1);
JARAK1=JARAK1[1:n1-1,];

call sort (jarak1,1);

prob1=j(n1-1,1);
do i=1 to (n1-1);
prob1[i,]=cinv(i/n1,n1-1);
end;

*UJI NORMALGANDA TERHADAP DATA KELOMPOK IPS";


MAH2=MGRUP2*INV(COVAR2)*MGRUP2`;
JARAK2=VECDIAG(MAH2);
JARAK2=JARAK2[1:n2-1,];

call sort (jarak2,1);

prob2=j(n1-1,1);
do i=1 to (n2-1);
prob2[i,]=cinv(i/n2,n2-1);
end;

plot1=jarak1||prob1;
plot2=jarak2||prob2;

name={jarak_mahalanobis2,kuantil_CHI2};

create plot1 from plot1[colname=name];


append from plot1;

create plot2 from plot2[colname=name];


append from plot2;
plot1=JARAK1||prob1;
plot2=JARAK2||prob2;
quit;

symbol1 color=blue value=DOT height=0.5;

21
PROC GPLOT DATA=plot1;
PLOT kuantil_CHI2*jarak_mahalanobis2;
TITLE "PLOT NORMALITAS GANDA KELOMPOK IPA";
RUN;
TITLE;
PROC GPLOT DATA=plot2;
PLOT kuantil_CHI2*jarak_mahalanobis2;
TITLE "PLOT NORMALITAS GANDA KELOMPOK IPS";
RUN;

Lampiran 6. Program Uji Normal Ganda Menggunakan Makro.


data ips;

%inc "D:\TUANPUTRIE FILE\STK FILE\ANALISIS PEUBAH GANDA\MAKRO UJI NORMAL


GANDA DARI WEB.sas";
%multnorm(data=ips, var=mat sjr geo eko sos fis kim bio,
plot=mult, hires=no)

BERIKUT ADALAH MAKRO UNTUK UJI MULTIVARIAT NORMAL DENGAN STATISTIK MARDIA
DAN HENZE ZIKLER.

%macro multnorm (version,


data=_last_ , /* input data set */
var= , /* REQUIRED: variables for test */
/* May NOT be a list e.g. var1-var10 */
plot=both , /* Create multivar and/or univar plot? */
hires=yes /* Create high-res plots? */
);

%let _version=1.3;
%if &version ne %then %put MULTNORM macro Version &_version;

%if %sysevalf(&sysver < 7) %then %do;


%put MULTNORM: SAS 7 or later is required. Terminating.;
%let opts=;
%goto exit;
%end;

%let opts = %sysfunc(getoption(notes))


_last_=%sysfunc(getoption(_last_));
%if &data=_last_ %then %let data=&syslast;
options nonotes;

/* Check for newer version */


%if %sysevalf(&sysver >= 7) %then %do;
filename _ver url
'http://ftp.sas.com/techsup/download/stat/versions.dat';
data _null_;
infile _ver;
input name:$15. ver;
if upcase(name)="&sysmacroname" then call symput("_newver",ver);
run;
%if &syserr ne 0 %then
%put &sysmacroname: Unable to check for newer version;

22
%else %if %sysevalf(&_newver > &_version) %then %do;
%put &sysmacroname: A newer version of the &sysmacroname macro is
available.;
%put %str( ) You can get the newer version at this location:;
%put %str( ) http://support.sas.com/ctx/samples/index.jsp;
%end;
%end;

/* Verify that VAR= option is specified */


%if &var= %then %do;
%put ERROR: Specify test variables in the VAR= argument;
%goto exit;
%end;

/* Parse VAR= list */


%let _i=1;
%do %while (%scan(&var,&_i) ne %str() );
%let arg&_i=%scan(&var,&_i);
%let _i=%eval(&_i+1);
%end;
%let nvar=%eval(&_i-1);

/* Remove observations with missing values */


%put MULTNORM: Removing observations with missing values...;
data _nomiss;
set &data;
if nmiss(of &var )=0;
run;

/* Quit if covariance matrix is singular */


%let singular=nonsingular;
%put MULTNORM: Checking for singularity of covariance matrix...;
proc princomp data=_nomiss outstat=_evals noprint;
var &var ;
run;
%if &syserr=3000 %then %do;
%put MULTNORM: PROC PRINCOMP required for singularity check.;
%put %str( Covariance matrix not checked for singularity.);
%goto findproc;
%end;
data _null_;
set _evals;
where _TYPE_='EIGENVAL';
if round(min(of &var ),1e-8)<=0 then do;
put 'ERROR: Covariance matrix is singular.';
call symput('singular','singular');
end;
run;
%if &singular=singular %then %goto exit;

%findproc:
/* Is IML or MODEL available for analysis? */
%let mult=yes; %let multtext=%str( and Multivariate);
%put MULTNORM: Checking for necessary procedures...;
proc model; quit;
%if &syserr=0 and %substr(&sysvlong,1,1)>=8 %then %do;
%put MULTNORM: Using SAS/ETS PROC MODEL...;
%goto model;
%end;
proc iml; quit;
%if &syserr=0 %then %do;

23
%put MULTNORM: Using SAS/IML...;
%goto iml;
%end;
%put MULTNORM: SAS/ETS PROC MODEL with NORMAL option or SAS/IML is
required;
%put %str( to perform tests of multivariate normality.
Univariate);
%put %str( normality tests will be done.);
%let mult=no; %let multtext=;
%goto univar;

%iml:
proc iml;
reset;
use _nomiss; read all var {&var} into _x; /* input data */

/* compute mahalanobis distances */


_n=nrow(_x); _p=ncol(_x);
_c=_x-j(_n,1)*_x[:,]; /* centered variables */
_s=(_c`*_c)/_n; /* covariance matrix */
_rij=_c*inv(_s)*_c`; /* mahalanobis angles */

/* get values for probability plot and output to data set */


%if %upcase(%substr(&plot,1,1))=M or %upcase(%substr(&plot,1,1))=B %then
%do;
_d=vecdiag(_rij#(_n-1)/_n); /* squared mahalanobis distances */
_rank=ranktie(_d); /* ranks of distances */
_chi=cinv((_rank-.5)/_n,_p); /* chi-square quantiles */
_chiplot=_d||_chi;
create _chiplot from _chiplot [colname={'MAHDIST' 'CHISQ'}];
append from _chiplot;
%end;

/* Mardia tests based on multivariate skewness and kurtosis */


_b1p=(_rij##3)[+,+]/(_n##2); /* skewness */
_b2p=trace(_rij##2)/_n; /* kurtosis */
_k=(_p+1)#(_n+1)#(_n+3)/(_n#((_n+1)#(_p+1)-6)); /* small sample
correction */
_b1pchi=_b1p#_n#_k/6; /* skewness test
statistic */
_b1pdf=_p#(_p+1)#(_p+2)/6; /* and df
*/
_b2pnorm=(_b2p-_p#(_p+2))/sqrt(8#_p#(_p+2)/_n); /* kurtosis test
statistic */
_probb1p=1-probchi(_b1pchi,_b1pdf); /* skewness p-value */
_probb2p=2*(1-probnorm(abs(_b2pnorm))); /* kurtosis p-value */

/* output results to data sets */


_names={"Mardia Skewness","Mardia Kurtosis"};
create _names from _names [colname='TEST'];
append from _names;
_probs=(_n||_b1p||_b1pchi||_probb1p) // (_n||_b2p||_b2pnorm||_probb2p);
create _values from _probs [colname={'N' 'VALUE' 'STAT' 'PROB'}];
append from _probs;
quit;
%if &syserr ne 0 %then %do;
%Put MULTNORM: Errors encountered in PROC IML. Terminating.;
%goto exit;
%end;

24
data _mult;
merge _names _values;
run;

%univar:
/* get univariate test results */
proc univariate data=_nomiss noprint;
var &var;
output out=_stat normal=&var ;
output out=_prob probn=&var ;
output out=_n n=&var ;
run;

data _univ;
set _stat _prob _n;
run;

proc transpose data=_univ name=variable


out=_tuniv(rename=(col1=stat col2=prob col3=n));
var &var ;
run;

data _both;
length test $15.;
set _tuniv
%if &mult=yes %then _mult;;
if test='' then if n<=2000 then test='Shapiro-Wilk';
else test='Kolmogorov';
run;

proc print data=_both noobs split='/';


var variable n test %if &mult=yes %then value;
stat prob;
format prob pvalue.;
title "MULTNORM macro: Univariate&multtext Normality Tests";
label variable="Variable"
test="Test" %if &mult=yes %then
value="Multivariate/Skewness &/Kurtosis";
stat="Test/Statistic/Value"
prob="p-value";
run;
%if %upcase(%substr(&plot,1,1))=N %then %goto exit;
%if (%upcase(%substr(&plot,1,1))=U or %upcase(%substr(&plot,1,1))=B) and
%upcase(%substr(&hires,1,1))=Y %then %do;
ods exclude fitquantiles parameterestimates;
proc univariate data=_nomiss noprint;
hist &var / normal;
run;
%end;
%if %upcase(%substr(&plot,1,1))=M or %upcase(%substr(&plot,1,1))=B %then
%if &mult=yes %then %goto plotstep;
%else %goto plot;
%else %goto exit;

%model:
/* Multivariate and Univariate tests with MODEL */
ods select normalitytest;
proc model data=_nomiss;
%do _i=1 %to &nvar;

25
&&arg&_i = _a;
%end;
fit &var / normal;
title "MULTNORM macro: Univariate&multtext Normality Tests";
run;
quit;
%if &syserr ne 0 %then %do;
%put MULTNORM: Errors encountered in PROC MODEL. Terminating.;
%goto exit;
%end;

%if %upcase(%substr(&plot,1,1))=N %then %goto exit;


%if (%upcase(%substr(&plot,1,1))=U or %upcase(%substr(&plot,1,1))=B) and
%upcase(%substr(&hires,1,1))=Y %then %do;
ods exclude fitquantiles parameterestimates;
proc univariate data=_nomiss noprint;
hist &var / normal;
run;
%end;
%if %upcase(%substr(&plot,1,1))=U %then %goto exit;

%plot:
/* compute values for chi-square Q-Q plot */
proc princomp data=_nomiss std out=_chiplot noprint;
var &var ;
run;
%if &syserr=3000 %then %do;
%put ERROR: PROC PRINCOMP in SAS/STAT needed to do plot.;
%goto exit;
%end;
data _chiplot;
set _chiplot;
mahdist=uss(of prin1-prin&nvar );
keep mahdist;
run;
proc rank data=_chiplot out=_chiplot;
var mahdist;
ranks rdist;
run;
data _chiplot;
set _chiplot nobs=_n;
chisq=cinv((rdist-.5)/_n,&nvar);
keep mahdist chisq;
run;

%plotstep:
/* Create a chi-square Q-Q plot
NOTE: Very large sample size is required for chi-square asymptotics
unless the number of variables is very small.
*/
%if %upcase(%substr(&hires,1,1))=Y %then
%if %sysprod(graph)=1 %then %str(proc gplot data=_chiplot;);
%else %do;
%put MULTNORM: SAS/GRAPH not found. PROC PLOT will be used instead.;
proc plot data=_chiplot;
%end;
%else %str(proc plot data=_chiplot;);
plot mahdist*chisq;
label mahdist="Squared Distance"

26
chisq="Chi-square quantile";
title "MULTNORM macro: Chi-square Q-Q plot";
run;
quit;

%exit:
options &opts;
title;
%mend;

27

Anda mungkin juga menyukai