Pemodelan Niat Kewirausahaan Mahasiswa Berdasarkan Kepribadian, Modal Sosial, dan Faktor Kognitif Menggunakan SEM dan CFA
Topik 6: Pemodelan multivariat dengan SEM dengan analisis lanjutannya menggunakan CFA kemudian analisis secara mendalam
Kelompok 6:
# Memuat dataset dari file CSV
data <- read.csv("C:/Users/NAURA/Downloads/Dataset anmul.csv")
# Menampilkan beberapa baris pertama untuk memeriksa data
head(data)
## ID PBC1 PBC2 PBC3 EI1 EI2 EI3 EI4 EI5 EI6 SSN1 SSN2 SSN3 ATT1 ATT2 ATT3 ATT4
## 1 #1 5 4 6 5 3 5 6 5 5 4 5 5 5 4 5 5
## 2 #2 4 4 4 6 6 4 6 6 5 5 6 5 5 6 6 6
## 3 #3 4 5 4 5 5 4 5 4 4 5 5 5 5 5 4 4
## 4 #4 2 7 7 7 7 7 7 7 7 6 6 6 7 4 5 5
## 5 #5 4 5 2 4 3 2 3 3 3 3 3 3 3 3 3 3
## 6 #6 5 5 5 7 7 7 7 7 7 4 6 7 7 5 7 5
## ATT5 OR1 OR2 OR3 OR4 OR5 SC1 SC2 SC3 EE1 EE2 EE3 EE4 EE5 INNOV1 INNOV2 INNOV3
## 1 5 4 4 5 4 4 3 5 5 5 4 5 5 5 5 5 4
## 2 6 5 5 6 5 5 5 5 3 5 4 5 5 6 5 6 6
## 3 5 4 4 4 4 3 3 3 3 5 5 6 5 4 4 5 5
## 4 4 5 6 6 7 5 5 5 6 7 7 7 7 7 4 7 7
## 5 3 4 3 5 2 2 1 1 2 2 4 3 3 3 2 3 3
## 6 7 5 4 5 5 6 5 3 5 7 7 7 7 7 4 5 6
## INNOV4 LOC1 LOC2 LOC3 LOC4 LOC5 RTP1 RTP2 RTP3 Inclination Age Gender Class
## 1 4 4 4 5 3 5 5 2 5 2 2 1 1
## 2 5 5 5 5 6 5 4 4 4 1 3 1 2
## 3 5 4 4 4 6 5 6 6 6 2 3 1 2
## 4 7 7 7 7 7 7 7 7 6 2 3 1 2
## 5 3 2 5 3 3 3 2 3 3 1 3 1 2
## 6 5 7 7 6 7 6 6 6 7 2 2 2 1
## PBC Attitude Innova Intention SSN Opportunity SocialCap Education
## 1 4.333333 4.8 4.50 4.833333 4.666667 4.2 4.333333 4.8
## 2 4.333333 5.8 5.50 5.500000 5.333333 5.2 4.333333 5.0
## 3 4.666667 4.6 4.75 4.500000 5.000000 3.8 3.000000 5.0
## 4 7.000000 5.0 6.25 7.000000 6.000000 5.8 5.333333 7.0
## 5 3.333333 3.0 2.75 3.000000 3.000000 3.2 1.333333 3.0
## 6 5.000000 6.2 5.00 7.000000 5.666667 5.0 4.333333 7.0
## Locus Risk
## 1 4.2 4.000000
## 2 5.2 4.000000
## 3 4.6 6.000000
## 4 7.0 6.666667
## 5 3.2 2.666667
## 6 6.6 6.333333
# Mengecek informasi tentang dataset (jumlah baris, kolom, tipe data)
str(data)
## 'data.frame': 276 obs. of 57 variables:
## $ ID : chr "#1" "#2" "#3" "#4" ...
## $ PBC1 : int 5 4 4 2 4 5 4 3 3 5 ...
## $ PBC2 : int 4 4 5 7 5 5 4 3 4 4 ...
## $ PBC3 : int 6 4 4 7 2 5 4 3 3 5 ...
## $ EI1 : int 5 6 5 7 4 7 3 3 3 7 ...
## $ EI2 : int 3 6 5 7 3 7 5 4 3 7 ...
## $ EI3 : int 5 4 4 7 2 7 2 3 3 7 ...
## $ EI4 : int 6 6 5 7 3 7 4 3 4 7 ...
## $ EI5 : int 5 6 4 7 3 7 3 3 4 7 ...
## $ EI6 : int 5 5 4 7 3 7 2 3 3 7 ...
## $ SSN1 : int 4 5 5 6 3 4 4 3 3 6 ...
## $ SSN2 : int 5 6 5 6 3 6 2 3 3 6 ...
## $ SSN3 : int 5 5 5 6 3 7 4 2 3 6 ...
## $ ATT1 : int 5 5 5 7 3 7 4 3 3 7 ...
## $ ATT2 : int 4 6 5 4 3 5 4 3 4 7 ...
## $ ATT3 : int 5 6 4 5 3 7 3 3 4 7 ...
## $ ATT4 : int 5 6 4 5 3 5 3 3 3 7 ...
## $ ATT5 : int 5 6 5 4 3 7 3 3 4 7 ...
## $ OR1 : int 4 5 4 5 4 5 3 4 4 6 ...
## $ OR2 : int 4 5 4 6 3 4 3 3 4 6 ...
## $ OR3 : int 5 6 4 6 5 5 4 4 4 6 ...
## $ OR4 : int 4 5 4 7 2 5 3 3 4 6 ...
## $ OR5 : int 4 5 3 5 2 6 3 4 4 6 ...
## $ SC1 : int 3 5 3 5 1 5 4 3 3 5 ...
## $ SC2 : int 5 5 3 5 1 3 3 3 4 5 ...
## $ SC3 : int 5 3 3 6 2 5 1 3 3 6 ...
## $ EE1 : int 5 5 5 7 2 7 3 3 3 7 ...
## $ EE2 : int 4 4 5 7 4 7 4 4 4 6 ...
## $ EE3 : int 5 5 6 7 3 7 4 4 4 6 ...
## $ EE4 : int 5 5 5 7 3 7 4 4 4 6 ...
## $ EE5 : int 5 6 4 7 3 7 3 3 4 6 ...
## $ INNOV1 : int 5 5 4 4 2 4 4 4 4 6 ...
## $ INNOV2 : int 5 6 5 7 3 5 2 3 3 6 ...
## $ INNOV3 : int 4 6 5 7 3 6 3 3 4 7 ...
## $ INNOV4 : int 4 5 5 7 3 5 4 4 4 6 ...
## $ LOC1 : int 4 5 4 7 2 7 4 4 4 5 ...
## $ LOC2 : int 4 5 4 7 5 7 4 4 4 6 ...
## $ LOC3 : int 5 5 4 7 3 6 3 4 4 6 ...
## $ LOC4 : int 3 6 6 7 3 7 5 4 4 5 ...
## $ LOC5 : int 5 5 5 7 3 6 5 4 4 6 ...
## $ RTP1 : int 5 4 6 7 2 6 5 4 4 5 ...
## $ RTP2 : int 2 4 6 7 3 6 5 3 4 6 ...
## $ RTP3 : int 5 4 6 6 3 7 3 4 3 5 ...
## $ Inclination: int 2 1 2 2 1 2 1 1 1 1 ...
## $ Age : int 2 3 3 3 3 2 3 3 3 3 ...
## $ Gender : int 1 1 1 1 1 2 2 1 1 1 ...
## $ Class : int 1 2 2 2 2 1 2 2 2 1 ...
## $ PBC : num 4.33 4.33 4.67 7 3.33 ...
## $ Attitude : num 4.8 5.8 4.6 5 3 6.2 3.4 3 3.6 7 ...
## $ Innova : num 4.5 5.5 4.75 6.25 2.75 5 3.25 3.5 3.75 6.25 ...
## $ Intention : num 4.83 5.5 4.5 7 3 ...
## $ SSN : num 4.67 5.33 5 6 3 ...
## $ Opportunity: num 4.2 5.2 3.8 5.8 3.2 5 3.2 3.6 4 6 ...
## $ SocialCap : num 4.33 4.33 3 5.33 1.33 ...
## $ Education : num 4.8 5 5 7 3 7 3.6 3.6 3.8 6.2 ...
## $ Locus : num 4.2 5.2 4.6 7 3.2 6.6 4.2 4 4 5.6 ...
## $ Risk : num 4 4 6 6.67 2.67 ...
# Menampilkan statistik deskriptif untuk data numerik
summary(data)
## ID PBC1 PBC2 PBC3 EI1
## Length:276 Min. :1.000 Min. :2 Min. :1.000 Min. :1.000
## Class :character 1st Qu.:4.000 1st Qu.:4 1st Qu.:4.000 1st Qu.:5.000
## Mode :character Median :4.000 Median :5 Median :5.000 Median :6.000
## Mean :4.529 Mean :5 Mean :4.725 Mean :5.761
## 3rd Qu.:5.000 3rd Qu.:6 3rd Qu.:6.000 3rd Qu.:7.000
## Max. :7.000 Max. :7 Max. :7.000 Max. :7.000
## EI2 EI3 EI4 EI5 EI6
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :2.00 Min. :2.000
## 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.00 1st Qu.:5.000
## Median :6.000 Median :6.000 Median :6.000 Median :6.00 Median :6.000
## Mean :5.859 Mean :5.529 Mean :6.033 Mean :5.96 Mean :5.688
## 3rd Qu.:7.000 3rd Qu.:7.000 3rd Qu.:7.000 3rd Qu.:7.00 3rd Qu.:7.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.00 Max. :7.000
## SSN1 SSN2 SSN3 ATT1
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:5.000 1st Qu.:5.000
## Median :5.000 Median :6.000 Median :6.000 Median :6.000
## Mean :5.011 Mean :5.344 Mean :5.435 Mean :5.732
## 3rd Qu.:6.000 3rd Qu.:7.000 3rd Qu.:7.000 3rd Qu.:7.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## ATT2 ATT3 ATT4 ATT5 OR1
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :2.00 Min. :2.000
## 1st Qu.:6.000 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.00 1st Qu.:5.000
## Median :7.000 Median :6.000 Median :6.000 Median :6.00 Median :6.000
## Mean :6.185 Mean :5.851 Mean :5.645 Mean :5.63 Mean :5.525
## 3rd Qu.:7.000 3rd Qu.:7.000 3rd Qu.:7.000 3rd Qu.:7.00 3rd Qu.:7.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.00 Max. :7.000
## OR2 OR3 OR4 OR5
## Min. :1.000 Min. :2.000 Min. :1.000 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.000
## Median :5.000 Median :6.000 Median :5.000 Median :5.000
## Mean :4.855 Mean :5.428 Mean :5.087 Mean :5.141
## 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## SC1 SC2 SC3 EE1
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:3.000 1st Qu.:5.000
## Median :4.000 Median :4.000 Median :5.000 Median :6.000
## Mean :4.181 Mean :4.243 Mean :4.464 Mean :5.554
## 3rd Qu.:5.000 3rd Qu.:5.000 3rd Qu.:6.000 3rd Qu.:7.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## EE2 EE3 EE4 EE5
## Min. :2.000 Min. :1.000 Min. :2.000 Min. :1.000
## 1st Qu.:4.750 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.000
## Median :5.000 Median :5.000 Median :5.000 Median :6.000
## Mean :5.279 Mean :5.348 Mean :5.373 Mean :5.406
## 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## INNOV1 INNOV2 INNOV3 INNOV4 LOC1
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.00 Min. :1.000
## 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:4.00 1st Qu.:5.000
## Median :5.000 Median :5.000 Median :6.000 Median :5.00 Median :6.000
## Mean :4.946 Mean :5.134 Mean :5.257 Mean :5.29 Mean :5.576
## 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:6.00 3rd Qu.:7.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.00 Max. :7.000
## LOC2 LOC3 LOC4 LOC5
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.000 1st Qu.:5.000
## Median :6.000 Median :6.000 Median :6.000 Median :6.000
## Mean :5.388 Mean :5.884 Mean :5.659 Mean :5.754
## 3rd Qu.:7.000 3rd Qu.:7.000 3rd Qu.:7.000 3rd Qu.:7.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## RTP1 RTP2 RTP3 Inclination
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.000
## 1st Qu.:5.000 1st Qu.:4.000 1st Qu.:4.000 1st Qu.:1.000
## Median :6.000 Median :5.000 Median :5.000 Median :2.000
## Mean :5.525 Mean :5.138 Mean :5.083 Mean :1.598
## 3rd Qu.:7.000 3rd Qu.:6.000 3rd Qu.:6.000 3rd Qu.:2.000
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :2.000
## Age Gender Class PBC
## Min. :1.000 Min. :1.000 Min. :1.000 Min. :1.667
## 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:1.000 1st Qu.:4.000
## Median :1.000 Median :1.000 Median :1.000 Median :5.000
## Mean :1.833 Mean :1.482 Mean :1.355 Mean :4.829
## 3rd Qu.:3.000 3rd Qu.:2.000 3rd Qu.:2.000 3rd Qu.:5.750
## Max. :3.000 Max. :2.000 Max. :2.000 Max. :7.000
## Attitude Innova Intention SSN
## Min. :2.000 Min. :1.500 Min. :1.833 Min. :1.000
## 1st Qu.:5.200 1st Qu.:4.250 1st Qu.:5.000 1st Qu.:4.333
## Median :6.000 Median :5.250 Median :6.083 Median :5.333
## Mean :5.809 Mean :5.157 Mean :5.805 Mean :5.263
## 3rd Qu.:6.600 3rd Qu.:6.000 3rd Qu.:6.667 3rd Qu.:6.333
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## Opportunity SocialCap Education Locus
## Min. :2.600 Min. :1.000 Min. :2.000 Min. :2.000
## 1st Qu.:4.400 1st Qu.:3.333 1st Qu.:4.600 1st Qu.:5.000
## Median :5.200 Median :4.333 Median :5.600 Median :5.800
## Mean :5.207 Mean :4.296 Mean :5.392 Mean :5.652
## 3rd Qu.:6.000 3rd Qu.:5.333 3rd Qu.:6.200 3rd Qu.:6.600
## Max. :7.000 Max. :7.000 Max. :7.000 Max. :7.000
## Risk
## Min. :1.333
## 1st Qu.:4.333
## Median :5.333
## Mean :5.249
## 3rd Qu.:6.333
## Max. :7.000
# Mengecek jumlah missing values
colSums(is.na(data))
## ID PBC1 PBC2 PBC3 EI1 EI2
## 0 0 0 0 0 0
## EI3 EI4 EI5 EI6 SSN1 SSN2
## 0 0 0 0 0 0
## SSN3 ATT1 ATT2 ATT3 ATT4 ATT5
## 0 0 0 0 0 0
## OR1 OR2 OR3 OR4 OR5 SC1
## 0 0 0 0 0 0
## SC2 SC3 EE1 EE2 EE3 EE4
## 0 0 0 0 0 0
## EE5 INNOV1 INNOV2 INNOV3 INNOV4 LOC1
## 0 0 0 0 0 0
## LOC2 LOC3 LOC4 LOC5 RTP1 RTP2
## 0 0 0 0 0 0
## RTP3 Inclination Age Gender Class PBC
## 0 0 0 0 0 0
## Attitude Innova Intention SSN Opportunity SocialCap
## 0 0 0 0 0 0
## Education Locus Risk
## 0 0 0
# Daftar variabel komposit
komposit_vars <- c("PBC", "Attitude", "Innova", "Intention", "SSN", "Opportunity", "SocialCap", "Locus", "Risk")
# Loop untuk cek outlier setiap variabel
for (var in komposit_vars) {
cat("\n\n=== Boxplot dan Outliers untuk", var, "===\n")
# Konversi ke numerik jika perlu
data[[var]] <- as.numeric(as.character(data[[var]]))
# Hapus NA
nilai <- na.omit(data[[var]])
# Boxplot
boxplot(nilai, main = paste("Boxplot:", var), ylab = var, col = "skyblue")
# Tampilkan nilai outlier jika ada
outliers <- boxplot.stats(nilai)$out
if (length(outliers) > 0) {
print("Outliers:")
print(outliers)
} else {
print("Tidak ada outlier.")
}
}
##
##
## === Boxplot dan Outliers untuk PBC ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk Attitude ===
## [1] "Outliers:"
## [1] 3.0 3.0 2.4 2.6 2.8 3.0 3.0 2.0 3.0
##
##
## === Boxplot dan Outliers untuk Innova ===
## [1] "Outliers:"
## [1] 1.5
##
##
## === Boxplot dan Outliers untuk Intention ===
## [1] "Outliers:"
## [1] 1.833333
##
##
## === Boxplot dan Outliers untuk SSN ===
## [1] "Outliers:"
## [1] 1.333333 1.000000 1.000000
##
##
## === Boxplot dan Outliers untuk Opportunity ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk SocialCap ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk Locus ===
## [1] "Outliers:"
## [1] 2.0 2.0 2.6 2.0 2.6 2.6
##
##
## === Boxplot dan Outliers untuk Risk ===
## [1] "Outliers:"
## [1] 1.333333
winsorize <- function(x) {
q1 <- quantile(x, 0.25, na.rm = TRUE)
q3 <- quantile(x, 0.75, na.rm = TRUE)
iqr <- q3 - q1
lower <- q1 - 1.5 * iqr
upper <- q3 + 1.5 * iqr
x[x < lower] <- lower
x[x > upper] <- upper
return(x)
}
# Terapkan winsorize ke semua variabel komposit
for (var in komposit_vars) {
cat("\n\n=== Winsorizing untuk", var, "===\n")
sebelum <- summary(data[[var]])
data[[var]] <- winsorize(data[[var]])
sesudah <- summary(data[[var]])
cat("Sebelum:\n"); print(sebelum)
cat("Sesudah:\n"); print(sesudah)
}
##
##
## === Winsorizing untuk PBC ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.667 4.000 5.000 4.829 5.750 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.667 4.000 5.000 4.829 5.750 7.000
##
##
## === Winsorizing untuk Attitude ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.000 5.200 6.000 5.809 6.600 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.10 5.20 6.00 5.82 6.60 7.00
##
##
## === Winsorizing untuk Innova ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.500 4.250 5.250 5.157 6.000 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.625 4.250 5.250 5.157 6.000 7.000
##
##
## === Winsorizing untuk Intention ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.833 5.000 6.083 5.805 6.667 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.500 5.000 6.083 5.807 6.667 7.000
##
##
## === Winsorizing untuk SSN ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 4.333 5.333 5.263 6.333 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.333 4.333 5.333 5.266 6.333 7.000
##
##
## === Winsorizing untuk Opportunity ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.600 4.400 5.200 5.207 6.000 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.600 4.400 5.200 5.207 6.000 7.000
##
##
## === Winsorizing untuk SocialCap ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 3.333 4.333 4.296 5.333 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 3.333 4.333 4.296 5.333 7.000
##
##
## === Winsorizing untuk Locus ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.000 5.000 5.800 5.652 6.600 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.600 5.000 5.800 5.659 6.600 7.000
##
##
## === Winsorizing untuk Risk ===
## Sebelum:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.333 4.333 5.333 5.249 6.333 7.000
## Sesudah:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.333 4.333 5.333 5.249 6.333 7.000
# Daftar variabel komposit
komposit_vars <- c("PBC", "Attitude", "Innova", "Intention", "SSN", "Opportunity", "SocialCap", "Locus", "Risk")
# Loop untuk cek outlier setiap variabel
for (var in komposit_vars) {
cat("\n\n=== Boxplot dan Outliers untuk", var, "===\n")
# Konversi ke numerik jika perlu
data[[var]] <- as.numeric(as.character(data[[var]]))
# Hapus NA
nilai <- na.omit(data[[var]])
# Boxplot
boxplot(nilai, main = paste("Boxplot:", var), ylab = var, col = "skyblue")
# Tampilkan nilai outlier jika ada
outliers <- boxplot.stats(nilai)$out
if (length(outliers) > 0) {
print("Outliers:")
print(outliers)
} else {
print("Tidak ada outlier.")
}
}
##
##
## === Boxplot dan Outliers untuk PBC ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk Attitude ===
## [1] "Outliers:"
## [1] 3.1 3.1 3.1 3.1 3.1 3.1 3.1 3.1 3.1
##
##
## === Boxplot dan Outliers untuk Innova ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk Intention ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk SSN ===
## [1] "Outliers:"
## [1] 1.333333 1.333333 1.333333
##
##
## === Boxplot dan Outliers untuk Opportunity ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk SocialCap ===
## [1] "Tidak ada outlier."
##
##
## === Boxplot dan Outliers untuk Locus ===
## [1] "Outliers:"
## [1] 2.6 2.6 2.6 2.6 2.6 2.6
##
##
## === Boxplot dan Outliers untuk Risk ===
## [1] "Outliers:"
## [1] 1.333333
# Histogram atau density plot
for (var in komposit_vars) {
hist(data[[var]], main = paste("Histogram:", var), xlab = var, col = "lightblue", breaks = 10)
}
# Standarisasi Data
# Variabel yang akan digunakan di model SEM
sem_vars <- c("Attitude", "Risk", "Locus", "SSN", "SocialCap", "Opportunity", "PBC", "Innova", "Intention")
# Pastikan semua variabel numerik dan tidak NA
valid_vars <- sem_vars[sapply(data[sem_vars], function(x) is.numeric(x) && !all(is.na(x)))]
# Standarisasi variabel valid
scaled_data <- as.data.frame(scale(data[valid_vars]))
colnames(scaled_data) <- valid_vars # Pastikan nama kolom tetap sama
head(scaled_data)
## Attitude Risk Locus SSN SocialCap Opportunity
## 1 -0.97207657 -0.9825237 -1.3318246 -0.46882848 0.02630032 -0.932133644
## 2 -0.01899262 -0.9825237 -0.4188003 0.05293225 0.02630032 -0.006705997
## 3 -1.16269336 0.5910346 -0.9666149 -0.20794812 -0.91033048 -1.302304703
## 4 -0.78145978 1.1155540 1.2246435 0.57469298 0.72877342 0.548550591
## 5 -2.59231929 -2.0315625 -2.2448489 -1.77323030 -2.08111899 -1.857561291
## 6 0.36224097 0.8532943 0.8594338 0.31381261 0.02630032 -0.191791527
## PBC Innova Intention
## 1 -0.4068076 -0.5767580 -0.9034909
## 2 -0.4068076 0.3008999 -0.2851065
## 3 -0.1329566 -0.3573435 -1.2126830
## 4 1.7840003 0.9591433 1.1062582
## 5 -1.2283606 -2.1126592 -2.6040478
## 6 0.1408944 -0.1379290 1.1062582
# Install hanya jika belum ada (hindari error)
if (!require(lavaan)) install.packages("lavaan", dependencies = TRUE)
## Loading required package: lavaan
## This is lavaan 0.6-19
## lavaan is FREE software! Please report any bugs.
if (!require(semPlot)) install.packages("semPlot", dependencies = TRUE)
## Loading required package: semPlot
if (!require(ggplot2)) install.packages("ggplot2", dependencies = TRUE)
## Loading required package: ggplot2
# Load libraries
library(lavaan)
library(semPlot)
library(ggplot2)
sem_model <- '
# Konstruk Kepribadian
Kepribadian =~ Attitude + Risk + Locus
# Konstruk Modal Sosial
ModalSosial =~ SSN + SocialCap + Opportunity
# Konstruk Faktor Kognitif
FaktorKognitif =~ PBC + Innova
# Hubungan terhadap Niat Kewirausahaan
Intention ~ Kepribadian + ModalSosial + FaktorKognitif
'
fit_sem <- sem(sem_model, data = scaled_data)
## Warning: lavaan->lav_object_post_check():
## some estimated ov variances are negative
summary(fit_sem, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 293 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 23
##
## Number of observations 276
##
## Model Test User Model:
##
## Test statistic 101.103
## Degrees of freedom 22
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 1345.028
## Degrees of freedom 36
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.940
## Tucker-Lewis Index (TLI) 0.901
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -2898.173
## Loglikelihood unrestricted model (H1) -2847.621
##
## Akaike (AIC) 5842.346
## Bayesian (BIC) 5925.615
## Sample-size adjusted Bayesian (SABIC) 5852.686
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.114
## 90 Percent confidence interval - lower 0.092
## 90 Percent confidence interval - upper 0.137
## P-value H_0: RMSEA <= 0.050 0.000
## P-value H_0: RMSEA >= 0.080 0.994
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.047
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Kepribadian =~
## Attitude 1.000 0.806 0.807
## Risk 0.778 0.069 11.320 0.000 0.627 0.628
## Locus 0.872 0.067 13.075 0.000 0.703 0.704
## ModalSosial =~
## SSN 1.000 0.513 0.514
## SocialCap 1.062 0.154 6.911 0.000 0.544 0.545
## Opportunity 1.734 0.197 8.797 0.000 0.890 0.891
## FaktorKognitif =~
## PBC 1.000 0.669 0.670
## Innova 1.275 0.107 11.976 0.000 0.853 0.855
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Intention ~
## Kepribadian 5.056 5.497 0.920 0.358 4.075 4.082
## ModalSosial -2.110 3.690 -0.572 0.567 -1.082 -1.084
## FaktorKognitif -3.331 4.904 -0.679 0.497 -2.228 -2.232
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Kepribadian ~~
## ModalSosial 0.397 0.058 6.816 0.000 0.960 0.960
## FaktorKognitif 0.524 0.064 8.159 0.000 0.971 0.971
## ModalSosial ~~
## FaktorKognitif 0.323 0.051 6.333 0.000 0.943 0.943
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Attitude 0.347 0.037 9.315 0.000 0.347 0.348
## .Risk 0.603 0.054 11.233 0.000 0.603 0.606
## .Locus 0.502 0.046 10.807 0.000 0.502 0.504
## .SSN 0.733 0.065 11.268 0.000 0.733 0.736
## .SocialCap 0.700 0.063 11.180 0.000 0.700 0.702
## .Opportunity 0.205 0.043 4.752 0.000 0.205 0.206
## .PBC 0.549 0.052 10.467 0.000 0.549 0.551
## .Innova 0.269 0.045 5.971 0.000 0.269 0.269
## .Intention -0.183 0.653 -0.281 0.779 -0.183 -0.184
## Kepribadian 0.650 0.083 7.855 0.000 1.000 1.000
## ModalSosial 0.263 0.060 4.363 0.000 1.000 1.000
## FaktorKognitif 0.447 0.075 5.991 0.000 1.000 1.000
semPaths(fit_sem, what = "std", layout = "tree", edge.label.cex = 0.8, fade = FALSE)
cfa_model <- '
Kepribadian =~ Attitude + Risk + Locus
ModalSosial =~ SSN + SocialCap + Opportunity
FaktorKognitif =~ PBC + Innova
'
fit_cfa <- cfa(cfa_model, data = scaled_data)
summary(fit_cfa, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 39 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 19
##
## Number of observations 276
##
## Model Test User Model:
##
## Test statistic 78.471
## Degrees of freedom 17
## P-value (Chi-square) 0.000
##
## Model Test Baseline Model:
##
## Test statistic 1070.703
## Degrees of freedom 28
## P-value 0.000
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.941
## Tucker-Lewis Index (TLI) 0.903
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -2632.893
## Loglikelihood unrestricted model (H1) -2593.657
##
## Akaike (AIC) 5303.785
## Bayesian (BIC) 5372.573
## Sample-size adjusted Bayesian (SABIC) 5312.327
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.114
## 90 Percent confidence interval - lower 0.090
## 90 Percent confidence interval - upper 0.141
## P-value H_0: RMSEA <= 0.050 0.000
## P-value H_0: RMSEA >= 0.080 0.988
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.044
##
## Parameter Estimates:
##
## Standard errors Standard
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Kepribadian =~
## Attitude 1.000 0.764 0.765
## Risk 0.867 0.079 11.001 0.000 0.662 0.663
## Locus 0.980 0.078 12.621 0.000 0.749 0.750
## ModalSosial =~
## SSN 1.000 0.505 0.506
## SocialCap 1.088 0.159 6.861 0.000 0.550 0.551
## Opportunity 1.766 0.205 8.597 0.000 0.892 0.894
## FaktorKognitif =~
## PBC 1.000 0.668 0.670
## Innova 1.277 0.107 11.953 0.000 0.854 0.855
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## Kepribadian ~~
## ModalSosial 0.366 0.056 6.579 0.000 0.950 0.950
## FaktorKognitif 0.493 0.062 7.916 0.000 0.966 0.966
## ModalSosial ~~
## FaktorKognitif 0.318 0.051 6.252 0.000 0.940 0.940
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .Attitude 0.413 0.044 9.403 0.000 0.413 0.414
## .Risk 0.558 0.053 10.564 0.000 0.558 0.560
## .Locus 0.436 0.045 9.658 0.000 0.436 0.438
## .SSN 0.741 0.066 11.269 0.000 0.741 0.744
## .SocialCap 0.694 0.062 11.139 0.000 0.694 0.697
## .Opportunity 0.200 0.044 4.538 0.000 0.200 0.201
## .PBC 0.550 0.053 10.467 0.000 0.550 0.552
## .Innova 0.267 0.045 5.933 0.000 0.267 0.268
## Kepribadian 0.584 0.082 7.155 0.000 1.000 1.000
## ModalSosial 0.255 0.060 4.279 0.000 1.000 1.000
## FaktorKognitif 0.447 0.075 5.984 0.000 1.000 1.000
semPaths(fit_cfa, what = "std", layout = "tree", edge.label.cex = 0.8, fade = FALSE)
cat("\n\n=== Indeks Kecocokan Model SEM ===\n")
##
##
## === Indeks Kecocokan Model SEM ===
fitMeasures(fit_sem, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 101.103 22.000 0.000 0.940 0.901 0.114 0.047
cat("=== Indeks Kecocokan Model CFA ===\n")
## === Indeks Kecocokan Model CFA ===
fitMeasures(fit_cfa, c("chisq", "df", "pvalue", "cfi", "tli", "rmsea", "srmr"))
## chisq df pvalue cfi tli rmsea srmr
## 78.471 17.000 0.000 0.941 0.903 0.114 0.044
# Fungsi untuk menghitung AVE dan CR
calc_ave_cr <- function(fit) {
std_loadings <- inspect(fit, "std")$lambda
err_var <- inspect(fit, "std")$theta
result <- list()
for (construct in rownames(std_loadings)) {
loadings <- std_loadings[construct, ]
loadings <- loadings[loadings != 0]
error_vars <- diag(err_var)[names(loadings)]
ave <- sum(loadings^2) / length(loadings)
cr <- (sum(loadings))^2 / ((sum(loadings))^2 + sum(error_vars))
result[[construct]] <- list(AVE = ave, CR = cr)
}
return(result)
}
# Hitung AVE dan CR dari CFA
cat("=== AVE dan CR dari CFA ===\n")
## === AVE dan CR dari CFA ===
print(calc_ave_cr(fit_cfa))
## $Attitude
## $Attitude$AVE
## [1] 0.5856685
##
## $Attitude$CR
## [1] NA
##
##
## $Risk
## $Risk$AVE
## [1] 0.4397857
##
## $Risk$CR
## [1] NA
##
##
## $Locus
## $Locus$AVE
## [1] 0.5623534
##
## $Locus$CR
## [1] NA
##
##
## $SSN
## $SSN$AVE
## [1] 0.2562142
##
## $SSN$CR
## [1] NA
##
##
## $SocialCap
## $SocialCap$AVE
## [1] 0.3033779
##
## $SocialCap$CR
## [1] NA
##
##
## $Opportunity
## $Opportunity$AVE
## [1] 0.7990723
##
## $Opportunity$CR
## [1] NA
##
##
## $PBC
## $PBC$AVE
## [1] 0.4483817
##
## $PBC$CR
## [1] NA
##
##
## $Innova
## $Innova$AVE
## [1] 0.7315898
##
## $Innova$CR
## [1] NA