library(readr)
data <- read_csv("C:/Users/ASUS/Downloads/SMA.csv")
## Rows: 1029 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (15): Q1_Gender, Q2_Living_Area, Q3_Maritial_Status, SMAQ1, SMAQ2, SMAQ3...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
print(paste("Jumlah Data Hilang (NA):", sum(is.na(data))))
## [1] "Jumlah Data Hilang (NA): 0"
duplikat <- data[duplicated(data), ]
print(paste("Jumlah Baris Duplikat:", nrow(duplikat)))
## [1] "Jumlah Baris Duplikat: 34"
data_clean <- data[!duplicated(data), ]
Variabel SMA_Scale_value dan SMA_Scale (Class_Lebel) tidak digunakan dalam uji KMO dan analisis faktor karena keduanya merupakan variabel turunan dari item kuesioner SMAQ1–SMAQ10. Variabel SMA_Scale_value merupakan skor total hasil penjumlahan item, sedangkan SMA_Scale (Class_Lebel) merupakan kategorisasi dari skor tersebut. Penggunaan variabel turunan bersama indikator aslinya dapat menyebabkan redundansi informasi dan meningkatkan multikolinearitas dalam matriks korelasi.
data_uji <- data_clean[, c(
"Q1_Gender", "Q2_Living_Area", "Q3_Maritial_Status",
"SMAQ1", "SMAQ2", "SMAQ3", "SMAQ4", "SMAQ5",
"SMAQ6", "SMAQ7", "SMAQ8", "SMAQ9", "SMAQ10"
)]
# Memastikan semuanya bertipe numerik kontinu/ordinal
data_uji <- as.data.frame(lapply(data_uji, function(x) as.numeric(as.character(x))))
library(psych)
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
library(car)
## Warning: package 'car' was built under R version 4.5.3
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:psych':
##
## logit
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
Nilai harus > 0.50 (Sangat bagus jika > 0.70 atau > 0.80).
r_matrix <- cor(data_uji)
kmo_result <- KMO(r_matrix)
print(kmo_result)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = r_matrix)
## Overall MSA = 0.87
## MSA for each item =
## Q1_Gender Q2_Living_Area Q3_Maritial_Status SMAQ1
## 0.41 0.67 0.77 0.86
## SMAQ2 SMAQ3 SMAQ4 SMAQ5
## 0.87 0.85 0.89 0.90
## SMAQ6 SMAQ7 SMAQ8 SMAQ9
## 0.90 0.84 0.87 0.88
## SMAQ10
## 0.90
data_uji <- data_uji[, !colnames(data_uji) %in% "Q1_Gender"]
r_matrix <- cor(data_uji)
kmo_result <- KMO(r_matrix)
print(kmo_result)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = r_matrix)
## Overall MSA = 0.87
## MSA for each item =
## Q2_Living_Area Q3_Maritial_Status SMAQ1 SMAQ2
## 0.80 0.79 0.86 0.87
## SMAQ3 SMAQ4 SMAQ5 SMAQ6
## 0.85 0.90 0.90 0.90
## SMAQ7 SMAQ8 SMAQ9 SMAQ10
## 0.84 0.87 0.88 0.90
### A. Determinan Matriks Kovarians
cov_matrix <- cov(data_uji, use = "complete.obs")
det_cov <- det(cov_matrix)
print(paste("Determinan matriks kovarians:", det_cov))
## [1] "Determinan matriks kovarians: 0.0560416147312985"
# Catatan: Nilai harus > 0 (misal 0.001 atau lebih tinggi), tidak boleh eror singular lagi.
#### B. Nilai VIF (Variance Inflation Factor)
# Di sini kita gunakan salah satu item (misal SMAQ10) hanya sebagai target tiruan
# untuk memanggil fungsi lm() guna melihat nilai VIF antar-item kuesioner lainnya
model_vif <- lm(SMAQ10 ~ Q2_Living_Area + Q3_Maritial_Status +
SMAQ1 + SMAQ2 + SMAQ3 + SMAQ4 + SMAQ5 + SMAQ6 + SMAQ7 + SMAQ8 + SMAQ9,
data = data_uji)
vif_values <- vif(model_vif)
print("Nilai VIF per Indikator:")
## [1] "Nilai VIF per Indikator:"
print(vif_values)
## Q2_Living_Area Q3_Maritial_Status SMAQ1 SMAQ2
## 1.002150 1.008940 1.201705 1.607028
## SMAQ3 SMAQ4 SMAQ5 SMAQ6
## 1.571537 1.665361 1.288217 1.201162
## SMAQ7 SMAQ8 SMAQ9
## 1.680197 2.053738 1.727158