if (!require(pracma)) install.packages("pracma", dependencies = TRUE)
## Loading required package: pracma
library(pracma)
Age <- c(30.83, 58.67, 24.50, 27.83, 20.17)
Debt <- c(0.000, 4.460, 0.500, 1.540, 5.625)
YearsEmployed <- c(1.25, 3.04, 1.50, 3.75, 1.71)
Income <- c(0, 560, 824, 3, 0)
data_manual <- data.frame(Age, Debt, YearsEmployed, Income)
# Menghitung rata-rata
means <- colMeans(data_manual)
# Menghitung jumlah baris dan kolom
n <- nrow(data_manual)
p <- ncol(data_manual)
# Menghitung matriks varians-kovarians secara manual
cov_matrix_manual <- matrix(0, p, p)
for (i in 1:p) {
for (j in 1:p) {
cov_matrix_manual[i, j] <- sum((data_manual[, i] - means[i]) * (data_manual[, j] - means[j])) / (n - 1)
}
}
cat("Variance-Covariance Matrix:\n")
## Variance-Covariance Matrix:
print(cov_matrix_manual)
## [,1] [,2] [,3] [,4]
## [1,] 231.361400 9.345663 6.999375 2046.9725
## [2,] 9.345663 6.187675 0.605225 -112.3137
## [3,] 6.999375 0.605225 1.182050 -42.7750
## [4,] 2046.972500 -112.313750 -42.775000 151957.8000
# Menghilangkan nilai NaN, NA, dan Inf
cov_matrix_manual[is.na(cov_matrix_manual) | is.nan(cov_matrix_manual) | is.infinite(cov_matrix_manual)] <- 0
# Menghitung eigenvalues dan eigenvectors menggunakan fungsi eigen()
eigen_result <- eigen(cov_matrix_manual)
# Menampilkan eigenvalues
lambda_manual <- eigen_result$values
cat("\nEigenvalues:\n")
##
## Eigenvalues:
print(lambda_manual)
## [1] 1.519855e+05 2.046288e+02 5.515401e+00 8.810774e-01
# Menampilkan eigenvectors
eigenvectors_manual <- eigen_result$vectors
cat("\nEigenvectors:\n")
##
## Eigenvectors:
print(eigenvectors_manual)
## [,1] [,2] [,3] [,4]
## [1,] -0.0134874524 0.99771613 0.055954477 -0.0353512228
## [2,] 0.0007381111 0.05468974 -0.997847290 -0.0361838792
## [3,] 0.0002807996 0.03730694 -0.034170588 0.9987194221
## [4,] -0.9999087283 -0.01340703 -0.001500938 0.0007305969
# Menghitung matriks korelasi
correlation_matrix_manual <- matrix(0, p, p)
for (i in 1:p) {
for (j in 1:p) {
if (cov_matrix_manual[i, i] != 0 && cov_matrix_manual[j, j] != 0) {
correlation_matrix_manual[i, j] <- cov_matrix_manual[i, j] / (sqrt(cov_matrix_manual[i, i]) * sqrt(cov_matrix_manual[j, j]))
} else {
correlation_matrix_manual[i, j] <- 0
}
}
}
cat("\nCorrelation Matrix:\n")
##
## Correlation Matrix:
print(correlation_matrix_manual)
## [,1] [,2] [,3] [,4]
## [1,] 1.0000000 0.2470022 0.4232489 0.3452272
## [2,] 0.2470022 1.0000000 0.2237872 -0.1158264
## [3,] 0.4232489 0.2237872 1.0000000 -0.1009278
## [4,] 0.3452272 -0.1158264 -0.1009278 1.0000000
nullspace_result <- nullspace(cov_matrix_manual)
cat("\nNull Space of the Variance-Covariance Matrix:\n")
##
## Null Space of the Variance-Covariance Matrix:
print(nullspace_result)
## NULL