1. Kütüphanelerin Yüklenmesi

library(readr)
library(tidyverse)
library(tidyr)
library(dendextend)
library(knitr)
library(gridExtra)
library(ggplot2)
library(VIM)
library(corrplot)
library(car)
library(ResourceSelection)
library(glmulti)
library(tree)
library(randomForest)
library(ISLR)
library(class)
library(pROC)
library(gtools)
library(tidyverse)
library(GGally)
library(superml)
library(caret)
library(Boruta)
library("stringr")
library("tidyr")
library("readr")
library("here")
library("skimr")
library("janitor")
library("lubridate")
library(gridExtra)
library(ggplot2)
library(VIM)
library(corrplot)
library(car)
library(ResourceSelection)
library(glmulti)
library(tree)
library(randomForest)
library(ISLR)
library(class)
library(pROC)
library(gtools)
library(tidyverse)
library("scales")
library("ggcorrplot")
library("ggrepel")
library("forcats")
library("corrgram")
library(tidymodels)
library(baguette)
library(discrim)
library(bonsai)
library(ResourceSelection)
library(kableExtra)
library(broom)
library(dplyr)
library(caret)
library(tidyr)
library(corrplot)
library("Hmisc")
library(psych)
library(factoextra)
library("DescTools")
library(ResourceSelection)
library(haven)
library(effectsize)
library(rstatix)
library(ggpubr)
library(biotools)
library(PerformanceAnalytics)
library(heplots)
library(gplots)
clean_df <- read.csv('/home/ilke/Downloads/clean_heart.csv')

Verideki Cholesterol, MaxHR, Age, Oldpeak, RestingBP değişkenleri kullanılarak analiz gerçekleştirildi.

TBA, ancak orijinal değişkenler birbirleri ile yeterince korelasyon gösteriyorsa anlamlı olur. Korelasyon matrislerine bakıldı ve 0.30’dan daha az ilişkiye sahip değişkenler var. Barlett’s testi sonuçlarına göre çıkarılıp çıkarılmayacağına karar verilecek.

selected_columns <- clean_df[, c("Age","RestingBP","Cholesterol","MaxHR","Oldpeak")]

chart.Correlation(selected_columns, histogram=TRUE, pch=19)

correlation_matrix <- cor(selected_columns)
corrplot(correlation_matrix, method = "circle")

rcorr(as.matrix(selected_columns),type="pearson")
##               Age RestingBP Cholesterol MaxHR Oldpeak
## Age          1.00      0.27        0.07 -0.40    0.28
## RestingBP    0.27      1.00        0.09 -0.13    0.19
## Cholesterol  0.07      0.09        1.00  0.00    0.07
## MaxHR       -0.40     -0.13        0.00  1.00   -0.28
## Oldpeak      0.28      0.19        0.07 -0.28    1.00
## 
## n= 702 
## 
## 
## P
##             Age    RestingBP Cholesterol MaxHR  Oldpeak
## Age                0.0000    0.0656      0.0000 0.0000 
## RestingBP   0.0000           0.0176      0.0006 0.0000 
## Cholesterol 0.0656 0.0176                0.9528 0.0576 
## MaxHR       0.0000 0.0006    0.9528             0.0000 
## Oldpeak     0.0000 0.0000    0.0576      0.0000

KMO testi sonucuna (.65) göre örneklem uygunluğu orta düzeydedir. Bartlett’s Testi sonucuna göre ise (p<.001) değişkenler arasındaki korelasyonlar Temel Bileşenler Analizi yapabilmek için uygun düzeydedir. Bu yüzden hiçbir değişken çıkarılmadı.

#PCA UYGULANABİLİRLİGİ (KMO - ANTİ-IMAGE - BARTLETT TEST)
library(psych)
KMO(clean_df[, c("Age","RestingBP","Cholesterol","MaxHR","Oldpeak")])
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = clean_df[, c("Age", "RestingBP", "Cholesterol", "MaxHR", 
##     "Oldpeak")])
## Overall MSA =  0.65
## MSA for each item = 
##         Age   RestingBP Cholesterol       MaxHR     Oldpeak 
##        0.63        0.68        0.62        0.62        0.72
#Bartlett Küresellik Testi(Bartlett's Test of Spherecity) 
cortest.bartlett(cor(clean_df[, c("Age","RestingBP","Cholesterol","MaxHR","Oldpeak")]),nrow(clean_df)) #Bartlett test 
## $chisq
## [1] 281.5001
## 
## $p.value
## [1] 1.256154e-54
## 
## $df
## [1] 10
#Temel Bilesenler Analizi- princomp fonksiyonu
fit.pca <- prcomp( ~., data=selected_columns, scale=TRUE) # korelasyon matrisi icin scale=TRUE yaz 
fit.pca$rotation #loadings
##                    PC1         PC2         PC3         PC4         PC5
## Age          0.5690347 -0.09415564  0.01161121 -0.38572990 -0.72000820
## RestingBP    0.4007027  0.29307251 -0.82144440 -0.02667116  0.27939856
## Cholesterol  0.1371062  0.89013129  0.41089009 -0.12536192  0.06574105
## MaxHR       -0.5133368  0.33475767 -0.35503951  0.32250956 -0.62797866
## Oldpeak      0.4830363 -0.02909981  0.17381185  0.85485266 -0.06960996
#fit.pca$x #scores
summary(fit.pca)
## Importance of components:
##                           PC1    PC2    PC3    PC4    PC5
## Standard deviation     1.3459 1.0094 0.9247 0.8659 0.7515
## Proportion of Variance 0.3623 0.2038 0.1710 0.1500 0.1129
## Cumulative Proportion  0.3623 0.5661 0.7371 0.8871 1.0000
(fit.pca$sdev)^2 #ozdegerler
## [1] 1.8114035 1.0189549 0.8551331 0.7497851 0.5647234
((fit.pca$sdev)^2)/5 #varyans acıklama oranları 
## [1] 0.3622807 0.2037910 0.1710266 0.1499570 0.1129447
#Scree plot
plot(fit.pca)

plot(fit.pca,type="line")

#ya da 
library(factoextra)
scree <- fviz_eig(fit.pca)
scree

Y1= 0.569Age+0.40RestingBP+0.137Cholesterol-0.51MaxHR+0.48Oldpeak Y2= -0.09Age+0.29RestingBP+0.89Cholesterol+0.33MaxHR-0.029Oldpeak

#ilk iki bilesene karar verildi:
fit.pca$rotation[,1:2] #loadings
##                    PC1         PC2
## Age          0.5690347 -0.09415564
## RestingBP    0.4007027  0.29307251
## Cholesterol  0.1371062  0.89013129
## MaxHR       -0.5133368  0.33475767
## Oldpeak      0.4830363 -0.02909981
fit.pca$rotation[,2]*fit.pca$sdev[2] 
##         Age   RestingBP Cholesterol       MaxHR     Oldpeak 
## -0.09504381  0.29583706  0.89852787  0.33791543 -0.02937430
library(factoextra)
fviz_pca_var(fit.pca,col.var="steelblue",
             repel = TRUE # Avoid text overlapping
)

Bu durumda, beş farklı değişkenin (Age, RestingBP, Cholesterol, MaxHR, Oldpeak) orijinal veri setinin bir kombinasyonu olan iki temel bileşen (PC1 ve PC2) elde edilmiştir.

Bu denklemler, orijinal değişkenlerin bir kombinasyonu olan temel bileşenlerin anlamlarını sağlar. Özellikle, bir değişkenin katsayısı büyükse, o değişken temel bileşenin oluşumundaki önemli bir rol oynar.

Y1= 0.569Age+0.40RestingBP+0.137Cholesterol-0.51MaxHR+0.48Oldpeak Y2= -0.09Age+0.29RestingBP+0.89Cholesterol+0.33MaxHR-0.029Oldpeak

→ PC1 (Principal Component 1):

o Pozitif ağırlıklı en yüksek katsayı, “Age” değişkenine aittir, bu da demektir ki PC1 artarken yaşın etkisi de artmaktadır. o “RestingBP”, “Cholesterol”, ve “Oldpeak” değişkenleri de pozitif ağırlıklıdır, buda bu değişkenlerin PC1’in artışıyla birlikte arttığını gösterir. o “MaxHR” değişkeni ise negatif ağırlıklıdır, bu da bu değişkenin PC1’in artışıyla birlikte azaldığını gösterir.

→ PC2 (Principal Component 2): o “Age” değişkeni negatif ağırlıklıdır, bu da demektir ki PC2 arttıkça yaşın etkisi azalmaktadır. o “RestingBP”, “Cholesterol”, ve “MaxHR” değişkenleri pozitif ağırlıklıdır, bu da bu değişkenlerin PC2’nin artışıyla birlikte arttığını gösterir. o “Oldpeak” değişkeni negatif ağırlıklıdır, bu da bu değişkenin PC2’nin artışıyla birlikte azaldığını gösterir.