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:

  1. Nanik Erawati (23031554066)
  2. Hani’a Tsabita F. K (23031554073)
  3. Rizqika Naura Fuady (23031554120) date: “2025-05-17” output: html_document

# 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