Modul 5 Structural Equation Modeling (SEM)

Kelompok 8

Anggota:

  • Fina Nihayatul Husna (24031554022)

  • Juli Yawati Manalu (24031554050)

  • Alya Nabila Tamam (24031554099)

Sumber Dataset: https://www.kaggle.com/datasets/nikitamanaenkov/students-performance-dataset-in-physics-education

Load Package

library(readr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(psych)
library(MVN)
## Warning: package 'MVN' was built under R version 4.5.3
## 
## Attaching package: 'MVN'
## The following object is masked from 'package:psych':
## 
##     mardia
library(car)
## 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
library(lavaan)
## Warning: package 'lavaan' was built under R version 4.5.3
## This is lavaan 0.6-21
## lavaan is FREE software! Please report any bugs.
## 
## Attaching package: 'lavaan'
## The following object is masked from 'package:psych':
## 
##     cor2cov
library(semPlot)
## Warning: package 'semPlot' was built under R version 4.5.3
library(semTools)
## Warning: package 'semTools' was built under R version 4.5.3
## 
## ###############################################################################
## This is semTools 0.5-8
## All users of R (or SEM) are invited to submit functions or ideas for functions.
## ###############################################################################
## 
## Attaching package: 'semTools'
## The following objects are masked from 'package:psych':
## 
##     reliability, skew
## The following object is masked from 'package:readr':
## 
##     clipboard

Import Dataset

# Import data
Data <- read_csv("C:/Users/LENOVO/Downloads/data.csv")
## Rows: 497 Columns: 331
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (252): STUDID, FCI1, FCI2, FCI3, FCI4, FCI5, FCI6, FCI7, FCI8, FCI9, FCI...
## dbl  (79): NO, SCH, COH, GDR, AGE, FATHOCC, MOTHOCC, FATHEDU, MOTHEDU, FATHI...
## 
## ℹ 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.
# Melihat struktur data
str(Data)
## spc_tbl_ [497 × 331] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ NO       : num [1:497] 1 2 3 4 5 6 7 8 9 10 ...
##  $ STUDID   : chr [1:497] "A1001" "A1002" "A1003" "A1004" ...
##  $ SCH      : num [1:497] 1 1 1 1 1 1 1 1 1 1 ...
##  $ COH      : num [1:497] 1 1 1 1 1 1 1 1 1 1 ...
##  $ GDR      : num [1:497] 1 2 1 2 1 2 2 2 2 2 ...
##  $ AGE      : num [1:497] 3 1 2 3 2 2 2 2 2 2 ...
##  $ FATHOCC  : num [1:497] 1 4 4 1 1 1 1 4 1 2 ...
##  $ MOTHOCC  : num [1:497] 9 8 8 1 1 7 1 5 1 2 ...
##  $ FATHEDU  : num [1:497] 4 4 3 2 3 4 4 2 4 4 ...
##  $ MOTHEDU  : num [1:497] 5 4 4 2 3 2 3 1 3 4 ...
##  $ FATHINC  : num [1:497] 7 10 2 6 10 9 8 10 10 11 ...
##  $ MOTHINC  : num [1:497] 12 12 12 6 10 4 8 5 9 11 ...
##  $ SIBL     : num [1:497] 2 2 0 3 2 2 2 2 1 2 ...
##  $ DOM      : num [1:497] 1 1 1 1 1 2 2 1 1 1 ...
##  $ LIT1     : num [1:497] 1 1 1 2 2 1 1 1 1 1 ...
##  $ LIT2     : num [1:497] 1 1 1 1 1 2 1 1 1 1 ...
##  $ PHYIDE1  : num [1:497] 3 2 2 3 3 2 1 2 2 2 ...
##  $ PHYIDE2  : num [1:497] 1 2 1 1 1 1 1 1 1 1 ...
##  $ FINTEST1 : num [1:497] 48 38 79 62 44 26 92 60 44 42 ...
##  $ FINTEST2 : num [1:497] 56 61 73 59 40 32 86 68 46 43 ...
##  $ TEACHPRED: num [1:497] 0 0 1 1 0 0 1 1 0 0 ...
##  $ FCI1     : chr [1:497] "C" "C" "D" "D" ...
##  $ FCI2     : chr [1:497] "E" "D" "D" "D" ...
##  $ FCI3     : chr [1:497] "B" "B" "C" "C" ...
##  $ FCI4     : chr [1:497] "A" "E" "E" "E" ...
##  $ FCI5     : chr [1:497] "E" "A" "C" "C" ...
##  $ FCI6     : chr [1:497] "B" "C" "B" "A" ...
##  $ FCI7     : chr [1:497] "B" "B" "B" "A" ...
##  $ FCI8     : chr [1:497] "A" "E" "A" "E" ...
##  $ FCI9     : chr [1:497] "B" "A" "E" "A" ...
##  $ FCI10    : chr [1:497] "D" "D" "D" "E" ...
##  $ FCI11    : chr [1:497] "C" "C" "B" "C" ...
##  $ FCI12    : chr [1:497] "B" "B" "B" "C" ...
##  $ FCI13    : chr [1:497] "C" "C" "B" "B" ...
##  $ FCI14    : chr [1:497] "A" "B" "A" "A" ...
##  $ FCI15    : chr [1:497] "C" "C" "C" "C" ...
##  $ FCI16    : chr [1:497] "C" "A" "A" "C" ...
##  $ FCI17    : chr [1:497] "A" "B" "B" "D" ...
##  $ FCI18    : chr [1:497] "E" "D" "D" "A" ...
##  $ FCI19    : chr [1:497] "E" "D" "D" "B" ...
##  $ FCI20    : chr [1:497] "A" "E" "C" "C" ...
##  $ FCI21    : chr [1:497] "B" "C" "B" "B" ...
##  $ FCI22    : chr [1:497] "D" "B" "D" "D" ...
##  $ FCI23    : chr [1:497] "C" "A" "A" "B" ...
##  $ FCI24    : chr [1:497] "E" "C" "A" "D" ...
##  $ FCI25    : chr [1:497] "B" "C" "A" "D" ...
##  $ FCI26    : chr [1:497] "C" "B" "D" "A" ...
##  $ FCI27    : chr [1:497] "E" "B" "C" "C" ...
##  $ FCI28    : chr [1:497] "D" "E" "C" "D" ...
##  $ FCI29    : chr [1:497] "B" "B" "E" "A" ...
##  $ FCI30    : chr [1:497] "E" "E" "B" "B" ...
##  $ FMCE1    : chr [1:497] "A" "B" "B" "B" ...
##  $ FMCE2    : chr [1:497] "B" "B" "D" "D" ...
##  $ FMCE3    : chr [1:497] "F" "E" "F" "F" ...
##  $ FMCE4    : chr [1:497] "G" "F" "F" "F" ...
##  $ FMCE5    : chr [1:497] "B" "B" "D" "D" ...
##  $ FMCE6    : chr [1:497] "F" "E" "B" "B" ...
##  $ FMCE7    : chr [1:497] "B" "F" "B" "B" ...
##  $ FMCE8    : chr [1:497] "G" "E" "A" "A" ...
##  $ FMCE9    : chr [1:497] "D" "D" "A" "A" ...
##  $ FMCE10   : chr [1:497] "B" "B" "A" "A" ...
##  $ FMCE11   : chr [1:497] "A" "E" "A" "A" ...
##  $ FMCE12   : chr [1:497] "D" "D" "A" "A" ...
##  $ FMCE13   : chr [1:497] "A" "A" "A" "A" ...
##  $ FMCE14   : chr [1:497] "A" "J" "E" "E" ...
##  $ FMCE15   : chr [1:497] "E" "E" "E" "E" ...
##  $ FMCE16   : chr [1:497] "C" "D" "A" "A" ...
##  $ FMCE17   : chr [1:497] "B" "J" "E" "E" ...
##  $ FMCE18   : chr [1:497] "H" "B" "B" "B" ...
##  $ FMCE19   : chr [1:497] "D" "D" "B" "B" ...
##  $ FMCE20   : chr [1:497] "G" "C" "G" "G" ...
##  $ FMCE21   : chr [1:497] "H" "J" "E" "E" ...
##  $ FMCE22   : chr [1:497] "E" "A" "A" "A" ...
##  $ FMCE23   : chr [1:497] "G" "B" "B" "B" ...
##  $ FMCE24   : chr [1:497] "C" "C" "C" "C" ...
##  $ FMCE25   : chr [1:497] "B" "D" "B" "B" ...
##  $ FMCE26   : chr [1:497] "C" "J" "C" "C" ...
##  $ FMCE27   : chr [1:497] "A" "E" "A" "A" ...
##  $ FMCE28   : chr [1:497] "A" "A" "A" "A" ...
##  $ FMCE29   : chr [1:497] "A" "D" "A" "A" ...
##  $ FMCE30   : chr [1:497] "E" "E" "E" "E" ...
##  $ FMCE31   : chr [1:497] "E" "A" "E" "E" ...
##  $ FMCE32   : chr [1:497] "E" "A" "E" "E" ...
##  $ FMCE33   : chr [1:497] "E" "E" "E" "E" ...
##  $ FMCE34   : chr [1:497] "E" "E" "E" "E" ...
##  $ FMCE35   : chr [1:497] "A" "C" "A" "A" ...
##  $ FMCE36   : chr [1:497] "A" "C" "C" "A" ...
##  $ FMCE37   : chr [1:497] "A" "A" "A" "A" ...
##  $ FMCE38   : chr [1:497] "A" "B" "B" "A" ...
##  $ FMCE39   : chr [1:497] "E" "E" "E" "E" ...
##  $ FMCE40   : chr [1:497] "A" "C" "A" "A" ...
##  $ FMCE41   : chr [1:497] "F" "D" "F" "F" ...
##  $ FMCE42   : chr [1:497] "B" "F" "B" "B" ...
##  $ FMCE43   : chr [1:497] "D" "A" "D" "D" ...
##  $ FMCE44   : chr [1:497] "B" "B" "B" "A" ...
##  $ FMCE45   : chr [1:497] "B" "A" "B" "A" ...
##  $ FMCE46   : chr [1:497] "A" "C" "A" "A" ...
##  $ FMCE47   : chr [1:497] "A" "D" "A" "A" ...
##  $ FMCE46a  : chr [1:497] "karena resultan di bawah lebih kecil dan resultan di atas bukit lebih besar sehingga kelajuan saat dibawah lebih besar sibandin "Kelajuan pada saat di bawah lebih besar pada bukit yang lebih tinggi dan kurang curam daripada bukit sesuai gambar" "Kelajuan pada saat di bawah lebih besar pada bukit yang lebih tinggi dan kurang curam daripada bukit sesuai gambar. \n\nHal ini "Kelajuan pada saat di bawah lebih besar pada bukit yang lebih tinggi dan kurang curam daripada bukit sesuai gambar." ...
##   [list output truncated]
##  - attr(*, "spec")=
##   .. cols(
##   ..   NO = col_double(),
##   ..   STUDID = col_character(),
##   ..   SCH = col_double(),
##   ..   COH = col_double(),
##   ..   GDR = col_double(),
##   ..   AGE = col_double(),
##   ..   FATHOCC = col_double(),
##   ..   MOTHOCC = col_double(),
##   ..   FATHEDU = col_double(),
##   ..   MOTHEDU = col_double(),
##   ..   FATHINC = col_double(),
##   ..   MOTHINC = col_double(),
##   ..   SIBL = col_double(),
##   ..   DOM = col_double(),
##   ..   LIT1 = col_double(),
##   ..   LIT2 = col_double(),
##   ..   PHYIDE1 = col_double(),
##   ..   PHYIDE2 = col_double(),
##   ..   FINTEST1 = col_double(),
##   ..   FINTEST2 = col_double(),
##   ..   TEACHPRED = col_double(),
##   ..   FCI1 = col_character(),
##   ..   FCI2 = col_character(),
##   ..   FCI3 = col_character(),
##   ..   FCI4 = col_character(),
##   ..   FCI5 = col_character(),
##   ..   FCI6 = col_character(),
##   ..   FCI7 = col_character(),
##   ..   FCI8 = col_character(),
##   ..   FCI9 = col_character(),
##   ..   FCI10 = col_character(),
##   ..   FCI11 = col_character(),
##   ..   FCI12 = col_character(),
##   ..   FCI13 = col_character(),
##   ..   FCI14 = col_character(),
##   ..   FCI15 = col_character(),
##   ..   FCI16 = col_character(),
##   ..   FCI17 = col_character(),
##   ..   FCI18 = col_character(),
##   ..   FCI19 = col_character(),
##   ..   FCI20 = col_character(),
##   ..   FCI21 = col_character(),
##   ..   FCI22 = col_character(),
##   ..   FCI23 = col_character(),
##   ..   FCI24 = col_character(),
##   ..   FCI25 = col_character(),
##   ..   FCI26 = col_character(),
##   ..   FCI27 = col_character(),
##   ..   FCI28 = col_character(),
##   ..   FCI29 = col_character(),
##   ..   FCI30 = col_character(),
##   ..   FMCE1 = col_character(),
##   ..   FMCE2 = col_character(),
##   ..   FMCE3 = col_character(),
##   ..   FMCE4 = col_character(),
##   ..   FMCE5 = col_character(),
##   ..   FMCE6 = col_character(),
##   ..   FMCE7 = col_character(),
##   ..   FMCE8 = col_character(),
##   ..   FMCE9 = col_character(),
##   ..   FMCE10 = col_character(),
##   ..   FMCE11 = col_character(),
##   ..   FMCE12 = col_character(),
##   ..   FMCE13 = col_character(),
##   ..   FMCE14 = col_character(),
##   ..   FMCE15 = col_character(),
##   ..   FMCE16 = col_character(),
##   ..   FMCE17 = col_character(),
##   ..   FMCE18 = col_character(),
##   ..   FMCE19 = col_character(),
##   ..   FMCE20 = col_character(),
##   ..   FMCE21 = col_character(),
##   ..   FMCE22 = col_character(),
##   ..   FMCE23 = col_character(),
##   ..   FMCE24 = col_character(),
##   ..   FMCE25 = col_character(),
##   ..   FMCE26 = col_character(),
##   ..   FMCE27 = col_character(),
##   ..   FMCE28 = col_character(),
##   ..   FMCE29 = col_character(),
##   ..   FMCE30 = col_character(),
##   ..   FMCE31 = col_character(),
##   ..   FMCE32 = col_character(),
##   ..   FMCE33 = col_character(),
##   ..   FMCE34 = col_character(),
##   ..   FMCE35 = col_character(),
##   ..   FMCE36 = col_character(),
##   ..   FMCE37 = col_character(),
##   ..   FMCE38 = col_character(),
##   ..   FMCE39 = col_character(),
##   ..   FMCE40 = col_character(),
##   ..   FMCE41 = col_character(),
##   ..   FMCE42 = col_character(),
##   ..   FMCE43 = col_character(),
##   ..   FMCE44 = col_character(),
##   ..   FMCE45 = col_character(),
##   ..   FMCE46 = col_character(),
##   ..   FMCE47 = col_character(),
##   ..   FMCE46a = col_character(),
##   ..   RRMCS1 = col_character(),
##   ..   RRMCS2 = col_character(),
##   ..   RRMCS3 = col_character(),
##   ..   RRMCS4 = col_character(),
##   ..   RRMCS5 = col_character(),
##   ..   RRMCS6 = col_character(),
##   ..   RRMCS7 = col_character(),
##   ..   RRMCS8 = col_character(),
##   ..   RRMCS9 = col_character(),
##   ..   RRMCS10 = col_character(),
##   ..   RRMCS11 = col_character(),
##   ..   RRMCS12 = col_character(),
##   ..   RRMCS13 = col_character(),
##   ..   RRMCS14 = col_character(),
##   ..   RRMCS15 = col_character(),
##   ..   RRMCS16 = col_character(),
##   ..   RRMCS17 = col_character(),
##   ..   RRMCS18 = col_character(),
##   ..   RRMCS19 = col_character(),
##   ..   RRMCS20 = col_character(),
##   ..   RRMCS21 = col_character(),
##   ..   RRMCS22 = col_character(),
##   ..   RRMCS23 = col_character(),
##   ..   RRMCS24 = col_character(),
##   ..   RRMCS25 = col_character(),
##   ..   RRMCS26 = col_character(),
##   ..   RRMCS27 = col_character(),
##   ..   RRMCS28 = col_character(),
##   ..   RRMCS29 = col_character(),
##   ..   RRMCS30 = col_character(),
##   ..   RRMCS1a = col_character(),
##   ..   RRMCS2a = col_character(),
##   ..   RRMCS3a = col_character(),
##   ..   RRMCS4a = col_character(),
##   ..   RRMCS5a = col_character(),
##   ..   RRMCS6a = col_character(),
##   ..   RRMCS7a = col_character(),
##   ..   RRMCS8a = col_character(),
##   ..   RRMCS9a = col_character(),
##   ..   RRMCS10a = col_character(),
##   ..   RRMCS11a = col_character(),
##   ..   RRMCS12a = col_character(),
##   ..   RRMCS13a = col_character(),
##   ..   RRMCS14a = col_character(),
##   ..   RRMCS15a = col_character(),
##   ..   RRMCS16a = col_character(),
##   ..   RRMCS17a = col_character(),
##   ..   RRMCS18a = col_character(),
##   ..   RRMCS19a = col_character(),
##   ..   RRMCS20a = col_character(),
##   ..   RRMCS21a = col_character(),
##   ..   RRMCS22a = col_character(),
##   ..   RRMCS23a = col_character(),
##   ..   RRMCS24a = col_character(),
##   ..   RRMCS25a = col_character(),
##   ..   RRMCS26a = col_character(),
##   ..   RRMCS27a = col_character(),
##   ..   RRMCS28a = col_character(),
##   ..   RRMCS29a = col_character(),
##   ..   RRMCS30a = col_character(),
##   ..   FMCI1 = col_character(),
##   ..   FMCI2 = col_character(),
##   ..   FMCI3 = col_character(),
##   ..   FMCI4 = col_character(),
##   ..   FMCI5 = col_character(),
##   ..   FMCI6 = col_character(),
##   ..   FMCI7 = col_character(),
##   ..   FMCI8 = col_character(),
##   ..   FMCI9 = col_character(),
##   ..   FMCI10 = col_character(),
##   ..   FMCI11 = col_character(),
##   ..   FMCI12 = col_character(),
##   ..   FMCI13 = col_character(),
##   ..   FMCI14 = col_character(),
##   ..   FMCI15 = col_character(),
##   ..   FMCI16 = col_character(),
##   ..   FMCI17 = col_character(),
##   ..   FMCI18 = col_character(),
##   ..   FMCI19 = col_character(),
##   ..   FMCI20 = col_character(),
##   ..   FMCI21 = col_character(),
##   ..   FMCI22 = col_character(),
##   ..   FMCI23 = col_character(),
##   ..   FMCI24 = col_character(),
##   ..   FMCI25 = col_character(),
##   ..   FMCI26 = col_character(),
##   ..   FMCI27 = col_character(),
##   ..   FMCI28 = col_character(),
##   ..   FMCI29 = col_character(),
##   ..   FMCI30 = col_character(),
##   ..   FMCI31 = col_character(),
##   ..   FMCI32 = col_character(),
##   ..   MWCS1 = col_character(),
##   ..   MWCS2 = col_character(),
##   ..   MWCS3 = col_character(),
##   ..   MWCS4 = col_character(),
##   ..   MWCS5 = col_character(),
##   ..   MWCS6 = col_character(),
##   ..   MWCS7 = col_character(),
##   ..   MWCS8 = col_character(),
##   ..   MWCS9 = col_character(),
##   ..   MWCS10 = col_character(),
##   ..   MWCS11 = col_character(),
##   ..   MWCS12 = col_character(),
##   ..   MWCS13 = col_character(),
##   ..   MWCS14 = col_character(),
##   ..   MWCS15 = col_character(),
##   ..   MWCS16 = col_character(),
##   ..   MWCS17 = col_character(),
##   ..   MWCS18 = col_character(),
##   ..   MWCS19 = col_character(),
##   ..   MWCS20 = col_character(),
##   ..   MWCS21 = col_character(),
##   ..   MWCS22 = col_character(),
##   ..   TCE1 = col_character(),
##   ..   TCE2 = col_character(),
##   ..   TCE3 = col_character(),
##   ..   TCE4 = col_character(),
##   ..   TCE5 = col_character(),
##   ..   TCE6 = col_character(),
##   ..   TCE7 = col_character(),
##   ..   TCE8 = col_character(),
##   ..   TCE9 = col_character(),
##   ..   TCE10 = col_character(),
##   ..   TCE11 = col_character(),
##   ..   TCE12 = col_character(),
##   ..   TCE13 = col_character(),
##   ..   TCE14 = col_character(),
##   ..   TCE15 = col_character(),
##   ..   TCE16 = col_character(),
##   ..   TCE17 = col_character(),
##   ..   TCE18 = col_character(),
##   ..   TCE19 = col_character(),
##   ..   TCE20 = col_character(),
##   ..   TCE21 = col_character(),
##   ..   TCE22 = col_character(),
##   ..   TCE23 = col_character(),
##   ..   TCE24 = col_character(),
##   ..   TCE25 = col_character(),
##   ..   TCE26 = col_character(),
##   ..   STPFaSL1 = col_character(),
##   ..   STPFaSL2 = col_character(),
##   ..   STPFaSL3 = col_character(),
##   ..   STPFaSL4 = col_character(),
##   ..   STPFaSL5 = col_character(),
##   ..   STPFaSL6 = col_character(),
##   ..   STPFaSL7 = col_character(),
##   ..   STPFaSL8 = col_character(),
##   ..   STPFaSL9 = col_character(),
##   ..   STPFaSL10 = col_character(),
##   ..   STPFaSL11 = col_character(),
##   ..   STPFaSL12 = col_character(),
##   ..   STPFaSL13 = col_character(),
##   ..   STPFaSL14 = col_character(),
##   ..   STPFaSL15 = col_character(),
##   ..   STPFaSL16 = col_character(),
##   ..   STPFaSL17 = col_character(),
##   ..   STPFaSL18 = col_character(),
##   ..   STPFaSL19 = col_character(),
##   ..   STPFaSL20 = col_character(),
##   ..   STPFaSL21 = col_character(),
##   ..   STPFaSL22 = col_character(),
##   ..   STPFaSL23 = col_character(),
##   ..   STPFaSL24 = col_character(),
##   ..   STPFaSL25 = col_character(),
##   ..   STPFaSL26 = col_character(),
##   ..   STPFaSL27 = col_character(),
##   ..   STPFaSL28 = col_character(),
##   ..   STPFaSL29 = col_character(),
##   ..   STPFaSL30 = col_character(),
##   ..   STPFaSL31 = col_character(),
##   ..   STPFaSL32 = col_character(),
##   ..   STPFaSL33 = col_character(),
##   ..   LABGR = col_double(),
##   ..   `SAAR-B1` = col_double(),
##   ..   `SAAR-B2` = col_double(),
##   ..   `SAAR-B3` = col_double(),
##   ..   `SAAR-B4` = col_double(),
##   ..   `SAAR-B5` = col_double(),
##   ..   `SAAR-B6` = col_double(),
##   ..   `SAAR-B7` = col_double(),
##   ..   `SAAR-B8` = col_double(),
##   ..   `SAAR-B9` = col_double(),
##   ..   `SAAR-F10` = col_double(),
##   ..   `SAAR-F11` = col_double(),
##   ..   `SAAR-G12` = col_double(),
##   ..   `SAAR-G13` = col_double(),
##   ..   `SAAR-G14` = col_double(),
##   ..   `SAAR-G15` = col_double(),
##   ..   `SAAR-G16` = col_double(),
##   ..   CLASS1 = col_double(),
##   ..   CLASS2 = col_double(),
##   ..   CLASS3 = col_double(),
##   ..   CLASS4 = col_double(),
##   ..   CLASS5 = col_double(),
##   ..   CLASS6 = col_double(),
##   ..   CLASS7 = col_double(),
##   ..   CLASS8 = col_double(),
##   ..   CLASS9 = col_double(),
##   ..   CLASS10 = col_double(),
##   ..   CLASS11 = col_double(),
##   ..   CLASS12 = col_double(),
##   ..   CLASS13 = col_double(),
##   ..   CLASS14 = col_double(),
##   ..   CLASS15 = col_double(),
##   ..   CLASS16 = col_double(),
##   ..   CLASS17 = col_double(),
##   ..   CLASS18 = col_double(),
##   ..   CLASS19 = col_double(),
##   ..   CLASS20 = col_double(),
##   ..   CLASS21 = col_double(),
##   ..   CLASS22 = col_double(),
##   ..   CLASS23 = col_double(),
##   ..   CLASS24 = col_double(),
##   ..   CLASS25 = col_double(),
##   ..   CLASS26 = col_double(),
##   ..   CLASS27 = col_double(),
##   ..   CLASS28 = col_double(),
##   ..   CLASS29 = col_double(),
##   ..   CLASS30 = col_double(),
##   ..   CLASS31 = col_double(),
##   ..   CLASS32 = col_double(),
##   ..   CLASS33 = col_double(),
##   ..   CLASS34 = col_double(),
##   ..   CLASS35 = col_double(),
##   ..   CLASS36 = col_double(),
##   ..   CLASS37 = col_double(),
##   ..   CLASS38 = col_double(),
##   ..   CLASS39 = col_double(),
##   ..   CLASS40 = col_double(),
##   ..   CLASS41 = col_double(),
##   ..   CLASS42 = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>
head(Data)
## # A tibble: 6 × 331
##      NO STUDID   SCH   COH   GDR   AGE FATHOCC MOTHOCC FATHEDU MOTHEDU FATHINC
##   <dbl> <chr>  <dbl> <dbl> <dbl> <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
## 1     1 A1001      1     1     1     3       1       9       4       5       7
## 2     2 A1002      1     1     2     1       4       8       4       4      10
## 3     3 A1003      1     1     1     2       4       8       3       4       2
## 4     4 A1004      1     1     2     3       1       1       2       2       6
## 5     5 A1005      1     1     1     2       1       1       3       3      10
## 6     6 A1006      1     1     2     2       1       7       4       2       9
## # ℹ 320 more variables: MOTHINC <dbl>, SIBL <dbl>, DOM <dbl>, LIT1 <dbl>,
## #   LIT2 <dbl>, PHYIDE1 <dbl>, PHYIDE2 <dbl>, FINTEST1 <dbl>, FINTEST2 <dbl>,
## #   TEACHPRED <dbl>, FCI1 <chr>, FCI2 <chr>, FCI3 <chr>, FCI4 <chr>,
## #   FCI5 <chr>, FCI6 <chr>, FCI7 <chr>, FCI8 <chr>, FCI9 <chr>, FCI10 <chr>,
## #   FCI11 <chr>, FCI12 <chr>, FCI13 <chr>, FCI14 <chr>, FCI15 <chr>,
## #   FCI16 <chr>, FCI17 <chr>, FCI18 <chr>, FCI19 <chr>, FCI20 <chr>,
## #   FCI21 <chr>, FCI22 <chr>, FCI23 <chr>, FCI24 <chr>, FCI25 <chr>, …

Membuat Data Analisis

sem_data <- Data %>%
  select(
    CLASS1, CLASS2, CLASS3, CLASS4,
    PHYIDE1, PHYIDE2,
    FCI1, FCI2, FCI3, FCI4
  )

Mengecek Missing Value

colSums(is.na(sem_data))
##  CLASS1  CLASS2  CLASS3  CLASS4 PHYIDE1 PHYIDE2    FCI1    FCI2    FCI3    FCI4 
##       0       0       0       0       0       0       0       0       0       0
#Jika terdapat missing value:
sem_data <- na.omit(sem_data)

Mengubah Tipe Data Menjadi Numeric

sem_data <- sem_data %>%
  mutate(across(everything(), as.numeric))
## Warning: There were 4 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `across(everything(), as.numeric)`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 3 remaining warnings.

Statistik Deskriptif

describe(sem_data)
## Warning in FUN(newX[, i], ...): no non-missing arguments to min; returning Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to min; returning Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to min; returning Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to min; returning Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to max; returning -Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to max; returning -Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to max; returning -Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to max; returning -Inf
##         vars   n mean   sd median trimmed  mad min  max range  skew kurtosis
## CLASS1     1 497 3.32 1.24      3    3.40 1.48   1    5     4 -0.41    -0.76
## CLASS2     2 497 3.32 1.27      4    3.40 1.48   1    5     4 -0.42    -0.84
## CLASS3     3 497 3.21 1.20      3    3.26 1.48   1    5     4 -0.28    -0.71
## CLASS4     4 497 3.48 1.36      4    3.60 1.48   1    5     4 -0.45    -0.99
## PHYIDE1    5 497 2.27 0.66      2    2.32 0.00   1    4     3 -0.06    -0.36
## PHYIDE2    6 497 1.13 0.38      1    1.02 0.00   1    3     2  2.97     8.60
## FCI1       7   0  NaN   NA     NA     NaN   NA Inf -Inf  -Inf    NA       NA
## FCI2       8   0  NaN   NA     NA     NaN   NA Inf -Inf  -Inf    NA       NA
## FCI3       9   0  NaN   NA     NA     NaN   NA Inf -Inf  -Inf    NA       NA
## FCI4      10   0  NaN   NA     NA     NaN   NA Inf -Inf  -Inf    NA       NA
##           se
## CLASS1  0.06
## CLASS2  0.06
## CLASS3  0.05
## CLASS4  0.06
## PHYIDE1 0.03
## PHYIDE2 0.02
## FCI1      NA
## FCI2      NA
## FCI3      NA
## FCI4      NA

Encode menjadi angka

Data <- Data %>%
  mutate(
    FCI1 = as.numeric(factor(FCI1)),
    FCI2 = as.numeric(factor(FCI2)),
    FCI3 = as.numeric(factor(FCI3)),
    FCI4 = as.numeric(factor(FCI4))
  )
sem_data <- Data %>%
  select(
    CLASS1,
    CLASS2,
    CLASS3,
    CLASS4,
    PHYIDE1,
    PHYIDE2,
    FCI1,
    FCI2,
    FCI3,
    FCI4
  )
str(sem_data)
## tibble [497 × 10] (S3: tbl_df/tbl/data.frame)
##  $ CLASS1 : num [1:497] 4 5 4 3 5 1 3 5 3 4 ...
##  $ CLASS2 : num [1:497] 5 3 2 2 2 1 3 4 5 5 ...
##  $ CLASS3 : num [1:497] 5 3 5 3 4 1 4 3 4 3 ...
##  $ CLASS4 : num [1:497] 3 4 5 5 3 1 4 5 5 5 ...
##  $ PHYIDE1: num [1:497] 3 2 2 3 3 2 1 2 2 2 ...
##  $ PHYIDE2: num [1:497] 1 2 1 1 1 1 1 1 1 1 ...
##  $ FCI1   : num [1:497] 3 3 4 4 4 4 4 4 1 3 ...
##  $ FCI2   : num [1:497] 5 4 4 4 4 1 4 2 4 4 ...
##  $ FCI3   : num [1:497] 2 2 3 3 5 1 2 2 5 2 ...
##  $ FCI4   : num [1:497] 1 5 5 5 1 5 4 1 1 1 ...

ASUMSI 1 NORMAL MULTIVARIAT (Mardia Test)

mvn_result <- mvn(
  sem_data,
  mvn_test = "mardia"
)

mvn_result$multivariate_normality
##              Test Statistic p.value     Method          MVN
## 1 Mardia Skewness  1263.407  <0.001 asymptotic ✗ Not normal
## 2 Mardia Kurtosis     3.759  <0.001 asymptotic ✗ Not normal

Meskipun asumsi normalitas multivariat tidak terpenuhi, analisis SEM masih dapat dilakukan karena jumlah sampel cukup besar (n = 497). Estimator yang lebih robust seperti Maximum Likelihood Robust (MLR) atau metode bootstrap dapat digunakan untuk mengatasi pelanggaran normalitas.

Normalitas

mvn_result <- MVN::mvn(sem_data)
mvn_result
## $multivariate_normality
##            Test Statistic p.value     Method          MVN
## 1 Henze-Zirkler     1.863  <0.001 asymptotic ✗ Not normal
## 
## $univariate_normality
##                Test Variable Statistic p.value    Normality
## 1  Anderson-Darling   CLASS1    18.181  <0.001 ✗ Not normal
## 2  Anderson-Darling   CLASS2    18.755  <0.001 ✗ Not normal
## 3  Anderson-Darling   CLASS3    16.956  <0.001 ✗ Not normal
## 4  Anderson-Darling   CLASS4    21.859  <0.001 ✗ Not normal
## 5  Anderson-Darling  PHYIDE1    48.095  <0.001 ✗ Not normal
## 6  Anderson-Darling  PHYIDE2   148.833  <0.001 ✗ Not normal
## 7  Anderson-Darling     FCI1    26.936  <0.001 ✗ Not normal
## 8  Anderson-Darling     FCI2    35.756  <0.001 ✗ Not normal
## 9  Anderson-Darling     FCI3    28.013  <0.001 ✗ Not normal
## 10 Anderson-Darling     FCI4    50.547  <0.001 ✗ Not normal
## 
## $descriptives
##    Variable   n  Mean Std.Dev Median Min Max 25th 75th   Skew Kurtosis
## 1    CLASS1 497 3.324   1.240      3   1   5    3    4 -0.416    2.254
## 2    CLASS2 497 3.324   1.274      4   1   5    2    4 -0.424    2.169
## 3    CLASS3 497 3.207   1.198      3   1   5    3    4 -0.284    2.301
## 4    CLASS4 497 3.481   1.359      4   1   5    3    5 -0.452    2.017
## 5   PHYIDE1 497 2.274   0.658      2   1   4    2    3 -0.060    2.651
## 6   PHYIDE2 497 1.133   0.384      1   1   3    1    1  2.976   11.644
## 7      FCI1 497 3.010   1.290      3   1   5    2    4 -0.380    1.964
## 8      FCI2 497 3.062   1.311      4   1   5    2    4 -0.448    1.819
## 9      FCI3 497 2.668   1.169      2   1   5    2    3  0.652    2.546
## 10     FCI4 497 2.654   1.728      2   1   5    1    5  0.329    1.325
## 
## $data
## # A tibble: 497 × 10
##    CLASS1 CLASS2 CLASS3 CLASS4 PHYIDE1 PHYIDE2  FCI1  FCI2  FCI3  FCI4
##     <dbl>  <dbl>  <dbl>  <dbl>   <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>
##  1      4      5      5      3       3       1     3     5     2     1
##  2      5      3      3      4       2       2     3     4     2     5
##  3      4      2      5      5       2       1     4     4     3     5
##  4      3      2      3      5       3       1     4     4     3     5
##  5      5      2      4      3       3       1     4     4     5     1
##  6      1      1      1      1       2       1     4     1     1     5
##  7      3      3      4      4       1       1     4     4     2     4
##  8      5      4      3      5       2       1     4     2     2     1
##  9      3      5      4      5       2       1     1     4     5     1
## 10      4      5      3      5       2       1     3     4     2     1
## # ℹ 487 more rows
## 
## $subset
## NULL
## 
## $outlierMethod
## [1] "none"
## 
## attr(,"class")
## [1] "mvn"

ASUMSI 2 KMO / MSA

Matriks Korelasi

cor_matrix <- cor(sem_data)

cor_matrix
##               CLASS1       CLASS2      CLASS3       CLASS4      PHYIDE1
## CLASS1   1.000000000  0.645569800  0.46909803  0.537801994  0.054211229
## CLASS2   0.645569800  1.000000000  0.52672454  0.529404714  0.016700549
## CLASS3   0.469098035  0.526724542  1.00000000  0.548004705 -0.051629157
## CLASS4   0.537801994  0.529404714  0.54800471  1.000000000 -0.100097049
## PHYIDE1  0.054211229  0.016700549 -0.05162916 -0.100097049  1.000000000
## PHYIDE2  0.015314261  0.006671489 -0.10809763 -0.095509732  0.190877760
## FCI1     0.035775425 -0.005669511  0.01430910  0.009887743 -0.005626064
## FCI2    -0.008729755  0.004776397  0.01742322 -0.021388359  0.113344842
## FCI3    -0.039690951  0.008731026 -0.05009788 -0.017322389 -0.109647483
## FCI4    -0.020966669 -0.085455446 -0.08705218 -0.045757545 -0.019389252
##               PHYIDE2         FCI1         FCI2         FCI3          FCI4
## CLASS1   0.0153142607  0.035775425 -0.008729755 -0.039690951 -0.0209666691
## CLASS2   0.0066714891 -0.005669511  0.004776397  0.008731026 -0.0854554460
## CLASS3  -0.1080976304  0.014309098  0.017423222 -0.050097881 -0.0870521826
## CLASS4  -0.0955097316  0.009887743 -0.021388359 -0.017322389 -0.0457575455
## PHYIDE1  0.1908777604 -0.005626064  0.113344842 -0.109647483 -0.0193892517
## PHYIDE2  1.0000000000 -0.084069750 -0.044475814 -0.058727921 -0.0004827359
## FCI1    -0.0840697498  1.000000000  0.185588195  0.115856133  0.1038159757
## FCI2    -0.0444758145  0.185588195  1.000000000 -0.010133947 -0.2751998217
## FCI3    -0.0587279207  0.115856133 -0.010133947  1.000000000  0.0976978148
## FCI4    -0.0004827359  0.103815976 -0.275199822  0.097697815  1.0000000000

Uji KMO

kmo_result <- KMO(cor_matrix)

kmo_result
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor_matrix)
## Overall MSA =  0.72
## MSA for each item = 
##  CLASS1  CLASS2  CLASS3  CLASS4 PHYIDE1 PHYIDE2    FCI1    FCI2    FCI3    FCI4 
##    0.75    0.75    0.81    0.80    0.50    0.55    0.43    0.45    0.52    0.47

Interpretasi MSA

kmo_result$MSAi
##    CLASS1    CLASS2    CLASS3    CLASS4   PHYIDE1   PHYIDE2      FCI1      FCI2 
## 0.7527646 0.7549177 0.8114198 0.8020779 0.4981213 0.5527411 0.4253460 0.4460941 
##      FCI3      FCI4 
## 0.5156948 0.4684201

MEMBUAT DATA BARU TANPA INDIKATOR MSA < 0.50

sem_data2 <- sem_data %>%
  select(
    CLASS1,
    CLASS2,
    CLASS3,
    CLASS4,
    PHYIDE1,
    PHYIDE2,
    FCI3
  )
str(sem_data2)
## tibble [497 × 7] (S3: tbl_df/tbl/data.frame)
##  $ CLASS1 : num [1:497] 4 5 4 3 5 1 3 5 3 4 ...
##  $ CLASS2 : num [1:497] 5 3 2 2 2 1 3 4 5 5 ...
##  $ CLASS3 : num [1:497] 5 3 5 3 4 1 4 3 4 3 ...
##  $ CLASS4 : num [1:497] 3 4 5 5 3 1 4 5 5 5 ...
##  $ PHYIDE1: num [1:497] 3 2 2 3 3 2 1 2 2 2 ...
##  $ PHYIDE2: num [1:497] 1 2 1 1 1 1 1 1 1 1 ...
##  $ FCI3   : num [1:497] 2 2 3 3 5 1 2 2 5 2 ...

KMO UNTUK DATA BARU

cor_matrix2 <- cor(sem_data2)
cor_matrix2
##              CLASS1      CLASS2      CLASS3      CLASS4     PHYIDE1
## CLASS1   1.00000000 0.645569800  0.46909803  0.53780199  0.05421123
## CLASS2   0.64556980 1.000000000  0.52672454  0.52940471  0.01670055
## CLASS3   0.46909803 0.526724542  1.00000000  0.54800471 -0.05162916
## CLASS4   0.53780199 0.529404714  0.54800471  1.00000000 -0.10009705
## PHYIDE1  0.05421123 0.016700549 -0.05162916 -0.10009705  1.00000000
## PHYIDE2  0.01531426 0.006671489 -0.10809763 -0.09550973  0.19087776
## FCI3    -0.03969095 0.008731026 -0.05009788 -0.01732239 -0.10964748
##              PHYIDE2         FCI3
## CLASS1   0.015314261 -0.039690951
## CLASS2   0.006671489  0.008731026
## CLASS3  -0.108097630 -0.050097881
## CLASS4  -0.095509732 -0.017322389
## PHYIDE1  0.190877760 -0.109647483
## PHYIDE2  1.000000000 -0.058727921
## FCI3    -0.058727921  1.000000000
kmo_result2 <- KMO(cor_matrix2)

# hasil KMO keseluruhan
kmo_result2
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor_matrix2)
## Overall MSA =  0.76
## MSA for each item = 
##  CLASS1  CLASS2  CLASS3  CLASS4 PHYIDE1 PHYIDE2    FCI3 
##    0.76    0.76    0.81    0.80    0.51    0.56    0.48
kmo_result2$MSAi
##    CLASS1    CLASS2    CLASS3    CLASS4   PHYIDE1   PHYIDE2      FCI3 
## 0.7581613 0.7575543 0.8096925 0.8008859 0.5104111 0.5562370 0.4766117

MEMBUAT DATA BARU

sem_data3 <- sem_data %>%
  select(
    CLASS1,
    CLASS2,
    CLASS3,
    CLASS4,
    PHYIDE1,
    PHYIDE2
  )

KMO

cor_matrix3 <- cor(sem_data3)

kmo_result3 <- KMO(cor_matrix3)

kmo_result3
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = cor_matrix3)
## Overall MSA =  0.77
## MSA for each item = 
##  CLASS1  CLASS2  CLASS3  CLASS4 PHYIDE1 PHYIDE2 
##    0.76    0.76    0.81    0.80    0.49    0.55
kmo_result3$MSAi
##    CLASS1    CLASS2    CLASS3    CLASS4   PHYIDE1   PHYIDE2 
## 0.7581605 0.7617605 0.8132783 0.8002812 0.4944954 0.5467396

Nilai tersebut berada di atas 0,70 sehingga dapat disimpulkan bahwa data memiliki tingkat kecukupan sampel yang baik dan layak digunakan untuk analisis faktor maupun Structural Equation Modeling (SEM).

Indikator PHYIDE1 memiliki nilai MSA sebesar 0,49 yang sedikit berada di bawah batas umum 0,50. Namun karena nilainya sangat mendekati batas minimum dan konstruk Physics_Identity hanya memiliki dua indikator, maka indikator tersebut masih dapat dipertahankan dalam model penelitian.

ASUMSI 3 — MULTIKOLINEARITAS (VIF)

vif_model <- lm(
  FCI1 ~ CLASS1 + CLASS2 + CLASS3 + CLASS4 +
    PHYIDE1 + PHYIDE2 +
    FCI2 + FCI3 + FCI4,
  data = sem_data
)

Menghitung VIF

vif(vif_model)
##   CLASS1   CLASS2   CLASS3   CLASS4  PHYIDE1  PHYIDE2     FCI2     FCI3 
## 1.939245 2.014044 1.652028 1.762358 1.087969 1.065676 1.103168 1.031978 
##     FCI4 
## 1.107508

Karena seluruh nilai VIF berada pada rentang sekitar 1–2, maka dapat disimpulkan bahwa tidak terdapat masalah multikolinearitas antar variabel dalam model penelitian.

Hal ini menunjukkan bahwa antar variabel independen tidak memiliki korelasi yang terlalu tinggi sehingga layak digunakan dalam analisis SEM.

MODEL SEM

model_sem <- '
# Variabel laten
  Classroom =~ CLASS1 + CLASS2 + CLASS3 + CLASS4
  PhysicsIdentity =~ PHYIDE1 + PHYIDE2

# Hubungan struktural
  PhysicsIdentity ~ Classroom
'

Estimator robust Maximum Likelihood Robust (MLR)

Karena data tidak memenuhi asumsi normalitas multivariat berdasarkan uji Mardia, maka estimasi model dilakukan menggunakan Maximum Likelihood Robust (MLR) yang memberikan koreksi terhadap ketidaknormalan data pada standard error dan uji signifikansi.

ESTIMASI MODEL

fit_sem <- sem(
  model_sem,
  data = sem_data3,
  estimator = "MLR"
)

HASIL

summary(
  fit_sem,
  fit.measures = TRUE,
  standardized = TRUE,
  rsquare = TRUE
)
## lavaan 0.6-21 ended normally after 73 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        13
## 
##   Number of observations                           497
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                44.499      38.457
##   Degrees of freedom                                 8           8
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.157
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                               762.232     656.140
##   Degrees of freedom                                15          15
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.162
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.951       0.952
##   Tucker-Lewis Index (TLI)                       0.908       0.911
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.953
##   Robust Tucker-Lewis Index (TLI)                            0.911
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3655.508   -3655.508
##   Scaling correction factor                                  1.284
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)      -3633.259   -3633.259
##   Scaling correction factor                                  1.235
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                7337.016    7337.016
##   Bayesian (BIC)                              7391.728    7391.728
##   Sample-size adjusted Bayesian (SABIC)       7350.465    7350.465
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.096       0.088
##   90 Percent confidence interval - lower         0.069       0.063
##   90 Percent confidence interval - upper         0.124       0.114
##   P-value H_0: RMSEA <= 0.050                    0.003       0.008
##   P-value H_0: RMSEA >= 0.080                    0.847       0.711
##                                                                   
##   Robust RMSEA                                               0.094
##   90 Percent confidence interval - lower                     0.066
##   90 Percent confidence interval - upper                     0.125
##   P-value H_0: Robust RMSEA <= 0.050                         0.007
##   P-value H_0: Robust RMSEA >= 0.080                         0.806
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.043       0.043
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                      Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Classroom =~                                                            
##     CLASS1              1.000                               0.953    0.769
##     CLASS2              1.063    0.045   23.547    0.000    1.013    0.796
##     CLASS3              0.843    0.057   14.728    0.000    0.803    0.671
##     CLASS4              1.010    0.057   17.590    0.000    0.963    0.709
##   PhysicsIdentity =~                                                      
##     PHYIDE1             1.000                               0.157    0.239
##     PHYIDE2             1.954    7.460    0.262    0.793    0.307    0.799
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   PhysicsIdentity ~                                                      
##     Classroom         -0.009    0.037   -0.252    0.801   -0.056   -0.056
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .CLASS1            0.626    0.068    9.220    0.000    0.626    0.408
##    .CLASS2            0.592    0.074    8.055    0.000    0.592    0.366
##    .CLASS3            0.787    0.063   12.554    0.000    0.787    0.549
##    .CLASS4            0.917    0.081   11.369    0.000    0.917    0.497
##    .PHYIDE1           0.408    0.098    4.174    0.000    0.408    0.943
##    .PHYIDE2           0.053    0.361    0.148    0.883    0.053    0.361
##     Classroom         0.909    0.096    9.494    0.000    1.000    1.000
##    .PhysicsIdentty    0.025    0.094    0.262    0.793    0.997    0.997
## 
## R-Square:
##                    Estimate
##     CLASS1            0.592
##     CLASS2            0.634
##     CLASS3            0.451
##     CLASS4            0.503
##     PHYIDE1           0.057
##     PHYIDE2           0.639
##     PhysicsIdentty    0.003

Analisis Structural Equation Modeling (SEM) dilakukan menggunakan metode estimasi Maximum Likelihood Robust (MLR) karena data tidak memenuhi asumsi normalitas multivariat. Model diestimasi menggunakan 497 observasi dan menghasilkan konvergensi yang baik setelah 73 iterasi.

Berdasarkan hasil analisis SEM, model penelitian memiliki tingkat kecocokan yang cukup baik meskipun nilai RMSEA masih relatif tinggi. Konstruk Classroom berhasil diukur dengan baik oleh seluruh indikatornya. Namun, hubungan struktural antara Classroom dan PhysicsIdentity tidak signifikan. Selain itu, nilai R-square yang sangat kecil menunjukkan bahwa Classroom bukan merupakan faktor utama yang memengaruhi PhysicsIdentity pada data penelitian ini.

# Standardized solution
standardizedSolution(fit_sem)
##                lhs op             rhs est.std    se      z pvalue ci.lower
## 1        Classroom =~          CLASS1   0.769 0.030 25.617  0.000    0.711
## 2        Classroom =~          CLASS2   0.796 0.028 27.988  0.000    0.741
## 3        Classroom =~          CLASS3   0.671 0.036 18.896  0.000    0.602
## 4        Classroom =~          CLASS4   0.709 0.033 21.510  0.000    0.644
## 5  PhysicsIdentity =~         PHYIDE1   0.239 0.457  0.523  0.601   -0.657
## 6  PhysicsIdentity =~         PHYIDE2   0.799 1.531  0.522  0.602   -2.201
## 7  PhysicsIdentity  ~       Classroom  -0.056 0.120 -0.467  0.641   -0.292
## 8           CLASS1 ~~          CLASS1   0.408 0.046  8.827  0.000    0.317
## 9           CLASS2 ~~          CLASS2   0.366 0.045  8.070  0.000    0.277
## 10          CLASS3 ~~          CLASS3   0.549 0.048 11.521  0.000    0.456
## 11          CLASS4 ~~          CLASS4   0.497 0.047 10.640  0.000    0.406
## 12         PHYIDE1 ~~         PHYIDE1   0.943 0.218  4.321  0.000    0.515
## 13         PHYIDE2 ~~         PHYIDE2   0.361 2.447  0.148  0.883   -4.434
## 14       Classroom ~~       Classroom   1.000 0.000     NA     NA    1.000
## 15 PhysicsIdentity ~~ PhysicsIdentity   0.997 0.013 73.939  0.000    0.970
##    ci.upper
## 1     0.828
## 2     0.852
## 3     0.741
## 4     0.774
## 5     1.134
## 6     3.799
## 7     0.180
## 8     0.499
## 9     0.455
## 10    0.643
## 11    0.589
## 12    1.371
## 13    5.157
## 14    1.000
## 15    1.023
# Menampilkan nilai R-square
inspect(fit_sem, "r2")
##          CLASS1          CLASS2          CLASS3          CLASS4         PHYIDE1 
##           0.592           0.634           0.451           0.503           0.057 
##         PHYIDE2 PhysicsIdentity 
##           0.639           0.003
# Modification Indices
modindices(fit_sem, sort = TRUE, minimum.value = 3.84)
##                lhs op     rhs     mi    epc sepc.lv sepc.all sepc.nox
## 22          CLASS1 ~~  CLASS2 20.702  0.299   0.299    0.491    0.491
## 31          CLASS3 ~~  CLASS4 18.035  0.223   0.223    0.263    0.263
## 28          CLASS2 ~~  CLASS4 12.797 -0.230  -0.230   -0.312   -0.312
## 23          CLASS1 ~~  CLASS3 12.739 -0.180  -0.180   -0.256   -0.256
## 34          CLASS4 ~~ PHYIDE1  7.994 -0.088  -0.088   -0.143   -0.143
## 20 PhysicsIdentity =~  CLASS3  7.050 -0.917  -0.144   -0.120   -0.120
## 21 PhysicsIdentity =~  CLASS4  6.522 -0.975  -0.153   -0.113   -0.113
## 33          CLASS3 ~~ PHYIDE2  5.496 -0.038  -0.038   -0.188   -0.188
## 25          CLASS1 ~~ PHYIDE1  5.385  0.063   0.063    0.125    0.125
## 18 PhysicsIdentity =~  CLASS1  5.320  0.771   0.121    0.098    0.098
## 19 PhysicsIdentity =~  CLASS2  4.081  0.685   0.108    0.084    0.084

Visualisasi

semPaths(
  fit_sem,
  what = "std",
  layout = "tree",
  edge.label.cex = 0.8,
  sizeMan = 6,
  sizeLat = 8,
  residuals = FALSE,
  intercepts = FALSE
)

Hasil lengkap SEM

summary(fit_sem, fit.measures = TRUE, standardized = TRUE, rsquare = TRUE)
## lavaan 0.6-21 ended normally after 73 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        13
## 
##   Number of observations                           497
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                44.499      38.457
##   Degrees of freedom                                 8           8
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.157
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                               762.232     656.140
##   Degrees of freedom                                15          15
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.162
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.951       0.952
##   Tucker-Lewis Index (TLI)                       0.908       0.911
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.953
##   Robust Tucker-Lewis Index (TLI)                            0.911
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -3655.508   -3655.508
##   Scaling correction factor                                  1.284
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)      -3633.259   -3633.259
##   Scaling correction factor                                  1.235
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                7337.016    7337.016
##   Bayesian (BIC)                              7391.728    7391.728
##   Sample-size adjusted Bayesian (SABIC)       7350.465    7350.465
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.096       0.088
##   90 Percent confidence interval - lower         0.069       0.063
##   90 Percent confidence interval - upper         0.124       0.114
##   P-value H_0: RMSEA <= 0.050                    0.003       0.008
##   P-value H_0: RMSEA >= 0.080                    0.847       0.711
##                                                                   
##   Robust RMSEA                                               0.094
##   90 Percent confidence interval - lower                     0.066
##   90 Percent confidence interval - upper                     0.125
##   P-value H_0: Robust RMSEA <= 0.050                         0.007
##   P-value H_0: Robust RMSEA >= 0.080                         0.806
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.043       0.043
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                      Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   Classroom =~                                                            
##     CLASS1              1.000                               0.953    0.769
##     CLASS2              1.063    0.045   23.547    0.000    1.013    0.796
##     CLASS3              0.843    0.057   14.728    0.000    0.803    0.671
##     CLASS4              1.010    0.057   17.590    0.000    0.963    0.709
##   PhysicsIdentity =~                                                      
##     PHYIDE1             1.000                               0.157    0.239
##     PHYIDE2             1.954    7.460    0.262    0.793    0.307    0.799
## 
## Regressions:
##                     Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   PhysicsIdentity ~                                                      
##     Classroom         -0.009    0.037   -0.252    0.801   -0.056   -0.056
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .CLASS1            0.626    0.068    9.220    0.000    0.626    0.408
##    .CLASS2            0.592    0.074    8.055    0.000    0.592    0.366
##    .CLASS3            0.787    0.063   12.554    0.000    0.787    0.549
##    .CLASS4            0.917    0.081   11.369    0.000    0.917    0.497
##    .PHYIDE1           0.408    0.098    4.174    0.000    0.408    0.943
##    .PHYIDE2           0.053    0.361    0.148    0.883    0.053    0.361
##     Classroom         0.909    0.096    9.494    0.000    1.000    1.000
##    .PhysicsIdentty    0.025    0.094    0.262    0.793    0.997    0.997
## 
## R-Square:
##                    Estimate
##     CLASS1            0.592
##     CLASS2            0.634
##     CLASS3            0.451
##     CLASS4            0.503
##     PHYIDE1           0.057
##     PHYIDE2           0.639
##     PhysicsIdentty    0.003

Hasil SEM menunjukkan model cukup fit (CFI = 0,951; TLI = 0,908; SRMR = 0,043), meskipun RMSEA masih kurang baik (0,096). Indikator Classroom valid dan reliabel, sedangkan PhysicsIdentity kurang kuat (terutama PHYIDE1). Hubungan Classroom → PhysicsIdentity tidak signifikan (p = 0,801) dengan R-square sangat rendah (0,003), sehingga pengaruhnya hampir tidak ada.