1 PENDAHULUAN

1.1 Latar Belakang

Analisis diskriminan merupakan salah satu teknik statistik multivariat yang digunakan untuk memisahkan objek ke dalam dua atau lebih kelompok berdasarkan kombinasi linear variabel prediktor. Metode ini bertujuan membentuk fungsi diskriminan yang memaksimalkan perbedaan antar kelompok sehingga suatu observasi dapat diklasifikasikan dengan akurat. Pada tingkat praktikum, analisis diskriminan dipelajari untuk memahami bagaimana pemisahan linear dapat diterapkan pada data yang memiliki struktur kelompok yang jelas.

Dalam praktikum ini, analisis diskriminan akan diterapkan pada dataset Rice (Cammeo dan Osmancik) yang diambil berdasarkan penelitian klasifikasi varietas nasi menggunakan metode artificial intelligence (Cinar dan Koklu, 2019). Berdasarkan penelitian tersebut, dataset ini dihasilkan dari perangkat yang terdiri atas kamera, sistem pencahayaan terkontrol, dan perangkat lunak pemrosesan hasil kamera yang mengambil dan menganalisis butiran beras. Melalui sistem ini, diturunkan sejumlah fitur numerik seperti area, perimeter, major axis length, minor axis length, Eccentricity, convex area, Extent dan Class. Setiap butiran beras diidentifikasi ke dalam salah satu dari dua varietas, yakni Cammeo atau Osmancik, sehingga membentuk struktur data dua kelompok dengan variabel prediktor kontinu. 

Karakteristik data seperti ini sangat sesuai untuk dianalisis menggunakan analisis diskriminan, karena tujuannya adalah menentukan kombinasi variabel morfologis yang paling efektif dalam membedakan kedua varietas tersebut. Melalui penerapan metode ini, praktikum bertujuan mengevaluasi kemampuan fungsi diskriminan dalam memisahkan kedua kelompok, mengidentifikasi variabel yang paling berkontribusi terhadap pemisahan kelas, serta menilai tingkat akurasi model dalam melakukan klasifikasi.

2 Tinjauan Pustaka

2.1 Analisis Diskriminan untuk Dua Kelompok

Menurut Rencher (2002), analisis diskriminan memiliki dua tujuan utama. Tujuan pertama adalah mendeskripsikan pemisahan kelompok melalui pembentukan kombinasi linear variabel yang dapat menjelaskan perbedaan antar grup. Pada tahap ini, analisis berfokus pada kontribusi masing-masing variabel terhadap pemisahan serta pencarian bidang proyeksi yang memberikan gambaran paling jelas mengenai konfigurasi kelompok. Tujuan kedua adalah mengklasifikasikan atau mengalokasikan suatu observasi ke dalam kelompok tertentu dengan menggunakan fungsi diskriminan atau fungsi klasifikasi. Nilai-nilai pada suatu unit pengamatan dievaluasi melalui fungsi tersebut untuk menentukan kelompok mana yang paling mungkin ditempati oleh observasi tersebut.

Rencher (2002) menjelaskan bahwa pada analisis diskriminan untuk dua kelompok, fungsi diskriminan dibentuk sebagai kombinasi linear variabel yang memaksimalkan pemisahan antara dua populasi yang memiliki matriks kovarians sama tetapi memiliki vektor mean yang berbeda. Misalkan terdapat dua kelompok dengan rerata y1dan y2, masing-masing terdiri dari pengamatan 𝑦 berdimensi 𝑝. Pada kasus dua kelompok saja, fungsi diskriminan didefinisikan sebagai transformasi linear

\[ z = \mathbf{a}' \mathbf{y} \]

yang memetakan setiap vektor pengamatan ke dalam suatu nilai skalar. Proyeksi ini menghasilkan dua set nilai, yaitu z1i untuk kelompok pertama dan z2i untuk kelompok kedua, dengan bentuk sebagai berikut.

\[ z_{1i} = \mathbf{a}' \mathbf{y}_{1i} = a_1 y_{11} + a_2 y_{12} + \cdots + a_p y_{1p}, \qquad z_{2i} = \mathbf{a}' \mathbf{y}_{2i} = a_1 y_{21} + a_2 y_{22} + \cdots + a_p y_{2p} \]

rata-rata dari kedua bentuk tersebut adalah

\[ z_{1i} = \mathbf{a}' \mathbf{y}_{1i} = \bar{\mathbf{y}}_1 = \frac{1}{n_1} \sum_{i=1}^{n_1} \mathbf{y}_{1i}, \qquad z_{2i} = \mathbf{a}' \mathbf{y}_{2i} = \bar{\mathbf{y}}_2 = \frac{1}{n_2} \sum_{i=1}^{n_2} \mathbf{y}_{2i} \]

Pada dua kelompok, tujuan utama fungsi diskriminan adalah mencari vektor koefisien 𝑎 yang memaksimalkan perbedaan antara dua mean proyeksi tersebut relatif terhadap varians dalam kelompok. Rencher menyatakan bahwa ukuran pemisahan optimal dinyatakan melalui rasio berikut.

\[ \frac{ \left[ \mathbf{a}' (\bar{\mathbf{y}}_1 - \bar{\mathbf{y}}_2 ) \right]^2 }{ \mathbf{a}' \mathbf{S}_p \mathbf{a} } \]

Rasio ini akan mencapai maksimum ketika

\[ \mathbf{a} = \mathbf{S}_p^{-1} (\bar{\mathbf{y}}_1 - \bar{\mathbf{y}}_2) \]

Dengan demikian, untuk analisis diskriminan dua kelompok, fungsi diskriminan linear yang optimal diperoleh dengan memproyeksikan data ke arah perbedaan mean yang telah ditimbang oleh invers kovarians gabungan. Proyeksi ini memberikan pemisahan maksimum antara dua kelompok di ruang satu dimensi, sehingga kombinasi linear yang dihasilkan merupakan pemisah terbaik bagi kasus dua kelas.

2.2 Asumsi Analisis Diskriminan Linear

Menurut Hair et al. (2018), penerapan analisis diskriminan memerlukan sejumlah asumsi agar proses estimasi fungsi diskriminan dan hasil klasifikasi dapat dipercaya. Asumsi-asumsi ini berpengaruh langsung terhadap ketepatan pemisahan kelompok serta stabilitas koefisien diskriminan.

Pertama, analisis diskriminan mengasumsikan bahwa variabel independen dalam masing-masing kelompok mengikuti distribusi normal multivariat. Pelanggaran terhadap normalitas dapat menyebabkan ketidakstabilan dalam estimasi fungsi diskriminan, terutama bila ukuran sampel kecil atau perbedaan ukuran kelompok cukup besar.

Kedua, diasumsikan bahwa masing-masing kelompok memiliki matriks varians-kovarians yang sama. Pengujian paling umum untuk memeriksa asumsi ini adalah Box’s M test, yang mengevaluasi apakah kovarians antar kelompok berbeda secara signifikan. Hair et al. menekankan bahwa Box’s M sensitif terhadap ukuran sampel, sehingga tingkat signifikansi konservatif (misalnya p < 0.01) sering dianjurkan.
Hair et al. juga menekankan bahwa keberadaan outlier dapat memengaruhi ketepatan fungsi diskriminan maupun hasil klasifikasi, sehingga pemeriksaan dan penanganan outlier perlu dilakukan sebelum estimasi. Apabila asumsi-asumsi ini dilanggar, dampaknya dapat muncul baik pada proses estimasi fungsi diskriminan maupun pada akurasi klasifikasi. Dalam kondisi pelanggaran yang berat, peneliti disarankan mempertimbangkan metode alternatif seperti regresi logistik atau quadratic discriminant analysis.

2.3 Data

Data yang digunakan dalam praktikum ini adalah dataset Rice (Cammeo dan Osmancik) yang diambil berdasarkan penelitian klasifikasi varietas nasi menggunakan metode artificial intelligence (Cinar dan Koklu, 2019). Berdasarkan penelitian tersebut, dataset ini dihasilkan dari perangkat yang terdiri atas kamera, sistem pencahayaan terkontrol, dan perangkat lunak pemrosesan hasil kamera yang mengambil dan menganalisis butiran beras. Melalui sistem ini, diturunkan sejumlah fitur numerik seperti area, perimeter, major axis length, minor axis length, Eccentricity, convex area, Extent dan Class. Setiap butiran beras diidentifikasi ke dalam salah satu dari dua varietas, yakni Cammeo atau Osmancik, sehingga membentuk struktur data dua kelompok dengan variabel prediktor kontinu. 

Keterangan variabel:

  1. Area
    Menghasilkan jumlah piksel yang berada di dalam batas-batas butir beras.

  2. Perimeter
    Menghitung keliling butir beras berdasarkan jarak antar-piksel yang membentuk kontur (boundary) objek.

  3. Major Axis Length
    Panjang sumbu utama, yaitu garis terpanjang yang dapat ditarik pada butir beras.

  4. Minor Axis Length
    Panjang sumbu minor, yaitu garis terpendek yang dapat ditarik pada butir beras tegak lurus terhadap sumbu utama.

  5. Eccentricity
    Mengukur tingkat kebulatan objek dengan membandingkannya terhadap suatu elips yang memiliki momen spasial sama dengan butir beras. Nilai mendekati 1 menunjukkan bentuk lebih lonjong; mendekati 0 menunjukkan bentuk lebih bulat.

  6. Convex Area
    Menyatakan jumlah piksel pada convex hull terkecil yang dapat membungkus butir beras.

  7. Extent
    Menyatakan rasio antara area butir beras dengan jumlah piksel pada bounding box yang menaungi objek tersebut.

  8. Class
    Kategori varietas beras, yaitu Cammeo atau Osmancik.

3 SOURCE CODE

3.1 Library

> library(readr)
> library(MVN)
> library(biotools) 
> library(MASS) 
> library(candisc)

3.2 Impor Data

> library(knitr)
> rice = read.csv("D:/[PERKULIAHAN]/Analisis Multivariat/PRAKTIKUM/rice.csv")
> str(rice)
'data.frame':   3810 obs. of  8 variables:
 $ Area             : int  15231 14656 14634 13176 14688 13479 15757 16405 14534 13485 ...
 $ Perimeter        : num  526 494 501 458 507 ...
 $ Major_Axis_Length: num  230 206 214 193 212 ...
 $ Minor_Axis_Length: num  85.1 91.7 87.8 87.4 89.3 ...
 $ Eccentricity     : num  0.929 0.895 0.912 0.892 0.907 ...
 $ Convex_Area      : int  15617 15072 14954 13368 15262 13786 16150 16837 14932 13734 ...
 $ Extent           : num  0.573 0.615 0.693 0.641 0.646 ...
 $ Class            : chr  "Cammeo" "Cammeo" "Cammeo" "Cammeo" ...
> kable(head(rice,30), caption = "Sebagian Data klasifikasi butir nasi (Cammeo dan Osmancik)")
Sebagian Data klasifikasi butir nasi (Cammeo dan Osmancik)
Area Perimeter Major_Axis_Length Minor_Axis_Length Eccentricity Convex_Area Extent Class
15231 525.579 229.7499 85.09379 0.9288820 15617 0.5728955 Cammeo
14656 494.311 206.0201 91.73097 0.8954050 15072 0.6154363 Cammeo
14634 501.122 214.1068 87.76829 0.9121181 14954 0.6932588 Cammeo
13176 458.343 193.3374 87.44839 0.8918609 13368 0.6406690 Cammeo
14688 507.167 211.7434 89.31245 0.9066909 15262 0.6460239 Cammeo
13479 477.016 200.0531 86.65029 0.9013283 13786 0.6578973 Cammeo
15757 509.281 207.2967 98.33614 0.8803235 16150 0.5897081 Cammeo
16405 526.570 221.6125 95.43671 0.9025206 16837 0.6588883 Cammeo
14534 483.641 196.6508 95.05068 0.8754286 14932 0.6496513 Cammeo
13485 471.570 198.2726 87.72729 0.8967893 13734 0.5723199 Cammeo
14930 499.925 212.2458 90.01748 0.9056064 15248 0.6243727 Cammeo
14626 496.586 204.5341 92.97487 0.8907115 15070 0.5702145 Cammeo
15926 522.740 225.7361 91.05709 0.9150332 16240 0.7797689 Cammeo
14076 479.677 199.4892 90.70998 0.8906389 14434 0.7812188 Cammeo
13500 476.915 202.5467 85.40547 0.9067549 13800 0.7177033 Cammeo
14349 496.946 213.5440 86.16077 0.9149884 14678 0.6668371 Cammeo
15209 496.565 214.0501 91.02632 0.9050726 15395 0.5693696 Cammeo
15238 496.871 208.5318 93.82840 0.8930549 15487 0.7323145 Cammeo
13509 480.466 207.1372 83.94016 0.9142106 13732 0.5956349 Cammeo
13699 480.729 197.9709 89.94907 0.8908207 14178 0.6720467 Cammeo
13921 481.993 203.4449 88.12582 0.9013132 14210 0.5613306 Cammeo
14405 488.237 204.4301 90.62646 0.8963671 14742 0.7637858 Cammeo
13377 472.961 199.9408 86.68287 0.9011330 13685 0.7948307 Cammeo
15043 498.299 206.0117 94.76669 0.8879157 15414 0.5868836 Cammeo
14590 496.172 212.1008 88.60241 0.9085678 14883 0.5714845 Cammeo
13237 466.003 197.9048 85.70957 0.9013532 13445 0.5924186 Cammeo
16226 524.205 216.8733 96.65368 0.8951979 16748 0.6486249 Cammeo
13203 469.466 199.3419 85.38957 0.9036094 13431 0.6015582 Cammeo
13328 473.044 201.3989 85.25861 0.9059746 13588 0.7800995 Cammeo
14945 493.108 202.0470 95.07941 0.8823569 15357 0.7399980 Cammeo

3.3 Uji Asumsi

> knitr::opts_chunk$set(max.print = 30)
> #Cek Outlier
> testnorm = mvn(rice[,1:7], multivariate_outlier_method = 'adj',show_new_data = TRUE)
> testnorm$multivariate_normality
           Test Statistic p.value     Method          MVN
1 Henze-Zirkler     9.605  <0.001 asymptotic ✗ Not normal
> 
> newdata <- testnorm$new_data #new_data berisi data yang sudah dihapus baris outliernya
> result = mvn(newdata,mvn_test = 'mardia',alpha = 0.05)
> result$multivariate_normality
             Test Statistic p.value     Method          MVN
1 Mardia Skewness  3310.632  <0.001 asymptotic ✗ Not normal
2 Mardia Kurtosis    -1.139   0.255 asymptotic     ✓ Normal
> 
> datafin = rice[c(rownames(newdata)),1:8]
> #rownames(newdata) digunakan supaya datafin mengambil baris non outlier saja dari data rice
> kable(head(datafin,30),caption = "Data tanpa outlier")
Data tanpa outlier
Area Perimeter Major_Axis_Length Minor_Axis_Length Eccentricity Convex_Area Extent Class
2 14656 494.311 206.0201 91.73097 0.8954050 15072 0.6154363 Cammeo
4 13176 458.343 193.3374 87.44839 0.8918609 13368 0.6406690 Cammeo
6 13479 477.016 200.0531 86.65029 0.9013283 13786 0.6578973 Cammeo
9 14534 483.641 196.6508 95.05068 0.8754286 14932 0.6496513 Cammeo
10 13485 471.570 198.2726 87.72729 0.8967893 13734 0.5723199 Cammeo
12 14626 496.586 204.5341 92.97487 0.8907115 15070 0.5702145 Cammeo
14 14076 479.677 199.4892 90.70998 0.8906389 14434 0.7812188 Cammeo
15 13500 476.915 202.5467 85.40547 0.9067549 13800 0.7177033 Cammeo
20 13699 480.729 197.9709 89.94907 0.8908207 14178 0.6720467 Cammeo
21 13921 481.993 203.4449 88.12582 0.9013132 14210 0.5613306 Cammeo
22 14405 488.237 204.4301 90.62646 0.8963671 14742 0.7637858 Cammeo
23 13377 472.961 199.9408 86.68287 0.9011330 13685 0.7948307 Cammeo
24 15043 498.299 206.0117 94.76669 0.8879157 15414 0.5868836 Cammeo
26 13237 466.003 197.9048 85.70957 0.9013532 13445 0.5924186 Cammeo
28 13203 469.466 199.3419 85.38957 0.9036094 13431 0.6015582 Cammeo
29 13328 473.044 201.3989 85.25861 0.9059746 13588 0.7800995 Cammeo
31 13130 467.922 196.1468 86.20712 0.8982411 13462 0.5748183 Cammeo
32 13414 479.901 203.0860 85.73688 0.9065165 13735 0.7140424 Cammeo
35 14479 475.925 200.5519 92.17806 0.8881147 14696 0.7114289 Cammeo
36 14306 482.248 197.6858 94.05611 0.8795611 14667 0.5879501 Cammeo
37 14415 488.122 203.5928 91.03473 0.8944634 14758 0.6741021 Cammeo
38 14415 490.066 206.5392 90.01753 0.9000254 14671 0.6533267 Cammeo
39 14524 480.212 199.9330 93.31210 0.8844068 14808 0.6112795 Cammeo
41 12768 464.820 195.3882 84.35992 0.9019907 13085 0.5829871 Cammeo
44 13973 474.008 192.3493 93.77914 0.8730972 14354 0.6141978 Cammeo
45 13858 482.580 205.0202 86.96468 0.9055797 14154 0.5559211 Cammeo
47 12792 462.073 194.4810 84.73089 0.9001031 13032 0.5939270 Cammeo
50 14911 494.089 207.5602 92.41061 0.8954197 15132 0.6047615 Cammeo
51 15360 504.232 210.3907 94.74096 0.8928725 15751 0.7576579 Cammeo
58 13536 478.006 203.1738 85.91058 0.9062030 13810 0.5528057 Cammeo
> 
> #UJI ASUMSI HOMOGENITAS RAGAM PERAGAM
> ujiboxM = boxM(cbind(datafin$Area,datafin$Perimeter,datafin$Major_Axis_Length,
+                      datafin$Minor_Axis_Length,datafin$Eccentricity,datafin$Convex_Area,
+                      datafin$Extent),datafin$Class)
> ujiboxM

    Box's M-test for Homogeneity of Covariance Matrices

data:  cbind(datafin$Area, datafin$Perimeter, datafin$Major_Axis_Length,     datafin$Minor_Axis_Length, datafin$Eccentricity, datafin$Convex_Area,     datafin$Extent)
Chi-Sq (approx.) = 2249.8, df = 28, p-value < 2.2e-16

3.4 Pengujian Perbedaan Rata-rata kelompok

> X<-as.matrix(datafin[,1:7])
> X.manova<-manova(X~datafin$Class, data=datafin)
> X.wilks<-summary(X.manova, test="Wilks")
> X.wilks
                Df   Wilks approx F num Df den Df    Pr(>F)    
datafin$Class    1 0.37996   625.23      7   2682 < 2.2e-16 ***
Residuals     2688                                             
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

3.5 Kontribusi Variabel Prediktor terhadap Respon

> cc<-candisc(X.manova)
> cc

Canonical Discriminant Analysis for datafin$Class:

   CanRsq Eigenvalue Difference Percent Cumulative
1 0.62004     1.6318                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.37996   625.23     7  2682 < 2.2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

3.6 Membuat Fungsi Diskriminan

> library(MASS)
> ldamdl<-lda(datafin$Class~., data = datafin)
> ldamdl
Call:
lda(datafin$Class ~ ., data = datafin)

Prior probabilities of groups:
   Cammeo  Osmancik 
0.2579926 0.7420074 

Group means:
             Area Perimeter Major_Axis_Length Minor_Axis_Length Eccentricity
Cammeo   13554.83  473.2275          197.7268          88.34623    0.8942526
Osmancik 11586.14  429.9507          176.5322          84.61886    0.8766063
         Convex_Area    Extent
Cammeo      13869.00 0.6510349
Osmancik    11834.98 0.6693083

Coefficients of linear discriminants:
                            LD1
Area               3.352083e-04
Perimeter          1.761657e-02
Major_Axis_Length -3.223497e-02
Minor_Axis_Length  1.481436e+00
Eccentricity       2.156263e+02
Convex_Area       -6.384982e-03
Extent            -1.449774e-01

3.7 Membuat Tabel Klasifikasi untuk Melihat Ketepatan Model

> predLDA1<- predict(ldamdl, datafin)
> table(actual=datafin$Class, predicted=predLDA1$class)
          predicted
actual     Cammeo Osmancik
  Cammeo      563      131
  Osmancik     86     1910

4 HASIL DAN PEMBAHASAN

4.1 Hasil Uji Normalitas

Uji normalitas multivariat awal menggunakan fungsi mvn() menunjukkan bahwa data tidak berdistribusi normal, baik secara univariat maupun multivariat. Selain itu, teridentifikasi sejumlah outlier berdasarkan jarak Mahalanobis. Penanganan dilakukan dengan membuang baris data yang mengandung outlier sehingga dihasilkan data baru (datafin) yang digunakan pada analisis selanjutnya.

Meskipun outlier telah dihilangkan dan pengujian ulang dilakukan, hasil normalitas tetap menunjukkan bahwa data tidak berdistribusi normal. Kondisi ini dapat disebabkan oleh karakteristik variabel pada dataset Rice yang cenderung memiliki distribusi tidak simetris. Dalam konteks praktikum, analisis tetap dilanjutkan karena tujuan utama adalah menerapkan prosedur analisis diskriminan dan mengevaluasi pemisahan kelompok menggunakan data nyata, bukan memastikan pemenuhan asumsi teoritis secara ketat. Pelanggaran asumsi normalitas dicatat sebagai keterbatasan dalam interpretasi hasil.

4.2 Hasil Uji Homogenitas Matriks Varians–Kovarians

Hasil uji Box’s M menunjukkan bahwa matriks varians–kovarians kedua kelompok tidak homogen. Namun, Hair et al. (2018) menyatakan bahwa dampak ketidaksamaan kovarians dapat diminimalkan apabila ukuran sampel cukup besar, sehingga analisis diskriminan masih dapat dilakukan tanpa gangguan yang terlalu serius. Karena dataset rice memiliki jumlah observasi yang besar, analisis tetap dilanjutkan untuk tujuan praktikum. Dalam kondisi seperti ini, Quadratic Discriminant Analysis sebenarnya dapat menjadi alternatif karena tidak memerlukan asumsi kovarians yang sama antar kelompok. Namun, praktikum ini tetap menggunakan Linear Discriminant Analysis dan mencatat ketidakhomogenan kovarians sebagai keterbatasan analisis.

4.3 Hasil Uji Perbedaan Rata-rata antar Kelompok

Berdasarkan hasil uji MANOVA menggunakan statistik Wilks’ Lambda, diperoleh nilai Wilks sebesar 0.37996. Nilai p yang sangat kecil ini menunjukkan bahwa terdapat perbedaan rata-rata yang signifikan secara multivariat antara kelompok Cammeo dan Osmancik pada tujuh variabel yang dianalisis.

4.4 Kontribusi Variabel Prediktor terhadap Respon

Berdasarkan analisis canonical discriminant, hanya terbentuk satu fungsi kanonik karena data terdiri dari dua kelompok. Fungsi kanonik tersebut memiliki nilai canonical R² sebesar 0.62004, yang menunjukkan bahwa sekitar 62% variasi pemisahan antara kelompok Cammeo dan Osmancik dapat dijelaskan oleh kombinasi linear variabel prediktor. Nilai eigen sebesar 1.6318 mengindikasikan kemampuan fungsi ini dalam memisahkan dua kelompok cukup kuat.

4.5 Hasil Fungsi Diskriminan

Model LDA menghasilkan satu fungsi diskriminan karena data terdiri dari dua kelompok. Koefisien LD1 menunjukkan kontribusi masing-masing variabel dalam pemisahan kedua kelompok. Variabel dengan kontribusi positif terhadap skor diskriminan adalah Area (0.000335), Perimeter (0.0176), Minor Axis Length (1.4814), dan Eccentricity (215.6263), sedangkan Major Axis Length (−0.0322), Convex Area (−0.00638), dan Extent (−0.1449) berkontribusi negatif. Besarnya nilai absolut koefisien menunjukkan bahwa Eccentricity, Minor Axis Length, dan Extent menjadi variabel yang paling berpengaruh dalam membedakan Cammeo dan Osmancik. 

4.6 Hasil Klasifikasi Fungsi Diskriminan

Berdasarkan hasil klasifikasi menggunakan model LDA, diperoleh bahwa dari 694 butir beras Cammeo, sebanyak 563 terklasifikasi dengan benar dan 131 salah diklasifikasikan sebagai Osmancik. Sementara itu, dari 1.996 butir beras Osmancik, sebanyak 1.910 terklasifikasi dengan benar dan 86 salah diklasifikasikan sebagai Cammeo. Secara keseluruhan, model mampu mengklasifikasikan mayoritas pengamatan dengan benar, yang menunjukkan bahwa fungsi diskriminan yang terbentuk cukup efektif dalam memisahkan kedua kelompok berdasarkan variabel yang digunakan.

Sebagai pembanding, dilakukan juga klasifikasi menggunakan Quadratic Discriminant Analysis, yang tidak mensyaratkan homogenitas matriks varians–kovarians. Hasil klasifikasi menunjukkan bahwa QDA mengklasifikasikan 612 butir Cammeo dan 1.800 butir Osmancik dengan benar. Jumlah salah klasifikasi pada kelompok Cammeo berkurang dibandingkan LDA, namun kesalahan klasifikasi pada Osmancik justru meningkat. Perbedaan ini menunjukkan bahwa QDA memberikan pola pemisahan yang berbeda karena mempertimbangkan kovarians spesifik kelompok. Hasil klasifikasi menunjukkan bahwa QDA mengklasifikasikan 612 butir Cammeo dan 1.800 butir Osmancik dengan benar. Jumlah salah klasifikasi pada kelompok Cammeo berkurang dibandingkan LDA, namun kesalahan klasifikasi pada Osmancik justru meningkat. Perbedaan ini menunjukkan bahwa QDA memberikan pola pemisahan yang berbeda karena mempertimbangkan kovarians spesifik kelompok.

5 KESIMPULAN

Berdasarkan serangkaian analisis yang telah dilakukan, dapat disimpulkan bahwa data butiran beras varietas Cammeo dan Osmancik memiliki perbedaan multivariat yang signifikan, sebagaimana ditunjukkan oleh hasil MANOVA. Perbedaan ini memungkinkan terbentuknya satu fungsi diskriminan linear (LD1) yang menjadi dasar pemisahan dua varietas tersebut. Fungsi diskriminan yang diperoleh menunjukkan bahwa variabel Eccentricity, Minor Axis Length, dan Extent memberikan kontribusi paling besar dalam membedakan kedua kelompok, sedangkan variabel lainnya berkontribusi dalam skala yang lebih kecil.

Namun, proses analisis menunjukkan bahwa beberapa asumsi dasar Linear Discriminant Analysis (LDA) tidak terpenuhi. Uji normalitas univariat maupun multivariat menunjukkan bahwa data tidak berdistribusi normal, dan uji Box’s M mengindikasikan bahwa matriks varians–kovarians antar kelompok tidak homogen. Kondisi ini menjadi keterbatasan penting dalam interpretasi hasil, karena LDA secara teoritis bekerja optimal ketika asumsi-asumsi tersebut dipenuhi. Meski demikian, ukuran sampel yang sangat besar membantu menstabilkan estimasi dan memungkinkan analisis tetap dilakukan untuk tujuan praktikum. Hal ini sejalan dengan literatur yang menyatakan bahwa efek ketidaksamaan kovarians dapat diminimalkan dengan jumlah data yang memadai.

Hasil klasifikasi menunjukkan bahwa LDA mampu mengelompokkan sebagian besar pengamatan dengan akurasi yang lebih tinggi dibandingkan quadratic discriminant analysis (QDA). Namun, karena asumsi homogenitas kovarians tidak terpenuhi, QDA sebenarnya merupakan metode yang lebih sesuai secara teori.

6 DAFTAR PUSTAKA

Cınar, I., & Koklu, M. (2018). Classification of Rice Varieties Using Artificial Intelligence Methods. International Journal of Intelligent Systems and Applications in Engineering.

Hair, J. F., Black, W. C., Babin, B. J., & Anderson, R. E. (2018). Multivariate data analysis (8th ed.). Cengage Learning.

Rencher, A. C. (2002). Methods of multivariate analysis. Wiley-Interscience.

Rice (Cammeo and Osmancik) [Dataset]. (2019). UCI Machine Learning Repository. https://doi.org/10.24432/C5MW4Z.