PRINCIPAL COMPONENT ANALYSIS MENGGUNAKAN R

Pada tutorial sebelumnya kita telah mencoba menjalankan PCA menggunakan software geospasial, kali ini kita akan mencoba menjalankan PCA menggunakan R. R merupakan salah satu bahasa pemrogramman yang dapat digunakan untuk mengolah data spasial. Teori tentang PCA sudah dijabarkan pada tutorial – tutorial sebelumnya. Dimana kita ketahui bahwa saluran citra yang saling berdekatan memiliki informasi yang hampir sama dan PCA mampu mengurangi dimensionalitas dan noise pada data. PCA mampu mentransformasikan data dari satu set saluran yang banyak dan saling berkorelasi menjadi beberapa saluran yang tidak berkorelasi sama sekali. Pertama Buka Rstudio, kemudian pilih pada menu File ‣ New File ‣ Rscript untuk membuat file R baru,

R-0101

Maka akan muncul jendela editor baru, seperti di bawah yang berguna bagi kita untuk menuliskan script yang akan kita buat.

R-0102

Untuk mengolah data raster kita memerlukan packages tertentu yang dapat dimunculkan melalui fungsi library(), packages yang kita butuhkan adalah rgdal, raster, dan caret.

R-0103

Data yang kita gunakan adalah data dari Multispec, yaitu citra Landsat 7 saluran 1-5 dan 7. Semua saluran tersebut distacking. Untuk memunculkan data citra yang sepeti itu kita membutuhkan RasterBrick atau RaterStack, dimana dalam script kita menuliskan brick(tempat penyimpanan data) seperti scirpt di bawah.

R-0104

Sebelum memulai yang lain kita akan memvisualisasikan salah satu citra tersebut, dengan menggunakan plotRGB untuk menampilkan citra komposit. Konsep membuat citra komposit sama seperti biasanya pada software – software yang lain. Dan untuk memperbaiki visualisasi kita menggunakan penajaman linier, dengan menambahkan stretch = “lin”.

R-0105

Berikut hasilnya, yaitu citra hitam putih karena saluran yang dimasukkan pada RGB adalah saluran 4 saja. Seperti script di atas.

R-0106

Selanjutnya kita akan membuat scattergram dari dua citra, dimana kita menggunakan fungsi plot(r[,c(3,4)]) 3 dan 4 di dalam kurung tersebut merupakan saluran 3 dan 4.

R-0107

Berikut adalah hasilnya scattergram saluran 4 dan 3 yang diambil dari 10000 piksel secara random.

R-0124

Kemudian jika kita ingin menampilkan histogram setiap citra kita dapat memanfaatkan fungsi hist() dan masukkan data kita dalam kurung tersebut.

R-0108

Berikut adalah histogram citra saluran 1-5 dan 7 Landsat 7.

R-0125

Jika kita ingin mengetahui bentuk scattergram antar saluran secara bersamaan dan ingin mengetahui histogramnya dan juga nilai korelasinya kita dapat menggunakan fungsi pairs()

R-0109

Berikut adalah hasilnya, scattergram antar citra, histogram, dan nilai korelasi.

R-0110

Saatnya kita masuk dalam proses menjalankan PCA. cukup mudah untuk menjalankan PCA, perlu diperhatikan dalam prosen pembuatan PCA, yaitu berdasarkan matrik korelasi atau matrik kovarians. Berikut adalah PCA menggunakan matrik korelasi, dengan menggunakan prcomp(sr, scale = TRUE)

R-0111

Dan pada jendela Console akan muncul nilai standart deviasi setiap saluran dan nilai eigenvector citra atau PC loading PCA yang dapat digunakan untuk merekontruksi citra PCA.

R-0112

Pada fungsi summary(), kita dapat mendapatkan informasi standart deviasi setiap citra, nilai eigenvalue atau prosentase varians dan prosentase komulatif varians PCA.

R-0113

Selanjutnya jika kita ingin menggunakan PCA dengan matrik kovarians maka kita membutuhkan prcomp(sr, scale = FALSE) , Dan pada jendela Console akan muncul nilai standart diviasi setiap saluran dan nilai eigenvector citra atau PC loading PCA yang dapat digunakan untuk merekontruksi citra PCA.

R-0114

Untuk melihat perbedaan dengan hasil PCA matrik korelasi, kita dapat melihat summary(). Kita dapat ketahui bahwa standart deviasinya berbeda, begitu juga nilai variansnya dimana PC1 matrik kovarians sebesar 79,76 % sedangkan matrik korelasi sebesar 72,29%.

R-0115

Jika kita ingin melihat informasi varians dalam bentuk histogram, maka kita menggunakan plot().

R-0116

Dan berikut adalah hasilnya.

R-0117

Selanjutnya kita ingin mengetahui bagaimana jika ditampilkan dalam bentuk citra, maka kita memerlukan formula untuk membuat saluran PC , berikut formulanya, dimana huruf a – f adalah koefisien PC loadingnya.

pc1 = a*band#1 + b*band#2 + c*band#3 + d*band#4 +e*band#5 +f*band#7,

Berikut adalah scritp untuk membuat citra PC1 menggunakan R. PC1 <- function(img, a, b, c, d, e, f). Di dalam script huruf a – f merupakan fungsi saluran citra. Dimana Pc di bawah merupakan formula untuk membuat PC1.

pc <- 0.31179321*b1+0.34919183*b2+0.51918171*b3-0.04917804*b4+0.46790391*b5+ 0.53846806*b7

script di atas merupakan fungsi umum, sehingga nilai dari huruf a – f dapat diganti dengan saluran apapun.

R-0118

Berikut adalah hasilnya.

R-0119

Untuk PC2 juga sama dengan di atas, berikut adalah formula scriptnya.

R-0120

Hasilnya citra PC2. .

R-0121

Citra yang ketiga adalah sebagai berikut scriptnya, dimana pada dasarnya semua sama tinggal kita mengubah sedikit disesuaikan dengan kebutuhan.

R-0122

Berikut hasil PC6.

R-0123

Warna untuk visualisasi adalah plot(pca2, col = rev(terrain.colors(30)), main = ‘PC2’) , penulis belum tahu cara visualisasi seperti pada software – software geospasial, jadi sementara masih menggunakan warna seadanya. Jika ada saran dan kritik untuk membenahi konten yang salah, sangat diharapkan. Ini masih belajar juga soalnya.

Sumber data : Multispec 

*** SEMOGA BERMANFAAT ***

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s