#1.load dataset
data <- read.csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")
#2A. pilih beberapa row
data_olah1 <- data[, c("Age", "SibSp", "Parch", "Fare")]
head(data_olah1)
## Age SibSp Parch Fare
## 1 22 1 0 7.2500
## 2 38 1 0 71.2833
## 3 26 0 0 7.9250
## 4 35 1 0 53.1000
## 5 35 0 0 8.0500
## 6 NA 0 0 8.4583
# 2B. hapus missing value
data_misval <- na.omit(data_olah1)
head(data_misval)
## Age SibSp Parch Fare
## 1 22 1 0 7.2500
## 2 38 1 0 71.2833
## 3 26 0 0 7.9250
## 4 35 1 0 53.1000
## 5 35 0 0 8.0500
## 7 54 0 0 51.8625
print(dim(data_olah1))
## [1] 891 4
print(dim(data_misval))
## [1] 714 4
#3Ai. korelasi matrik
matrik corelasi mengidentifikasi seberapa berhubungan antara fitur a dan fitur lainnya
sebagai contoh adalah age dan fare dimana tertulis 0.096(9,6%) menandakan keduanya memiliki hubungan lemah (jadi umur memimiliki pengaruh lemah dalam penentuan tarif(lbh murah/lbh mahal)
cor_mat <- cor(data_misval)
cor_mat
## Age SibSp Parch Fare
## Age 1.00000000 -0.3082468 -0.1891193 0.09606669
## SibSp -0.30824676 1.0000000 0.3838199 0.13832879
## Parch -0.18911926 0.3838199 1.0000000 0.20511888
## Fare 0.09606669 0.1383288 0.2051189 1.00000000
#3aii. cor plot
library(corrplot)
corrplot(cor_mat,
method = "color",
type = "full",
tl.col = "black",
tl.srt = 45,
title = "Correlation Matrix Heatmap",
mar = c(0, 0, 2, 0))
#3Bi. varian covarian
Variance mengukur seberapa menyebar data dari
rata-ratanya,semakin besar varians semakin menyebar datanya dari mean
Covariance mengukur bagaimana dua variabel berubah bersama
pada varian age terlihat persebaran kecil karena terlihat cukup menumpuk dan tidak jauh dari mean(titik merah),sedangkan pada SibSp sebaliknya
jika pola menyebar acak maka covarian hampir tidak ada(mendekati 0)
coba kita lihat pada age dan sipsb yang korelasinya terendah terlihat cov=-4.1 dan plotnya tidak memiliki ke iringan jelas maka cov mendekati 0 menandakan keduanya tidak memiliki hubungan jelas , Saat Age > mean, Fare juga sering > mean
Saat Age < mean, Fare juga sering < mean 7. jika pola terlihat miring naik maka cov positif,miring turun maka cov negatif coba lihat pada age dan fare terlihat corelasi cukup tinggi dan cov =
cov_mat <- cov(data_misval)
cov_mat
## Age SibSp Parch Fare
## Age 211.019125 -4.1633339 -2.3441911 73.849030
## SibSp -4.163334 0.8644973 0.3045128 6.806212
## Parch -2.344191 0.3045128 0.7281027 9.262176
## Fare 73.849030 6.8062117 9.2621760 2800.413100
#3Bii. plot variance covariance all
panel.scatter.mean <- function(x,y,...){
points(x,y,pch = 19,col ="blue")
points(mean(y),pch = 19,col = "black",cex = 1.8)
points(mean(x),pch = 19,col = "red",cex = 1.8)
}
panel.diag.scatter.mean <- function(x, ...) {
points(x, x, col ="blue", pch = 19)
points(mean(x), mean(x), col = "red", pch = 19, cex =2)
}
data_misval_num <- data_misval[, sapply(data_misval, is.numeric)]
par(mar = c(3,3,2,2))
pairs(data_misval_num, main = "Scatterplot Matrix",
lower.panel = panel.scatter.mean, upper.panel = panel.scatter.mean, diag.panel =panel.diag.scatter.mean)
#3Biii.plot variance kovariance fare age
mean_age <- mean(data_misval$Age)
mean_fare <- mean(data_misval$Fare)
plot(data_misval$Age,
data_misval$Fare,
main="Age vs Fare ",
xlab="Age",
ylab="Fare",
pch=19,
col="blue")
points(mean_age, col = "red", pch = 19, cex = 2)
points(mean_fare, col ="black", pch = 19, cex = 2)
#3Ci.eigen vekcyor dan eigen value
#ALUR 1. hitung cov matrik 2. dapatkan eigen value dan eigen matrikdari cov matrik tersebut
Hampir seluruh informasi data ada di PC1 dan PC2
eigen_res <- eigen(cov_mat)
eigen_res[["values"]]
## [1] 2802.5636587 209.0385659 0.9438783 0.4787214
eigen_val <- eigen_res$values
eigen_vec <- eigen_res$vectors
#3Cii. eigen value
print(eigen_val)
## [1] 2802.5636587 209.0385659 0.9438783 0.4787214
#3Ciii. eigen vektor
print(eigen_vec)
## [,1] [,2] [,3] [,4]
## [1,] 0.028477552 0.99929943 -0.024018111 0.0035788596
## [2,] 0.002386349 -0.02093144 -0.773693322 0.6332099362
## [3,] 0.003280818 -0.01253786 -0.633088089 -0.7739712590
## [4,] 0.999586200 -0.02837826 0.004609234 0.0009266652
#3Civ.plot eigen
eigen_val = eigen_res$values
plot(eigen_val, type = "b",
pch = 19,
col = "blue",
xlab = "Principal Component",
ylab = "Eigenvalue",
main = "Scree Plot")