Emisi gas buang dari turbin gas merupakan salah satu sebuah sumber utama pada pencemaran udara, khususnya pada senyawa, seperti karbon manoksida (CO) dan nitrogen oksida (NOx). Gas-gas ini dapat menyebabkan dampak negatif pada lingkungan dan kesehatan manusia, seperti gangguan pernapasan dan peningkatan efek rumah kaca [1]. Oleh karena itu, diperlukan adanya suatu pendekatan secara analitis yang efektif untuk dapat memahami faktor-faktor yang dapat mempengaruhi emisi ini agar dapat dikendalikan secara lebih baik.
Salah satu kasus yang berhubungan dengan permasalahan ini adalah mengenai pembangkit listrik berbasis turbin gas di wilayah barat laut Turki, yang di mana sedang menghadapi tantangan dalam mengelola emisi gas buangnya seiring dengan meningkatnya sebuah permintaan energi. Studi menujukan bahwa emisi CO dan NOx yang dihasilkan sangat dipengaruhi oleh faktor lingkungan, seperti suhu sekitar, tekanan atmosfer, serta tingkat kelembapan, yang di mana hal ini berdampak pada efisiensi pembakaran dalam turbin [2]. Selain itu, parameter operasional seperti suhu masuk turbin dan tekanan pelepasan kompesor juga berperan dalam fluktuasi emisi gas buang, sehingga memahami keterkaitan antar faktor ini menjadi krusial dalam upaya mitigasi pencemaran udara [3]. Sehingga studi terhadap pembangkit ini dapat menjadi hal penting untuk dapat mengidentifikasi variavel utama yang dapat dikendalikan guna dalam mengurangi pada dampak lingkungan yang ditimbulkan serta mendukung dalam kebijakan energi yang lebih berkelanjutan.
Berdasarkan penjelasan pada latar belakang, penelitian ini merumuskan beberapa pernyataan utama : 1.) Bagaimana penerapan PCA dan FA dalam mengidentifikasi variable-variabel yang di mana paling berpengaruh terhadap emisi CO dan NOx pada turbin gas? 2.) Faktor-faktor dalam varibael apa saja yang paling dominan dalam menentukan tingkat emisi dari turbin gas berdasarkan hasil analisis PCA dan FA?
Penelitian ini bertujuan untuk : 1.) Menerapkan metode PCA dan FA untuk menganalisis data emisi CO dan NOx dari turbin gas. 2.) Mengidentifikasi variable dominan yang berkontribusi terhadap emisi CO dan NOx.
Penelitian ini menggunakan dataset “Gas Turbine CO and NOx Emission DataSet” yang diperoleh melalui website UCI Machine Learning Repository. Dataset ini berisikan 36.733 data dengan memiliki 11 variabel sensor yang dikumpulkan dari turbin gas. Data ini dikumpulkan dalam rentang waktu 01 Januari 2011 hingga 31 Desember 2015, di mana setiap tahunnya dibedakan secara pada file dataset csvnya. Akan tetapi, disini dataset yang digunakan adalah dataset pada tahun 2015.
Dataset ini terdiri atas 11 variabel atau feture sensor, berikut variable atau feture-feture tersebut : 1. AT = Suhu udara luar di sekitar turbin gas (°C) 2. AP = Tekanan atmosfer di sekitar turbin gas (mbar) 3. AH = Tingkat kelembapan udara di sekitar turbin gas (%) 4. AFDP = Selisih tekanan antara sisi masuk dan keluar filter udara (mbar) 5. GTEP = Tekanan gas buang di dalam turbin gas (mbar) 6. TIT = Suhu udara yang masuk ke dalam turbin gas (°C) 7. TAT = Suhu udara setelah melewati turbin gas (°C) 8. CDP = Tekanan udara di sisi keluar kompresor (mbar) 9. TEY = Total energi yang dihasilkan oleh turbin gas (MWH) 10. CO = Konsentrasi gas karbon monoksida yang dihasilkan oleh turbin gas (mg/m3) 11. NOx = Konsentrasi gas nitrogen oksida yang dihasilkan oleh turbin gas (mg/m3)
data=read.csv("C:/FILE ALIF KULIAH/SEMESTER 4/Analisis Multivariat/dataset.csv")
head(data)
## AT AP AH AFDP GTEP TIT TAT TEY CDP CO
## 1 1.95320 1020.1 84.985 2.5304 20.116 1048.7 544.92 116.27 10.799 6.544112
## 2 1.21910 1020.1 87.523 2.3937 18.584 1045.5 548.50 109.18 10.347 6.468400
## 3 0.94915 1022.2 78.335 2.7789 22.264 1068.8 549.95 125.88 11.256 3.633500
## 4 1.00750 1021.7 76.942 2.8170 23.358 1075.2 549.63 132.21 11.702 3.197200
## 5 1.28580 1021.6 76.732 2.8377 23.483 1076.2 549.68 133.58 11.737 2.383300
## 6 1.83190 1021.7 76.411 2.8410 23.495 1076.4 549.92 133.58 11.829 2.081200
## NOX
## 1 84.13462
## 2 84.13462
## 3 84.13462
## 4 84.13462
## 5 82.51500
## 6 81.19300
#Pre-processing
sum(is.na(data))
## [1] 0
p <- ncol(data)
Karena value dalam setiap variabelnya tidak ada yang mengandung missing value jadi dataset tersebut siap untuk digunakan dalam analisis data
Fungsi summary() digunakan untuk menghitung statitika deskriptif dengan argumen data yang ingin dihitung (Data). Statistika deskriptif yang dimaksud adalah seperti nilai mean, median, minimum, maksimum, kuartil 1, dan kuartil 2, dan lain sebagainya.
summary(data)
## AT AP AH AFDP
## Min. :-6.235 Min. : 996.7 Min. :29.14 Min. :2.369
## 1st Qu.:11.073 1st Qu.:1009.7 1st Qu.:59.45 1st Qu.:3.117
## Median :17.456 Median :1014.0 Median :70.95 Median :3.538
## Mean :17.225 Mean :1014.5 Mean :68.65 Mean :3.599
## 3rd Qu.:23.685 3rd Qu.:1018.3 3rd Qu.:79.65 3rd Qu.:4.195
## Max. :37.103 Max. :1031.2 Max. :96.67 Max. :5.239
## GTEP TIT TAT TEY
## Min. :17.70 Min. :1026 Min. :536.8 Min. :100.0
## 1st Qu.:23.15 1st Qu.:1070 1st Qu.:544.7 1st Qu.:126.3
## Median :25.33 Median :1080 Median :549.7 Median :131.6
## Mean :26.13 Mean :1079 Mean :547.0 Mean :134.0
## 3rd Qu.:30.02 3rd Qu.:1100 3rd Qu.:550.0 3rd Qu.:147.2
## Max. :40.33 Max. :1100 Max. :550.6 Max. :178.5
## CDP CO NOX
## Min. : 9.871 Min. :0.2128 Min. :33.36
## 1st Qu.:11.466 1st Qu.:1.8082 1st Qu.:52.40
## Median :11.933 Median :2.5334 Median :56.84
## Mean :12.097 Mean :2.9437 Mean :59.47
## 3rd Qu.:13.148 3rd Qu.:3.7026 3rd Qu.:65.09
## Max. :15.159 Max. :6.5441 Max. :84.13
# Fungsi untuk mencari modus
modus <- function(x) {
uniqx <- unique(x)
uniqx[which.max(tabulate(match(x, uniqx)))]
}
numeric_vars <- sapply(data, is.numeric)
data_numeric <- data[, numeric_vars]
# Menghitung statistik deskriptif
statistik <- data.frame(
Variabel = colnames(data_numeric),
Mean = sapply(data_numeric, function(x) mean(x, na.rm=TRUE)),
Median = sapply(data_numeric, function(x) median(x, na.rm=TRUE)),
Modus = sapply(data_numeric, modus),
Std_Deviasi = sapply(data_numeric, function(x) sd(x, na.rm=TRUE)),
Varians = sapply(data_numeric, function(x) var(x, na.rm=TRUE)),
Min = sapply(data_numeric, function(x) min(x, na.rm=TRUE)),
Max = sapply(data_numeric, function(x) max(x, na.rm=TRUE)),
IQR = sapply(data_numeric, function(x) IQR(x, na.rm=TRUE))
)
print(statistik)
## Variabel Mean Median Modus Std_Deviasi Varians
## AT AT 17.225259 17.4565 10.562000 8.0957833 65.5417078
## AP AP 1014.488705 1014.0000 1031.237500 6.7236479 45.2074411
## AH AH 68.648754 70.9520 64.955000 13.5371242 183.2537308
## AFDP AFDP 3.598909 3.5385 4.331200 0.6102258 0.3723755
## GTEP GTEP 26.130096 25.3310 23.495000 4.4735664 20.0127959
## TIT TIT 1078.992402 1080.3000 1100.000000 19.7127437 388.5922638
## TAT TAT 547.034239 549.7200 536.823750 4.3965531 19.3296788
## TEY TEY 133.993247 131.6000 130.710000 16.1788381 261.7548033
## CDP CDP 12.097025 11.9330 11.985000 1.1366005 1.2918608
## CO CO 2.943662 2.5334 6.544112 1.5152896 2.2961026
## NOX NOX 59.473682 56.8385 84.134625 9.7635379 95.3266715
## Min Max IQR
## AT -6.23480 37.103000 12.611500
## AP 996.73750 1031.237500 8.625000
## AH 29.13750 96.666000 20.206500
## AFDP 2.36880 5.239500 1.077525
## GTEP 17.69800 40.325125 6.871250
## TIT 1026.40000 1100.400000 29.400000
## TAT 536.82375 550.590000 5.282500
## TEY 100.02000 178.517500 20.905000
## CDP 9.87080 15.159000 1.682250
## CO 0.21280 6.544112 1.894375
## NOX 33.35763 84.134625 12.694250
library(ggplot2)
library(reshape2)
data_long <- melt(data_numeric)
## No id variables; using all as measure variables
ggplot(data_long, aes(x = value)) +
geom_histogram(bins = 10, fill="lightblue", color="black") +
facet_wrap(~variable, scales = "free") + # Memisahkan setiap variabel dalam grid
theme_minimal() +
labs(title = "Histogram Semua Variabel")
Bentuk visualisasi plot disini adalah menggunakan bentuk histogram, yang
di mana untuk menampilkan distribusi data dari setiap variable
numeriknya dalam dataset. Visualisasi histogram ini berfungsi untuk
menggambarkan bagaimana data tersebar dalam suatu rentang nilai, dengan
sumbu X itu mewakili nilai variable dan sumbu Y menunjukkan jumlah
kemunculan (Frekuensi) dari nilai pada setiap variable tersebut.
library(psych)
## Warning: package 'psych' was built under R version 4.4.3
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
r <- cor(data)
hasil_kmo<-KMO(r)
nilai_kmo<-hasil_kmo$MSAi
nilai_kmo
## AT AP AH AFDP GTEP TIT TAT TEY
## 0.4134174 0.3335812 0.3887295 0.9411373 0.9698032 0.7503231 0.6413450 0.7236827
## CDP CO NOX
## 0.8141777 0.9409271 0.6852416
Overal KMO = 0.75 menunjukan data cukup baik untuk dapat dianalisis faktor. Untuk variabel dengan nilai MSA < 0.5, seperti AT, AP, dan AH dapat dihilangkan.
# Pilih hanya variabel dengan MSA >= 0.5
selected_vars <- names(nilai_kmo[nilai_kmo >= 0.5])
# Filter data hanya dengan variabel yang memiliki MSA >= 0.5
data_filtered <- data[, selected_vars]
# Hitung ulang KMO setelah menghapus variabel
r_filtered <- cor(data_filtered)
kmo_filtered <- KMO(r_filtered)
print(kmo_filtered)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = r_filtered)
## Overall MSA = 0.82
## MSA for each item =
## AFDP GTEP TIT TAT TEY CDP CO NOX
## 0.85 0.97 0.79 0.58 0.82 0.77 0.93 0.80
Terdapat perubahan setelah dihilangkan variabel dengan nilai msa<50, yakni Overal KMO = 0.82 menunjukan data sangat baik untuk dapat dianalisis faktor dan tidak ada variabel Untuk variabel dengan nilai MSA < 0.5.
B. Bartlett Test
bartlett.test(data)
##
## Bartlett test of homogeneity of variances
##
## data: data
## Bartlett's K-squared = 111742, df = 10, p-value < 2.2e-16
Karena p-value < 0.05, maka H0 ditolak Variabel dalam dataset memiliki korelasi yang cukup untuk dilakukan analisis faktor atau PCA.
-scale data
scale_data = scale(data)
r = cov(scale_data)
-Menghitung eigenvalue dan eigenvector
pc <- eigen(r)
pc$values
## [1] 6.180709208 2.056867953 1.011018425 0.719464153 0.579635328 0.199201823
## [7] 0.135952624 0.078390996 0.033296536 0.004090129 0.001372825
pc$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -0.16712137 0.56902909 -0.142023980 -0.14086791 -0.31171722 0.55445830
## [2,] 0.04375958 -0.47927717 -0.106535448 -0.82501474 0.07748179 0.21525539
## [3,] 0.12414841 -0.21567077 0.871116733 0.13888429 -0.06520992 0.33639068
## [4,] -0.38762668 0.01684916 0.043215474 -0.03356058 -0.12261201 0.40280063
## [5,] -0.36967463 -0.14866696 -0.114242867 0.19109487 0.05996088 -0.11373293
## [6,] -0.38734886 -0.02162098 0.028957245 0.03074139 0.29939216 0.16046210
## [7,] 0.22412429 0.40603929 0.105782508 -0.14326936 0.71997032 0.11611505
## [8,] -0.37889121 -0.20067285 0.024183625 0.08701328 0.15558242 -0.04179515
## [9,] -0.38888110 -0.16350016 -0.001165083 0.05837936 0.03725775 0.03531159
## [10,] 0.33829921 -0.19255388 -0.189670384 0.13948042 -0.36545451 0.18065316
## [11,] 0.24150506 -0.32891549 -0.382264954 0.43665674 0.32680827 0.53201390
## [,7] [,8] [,9] [,10] [,11]
## [1,] 0.022698428 0.26032519 -0.33310124 0.108783214 0.112229611
## [2,] -0.009809514 0.14913256 -0.03625923 0.006679375 0.018573439
## [3,] -0.016907092 0.18519367 -0.08595001 0.021404920 0.010046992
## [4,] -0.007874530 -0.32455834 0.75011993 -0.023784657 0.023237539
## [5,] -0.357561135 0.77143081 0.22761842 -0.018948032 0.003872550
## [6,] -0.176386242 -0.19121772 -0.33888667 -0.718464936 -0.183340445
## [7,] -0.386042865 -0.01819149 0.14512550 0.225327562 -0.012265253
## [8,] -0.118656717 -0.23234067 -0.25671040 0.291019140 0.750605758
## [9,] -0.066863315 -0.17163521 -0.24481765 0.577172016 -0.623700301
## [10,] -0.758886579 -0.21630899 -0.06224409 -0.015106565 -0.007313452
## [11,] 0.310790239 0.09013547 -0.01534750 0.041550351 0.013225330
-Menghitung proporsi varians dan kumulatif
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
sumvar <- sum(pc$values)
propvar <- sapply(pc$values, function(x) x/sumvar)*100
cumvar <- data.frame(cbind(pc$values, propvar)) %>% mutate(cum = cumsum(propvar))
colnames(cumvar)[1] <- "value"
rownames(cumvar) <- paste0("PC",c(1:p))
print(cumvar)
## value propvar cum
## PC1 6.180709208 56.18826553 56.18827
## PC2 2.056867953 18.69879958 74.88707
## PC3 1.011018425 9.19107659 84.07814
## PC4 0.719464153 6.54058321 90.61872
## PC5 0.579635328 5.26941207 95.88814
## PC6 0.199201823 1.81092566 97.69906
## PC7 0.135952624 1.23593294 98.93500
## PC8 0.078390996 0.71264542 99.64764
## PC9 0.033296536 0.30269578 99.95034
## PC10 0.004090129 0.03718299 99.98752
## PC11 0.001372825 0.01248023 100.00000
Berdasarkan data diatas menunjukan bahwa PC1 hingga PC3 telah memiliki eigen value>1 dan ketiga PC tersebut telah menjelaskan 84.08% varians, yang di mana sebagian besar informasi dalam data telah tercapture.
-hasilPCA
scores <- as.matrix(scale_data) %*% pc$vectors
head(scores)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 4.437767 -2.607110 -0.228573117 0.8406762 -0.3540855 0.46329856 0.06793309
## [2,] 5.238792 -2.155287 0.057845950 0.6315970 0.1418030 0.48855315 0.01771319
## [3,] 2.906048 -2.158528 -0.180647672 0.2850055 1.6580134 0.34476471 0.63428102
## [4,] 2.233894 -2.255698 -0.223309440 0.4128864 1.8892397 0.28460713 0.66565910
## [5,] 1.919163 -2.089765 -0.071874223 0.2841036 2.0556791 0.12745539 0.98720627
## [6,] 1.779190 -1.962066 -0.008220605 0.1696534 2.1108134 0.06472699 1.06893164
## [,8] [,9] [,10] [,11]
## [1,] -0.145095000 -0.2999631 -0.019872803 -0.036296103
## [2,] -0.128345496 -0.1457108 -0.070104539 -0.111884956
## [3,] 0.009148129 -0.1238602 -0.101418120 -0.029879619
## [4,] -0.007463215 -0.3113915 -0.014418759 -0.036676287
## [5,] 0.073306643 -0.2980026 -0.002693276 0.004294556
## [6,] 0.103102386 -0.3151509 0.053171773 -0.041307534
-prcomp
PCA.mod <- prcomp(scale_data)
summary(PCA.mod)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6 PC7
## Standard deviation 2.4861 1.4342 1.00549 0.84821 0.76134 0.44632 0.36872
## Proportion of Variance 0.5619 0.1870 0.09191 0.06541 0.05269 0.01811 0.01236
## Cumulative Proportion 0.5619 0.7489 0.84078 0.90619 0.95888 0.97699 0.98935
## PC8 PC9 PC10 PC11
## Standard deviation 0.27998 0.18247 0.06395 0.03705
## Proportion of Variance 0.00713 0.00303 0.00037 0.00012
## Cumulative Proportion 0.99648 0.99950 0.99988 1.00000
PCA.mod$rotation
## PC1 PC2 PC3 PC4 PC5 PC6
## AT 0.16712137 -0.56902909 -0.142023980 0.14086791 0.31171722 0.55445830
## AP -0.04375958 0.47927717 -0.106535448 0.82501474 -0.07748179 0.21525539
## AH -0.12414841 0.21567077 0.871116733 -0.13888429 0.06520992 0.33639068
## AFDP 0.38762668 -0.01684916 0.043215474 0.03356058 0.12261201 0.40280063
## GTEP 0.36967463 0.14866696 -0.114242867 -0.19109487 -0.05996088 -0.11373293
## TIT 0.38734886 0.02162098 0.028957245 -0.03074139 -0.29939216 0.16046210
## TAT -0.22412429 -0.40603929 0.105782508 0.14326936 -0.71997032 0.11611505
## TEY 0.37889121 0.20067285 0.024183625 -0.08701328 -0.15558242 -0.04179515
## CDP 0.38888110 0.16350016 -0.001165083 -0.05837936 -0.03725775 0.03531159
## CO -0.33829921 0.19255388 -0.189670384 -0.13948042 0.36545451 0.18065316
## NOX -0.24150506 0.32891549 -0.382264954 -0.43665674 -0.32680827 0.53201390
## PC7 PC8 PC9 PC10 PC11
## AT 0.022698428 -0.26032519 0.33310124 0.108783214 -0.112229611
## AP -0.009809514 -0.14913256 0.03625923 0.006679375 -0.018573439
## AH -0.016907092 -0.18519367 0.08595001 0.021404920 -0.010046992
## AFDP -0.007874530 0.32455834 -0.75011993 -0.023784657 -0.023237539
## GTEP -0.357561135 -0.77143081 -0.22761842 -0.018948032 -0.003872550
## TIT -0.176386242 0.19121772 0.33888667 -0.718464936 0.183340445
## TAT -0.386042865 0.01819149 -0.14512550 0.225327562 0.012265253
## TEY -0.118656717 0.23234067 0.25671040 0.291019140 -0.750605758
## CDP -0.066863315 0.17163521 0.24481765 0.577172016 0.623700301
## CO -0.758886579 0.21630899 0.06224409 -0.015106565 0.007313452
## NOX 0.310790239 -0.09013547 0.01534750 0.041550351 -0.013225330
head(PCA.mod$x)
## PC1 PC2 PC3 PC4 PC5 PC6
## [1,] -4.437767 2.607110 -0.228573117 -0.8406762 0.3540855 0.46329856
## [2,] -5.238792 2.155287 0.057845950 -0.6315970 -0.1418030 0.48855315
## [3,] -2.906048 2.158528 -0.180647672 -0.2850055 -1.6580134 0.34476471
## [4,] -2.233894 2.255698 -0.223309440 -0.4128864 -1.8892397 0.28460713
## [5,] -1.919163 2.089765 -0.071874223 -0.2841036 -2.0556791 0.12745539
## [6,] -1.779190 1.962066 -0.008220605 -0.1696534 -2.1108134 0.06472699
## PC7 PC8 PC9 PC10 PC11
## [1,] 0.06793309 0.145095000 0.2999631 -0.019872803 0.036296103
## [2,] 0.01771319 0.128345496 0.1457108 -0.070104539 0.111884956
## [3,] 0.63428102 -0.009148129 0.1238602 -0.101418120 0.029879619
## [4,] 0.66565910 0.007463215 0.3113915 -0.014418759 0.036676287
## [5,] 0.98720627 -0.073306643 0.2980026 -0.002693276 -0.004294556
## [6,] 1.06893164 -0.103102386 0.3151509 0.053171773 0.041307534
Berdasarkan hasil PCA.mod$rotation menunjukan bahwa PC1 memiliki loading besar yang terdapat pada AFDP, GTEP, TIT,TEY,dan CDP, sehingga diinterpretasikan sebagai faktor terkait efisiensi turbin gas. Untuk pada PC2 didominasi oleh AP, AT, dan TAT sehingga hal ini mungkin terkait dengan tekanan ari suhu dalam sistem. Pada PC3 lebih dipengaruhi oleh AH, yang di mana dapat dikaitkan dengan pola pembakaran atau aliran udara.
-menampilkan visualisasi pca_result
library(FactoMineR)
## Warning: package 'FactoMineR' was built under R version 4.4.3
pca_result <- PCA(scale_data,
scale.unit = TRUE,
graph = FALSE,
ncp=p)
#Visualisasi
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.4.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
# membuat scree plot
fviz_eig(pca_result,
addlabels = TRUE,
ncp = p,
barfill = "skyblue",
barcolor = "darkblue",
linecolor = "red")
Elbow point tampak berada pada PC3, sehingga hal ini tiga komponen utama
tersebut cukup untuk dianalisis lebih lanjut. Keadaan setelah PC3
didapatkan kontribusi yang semakin kecil, menunjukan bahwa dimensi
tambahan kurang signifikan.
-Hasil Visualisasi PCA-Biplot
#Biplot
fviz_pca_biplot(pca_result,
geom.ind = "point",
addEllipses = TRUE,
repel = TRUE
)
Biplot di atas menggambarkan mengenai hubungan antara variabel dan
distribusi data secara dalam dua dimensi utama hasil Principal Component
Analysis (PCA). Dimensi pertama (Dim1) menjelaskan sebesar 56.2%
varians, sedangkan Dimensi kedua (Dim2) mencakup sebesar 18.7% varians,
sehingga secara keseluruhan kedua komponen ini dapat menangkap sebagian
besar informasi pada dataset. Panjang vektor ini menunjukkan kontribusi
pada masing-masing variabel terhadap komponen utama, di mana variabel
seperti AFDP, TIT, CDP, TEY, dan GTEP memiliki pengaruh besar terhadap
Dim1 yang berkaitan dengan efisiensi turbin gas. Sementara itu, variabel
seperti AP, AT, dan NOX lebih terkait dengan Dim2 yang merepresentasikan
faktor lingkungan seperti tekanan dan emisi
contrib_circle <- fviz_pca_var(pca_result, col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE) +
ggtitle("Kontribusi Variabel")
plot(contrib_circle)
Biplot di atas menggambarkan mengenai hubungan antara variabel dan
distribusi data secara dalam dua dimensi utama hasil Principal Component
Analysis (PCA). Dimensi pertama (Dim1) menjelaskan sebesar 56.2%
varians, sedangkan Dimensi kedua (Dim2) mencakup sebesar 18.7% varians,
sehingga secara keseluruhan kedua komponen ini dapat menangkap sebagian
besar informasi pada dataset. Panjang vektor ini menunjukkan kontribusi
pada masing-masing variabel terhadap komponen utama, di mana variabel
seperti AFDP, TIT, CDP, TEY, dan GTEP memiliki pengaruh besar terhadap
Dim1 yang berkaitan dengan efisiensi turbin gas. Sementara itu, variabel
seperti AP, AT, dan NOX lebih terkait dengan Dim2 yang merepresentasikan
faktor lingkungan seperti tekanan dan emisi. Warna tersebut menunjukan
besar kontribusi yang diberikan.
-contribution
contrib_v_PC1 <- fviz_contrib(pca_result, choice = "var", axes = 1, top = 5) + ggtitle("PC1")
contrib_v_PC2 <- fviz_contrib(pca_result, choice = "var", axes = 2, top = 5) + ggtitle("PC2")
contrib_v_PC3 <- fviz_contrib(pca_result, choice = "var", axes = 3, top = 5) + ggtitle("PC3")
plot(contrib_v_PC1)
plot(contrib_v_PC2)
plot(contrib_v_PC3)
Pada PC1, variabel yang memiliki kontribusi terbesar adalah CDP, AFDP,
TIT, TEY, dan GTEP, masing-masing mempunyai kontribusi yang hampir
setara, sekitar 15%. Hal ini menunjukkan apabila PC1 merepresentasikan
variabilitas yang berkaitan dengan efisiensi turbin gas, terutama dalam
hal tekanan dan suhu operasi, serta faktor yang terkait pada daya
output.
Sementara itu, pada PC2, variabel dengan kontribusi terbesar adalah AT, AP, dan TAT, dengan AT sebagai faktor dominan dengan kontribusi di atas 30%. Hal ini mengindikasikan bahwa PC2 berkaitan dengan faktor tekanan dan suhu lingkungan, yang di mana dapat memengaruhi kinerja turbin gas dalam kondisi operasional yang secara berbeda.
Pada PC3, variabel yang memiliki kontribusi terbesar adalah AH, dengan kontribusi yang sangat dominan di atas 70%, diikuti oleh NOX dengan kontribusi sekitar 15%, di mana hal ini menunjukkan bahwa PC3 terutama berkaitan dengan faktor kelembaban udara (AH), yang dapat memengaruhi pada pola pembakaran dan emisi gas buang seperti NOx. Variabel lain seperti CO, AT, dan GTEP memiliki kontribusi yang di mana lebih kecil, hal ini menunjukkan bahwa pengaruhnya terhadap komponen utama ini tidak signifikan.
-Hitung matriks kovarians
varcov <- cov(scale_data)
pc <- eigen(varcov)
pc$values
## [1] 6.180709208 2.056867953 1.011018425 0.719464153 0.579635328 0.199201823
## [7] 0.135952624 0.078390996 0.033296536 0.004090129 0.001372825
pc$vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -0.16712137 0.56902909 -0.142023980 -0.14086791 -0.31171722 0.55445830
## [2,] 0.04375958 -0.47927717 -0.106535448 -0.82501474 0.07748179 0.21525539
## [3,] 0.12414841 -0.21567077 0.871116733 0.13888429 -0.06520992 0.33639068
## [4,] -0.38762668 0.01684916 0.043215474 -0.03356058 -0.12261201 0.40280063
## [5,] -0.36967463 -0.14866696 -0.114242867 0.19109487 0.05996088 -0.11373293
## [6,] -0.38734886 -0.02162098 0.028957245 0.03074139 0.29939216 0.16046210
## [7,] 0.22412429 0.40603929 0.105782508 -0.14326936 0.71997032 0.11611505
## [8,] -0.37889121 -0.20067285 0.024183625 0.08701328 0.15558242 -0.04179515
## [9,] -0.38888110 -0.16350016 -0.001165083 0.05837936 0.03725775 0.03531159
## [10,] 0.33829921 -0.19255388 -0.189670384 0.13948042 -0.36545451 0.18065316
## [11,] 0.24150506 -0.32891549 -0.382264954 0.43665674 0.32680827 0.53201390
## [,7] [,8] [,9] [,10] [,11]
## [1,] 0.022698428 0.26032519 -0.33310124 0.108783214 0.112229611
## [2,] -0.009809514 0.14913256 -0.03625923 0.006679375 0.018573439
## [3,] -0.016907092 0.18519367 -0.08595001 0.021404920 0.010046992
## [4,] -0.007874530 -0.32455834 0.75011993 -0.023784657 0.023237539
## [5,] -0.357561135 0.77143081 0.22761842 -0.018948032 0.003872550
## [6,] -0.176386242 -0.19121772 -0.33888667 -0.718464936 -0.183340445
## [7,] -0.386042865 -0.01819149 0.14512550 0.225327562 -0.012265253
## [8,] -0.118656717 -0.23234067 -0.25671040 0.291019140 0.750605758
## [9,] -0.066863315 -0.17163521 -0.24481765 0.577172016 -0.623700301
## [10,] -0.758886579 -0.21630899 -0.06224409 -0.015106565 -0.007313452
## [11,] 0.310790239 0.09013547 -0.01534750 0.041550351 0.013225330
-Menghitung Factorloading atau eigenvector loading
L1 = sqrt(pc$values[1])*pc$vectors[,1]
L2 = sqrt(pc$values[2])*pc$vectors[,2]
L3 = sqrt(pc$values[3])*pc$vectors[,3]
L = cbind(L1,L2,L3)
L
## L1 L2 L3
## [1,] -0.4154810 0.81608928 -0.142804276
## [2,] 0.1087908 -0.68736900 -0.107120767
## [3,] 0.3086458 -0.30931037 0.875902753
## [4,] -0.9636799 0.02416470 0.043452905
## [5,] -0.9190493 -0.21321495 -0.114870531
## [6,] -0.9629893 -0.03100835 0.029116339
## [7,] 0.5571961 0.58233282 0.106363689
## [8,] -0.9419627 -0.28780069 0.024316493
## [9,] -0.9667986 -0.23448841 -0.001171485
## [10,] 0.8410467 -0.27615663 -0.190712456
## [11,] 0.6004065 -0.47172352 -0.384365163
library(psych)
fa <- fa(r = scale_data,
covar = TRUE,
nfactors = 3,
rotate = "varimax")
## Warning in log(det(m.inv.r)): NaNs produced
## Warning in fa.stats(r = r, f = f, phi = phi, n.obs = n.obs, np.obs = np.obs, :
## The estimated weights for the factor scores are probably incorrect. Try a
## different factor score estimation method.
#summary(fa)
load <- fa$loadings
plot(load[,c(1,3)],type="n") # set up plot
text(load[,c(1,3)],labels=names(data),cex=.7)
fa.diagram(load)
Penjelasan Visualisasi tersebut (Plot Faktor MR1 dengan MR3) Gambar
pertama menunjukkan plot faktor berdasarkan analisis faktor, dengan MR1
pada sumbu horizontal dan MR3 pada sumbu vertikalnya. Variabel TEY, CDP,
GTEP, TIT, AFDP terletak di sisi kanan, menandakan bahwa kontribusi
besar terhadap faktor MR1. Sementara itu, CO, TAT, dan NOX itu lebih
tersebar di sisi kiri, yang di mana hal ini menunjukkan hubungan yang
lebih lemah terhadap MR1. Variabel AH memiliki kontribusi besar pada MR3
dengan nilai yang negatif, yang menunjukkan perbedaan pola dibandingkan
variabel lain.
Penjelasan pada visualisasi ini (Diagram Faktor) merupakan diagram faktor kedua yang menggambarkan hubungan antara variabel dengan faktor utama (MR1, MR2, MR3). MR1 memiliki loading tinggi pada variabel TEY, CDP, GTEP, TIT, dan AFDP, yang berkaitan dengan performa pada turbin gas. MR2 lebih dikaitkan dengan variabel CO dan TAT, yang mungkin menunjukkan hubungan dengan emisi gas buang. MR3 memiliki loading negatif pada AH, yang menunjukkan bahwa faktor ini lebih terkait dengan pola aliran udara atau pembakaran. Hubungan antar faktor ditunjukkan dengan garis solid untuk korelasi kuat dan terdapat garis putus-putus untuk meunjukan hasil korelasi lebih lemah.
Sehingga kesimpulannya adalah bahwa penerapan dengan teknik Principal Componet Analysis(PCA) dan Factor Analysis (FA) pada dataset tersebut untuk mengidentifikasi struktur data yang sifatnya mendasari serta menentukan variabel dominan yang dapat berkontribusi terhadap emisi CO dan NOx pada turbin gas. Metode PCA ini digunakan untuk mereduksi dimensi suatu data dengan cara mempertahankaninformasi dengan sebanyak mungkin, sementara pada FA digunakan untuk membantu dalam pengelompokkan variabel di mana berdasarkan atas korelasi laten yang mendasari hubungan antar variabelnya, dan ternyata penerapan antar kedua teknik ini tentunya efektif dan berhasil pada datasetnya.
[1] E. A. Saputro, S. A. Susanto, dan A. Cholik, “Study Pustaka Penurunan Parameter NOx dan CO Pada Emisi Gas Buang B30,” Atmosphere, vol. 2, no. 1, pp. 31–35, April 2021.
[2] Akbar Ramadhan Firman Al Abrari dan Listiyono, “Analisa Pengaruh Katalis Terhadap Gas Buang Pada Kendaraan Roda 2,” Venus: Jurnal Publikasi Rumpun Ilmu Teknik, vol. 2, no. 4, pp. 1–13, Agustus 2024.
[3] D. D. Sumbaga dan S. Shofiah, “Pengaruh Blower Terhadap Hasil Uji Kadar Emisi Gas Buang (CO, HC, NOx, Asap) Berbasis Mikrokontroler,” JT: Jurnal Teknik, vol. 12, no. 2, pp. 17–23, September 2023.