Tài liệu tham khảo
  • Phần mềm hữu ích
  • Vẽ đồ thị
  • Duc Nguyen

Mục lục

  • 1 Import dataset
  • 2 So sánh kết quả giữa chạy SEM bằng lavaan và linear regression
    • 2.1 Phân tích theo kiểu SEM

Example 1 | SEM [draft]

SEM
example
Author

Duc Nguyen

Published

January 7, 2026

Nội dung này được tham khảo ở phần 2.6 Model Fitting Using lavaan

1 Import dataset

library(lavaan)
library(piecewiseSEM)

data(keeley)

head(keeley)
  distance elev  abiotic age   hetero firesev     cover rich
1 53.40900 1225 60.67103  40 0.757065    3.50 1.0387974   51
2 37.03745   60 40.94291  25 0.491340    4.05 0.4775924   31
3 53.69565  200 50.98805  15 0.844485    2.60 0.9489357   71
4 53.69565  200 61.15633  15 0.690847    2.90 1.1949002   64
5 51.95985  970 46.66807  23 0.545628    4.30 1.2981890   68
6 51.95985  970 39.82357  24 0.652895    4.00 1.1734866   34

Dữ liệu này gồm 90 observations of 8 variables. Paper

Nghiên cứu này khảo sát mối quan hệ giữa rich (độ đa dạng thực vật) với các yếu tố khác như distance (khoảng cách từ khu rừng đến bờ biển), elev (độ cao so với mực nước biển), … trong chủ đề kiểm soát cháy rừng ở California.

distance: Distance to coast

elev: Elevation from sea level

abiotic: Abiotic favorability

age: Age of stand before fire

hetero: Plot heterogeneity

firesev: Severity of fire

cover: Cover of plants

rich: Plant species richness

2 So sánh kết quả giữa chạy SEM bằng lavaan và linear regression

Đầu tiên, ta khảo sát mối quan hệ giữa age độ tuổi của thực vật với firesev mức độ dễ cháy. Dễ nhìn ra, cây có độ tuổi càng cao thì thân và vỏ cây càng khô, dễ mục và từ đó dễ bắt lửa. Vì vậy biến X = age, biến Y = firesev.

Ta mô tả quan hệ giữa hai biến này như sau. Chiều mũi tên, cho thấy nguyên nhân age tác động đến kết quả firesev [biến nội sinh, endogenous (response) variable].

plot(firesev ~ age,
     data = keeley,
     las = 1,
     main = "Mối quan hệ giữa firesev và age")

fit <- lm(firesev ~ age, data = keeley)

abline(fit, col = "red")

var(keeley$age)
[1] 157.9112
var(keeley$firesev)
[1] 2.73025
cov(keeley$age, keeley$firesev)
[1] 9.423989
cor(keeley$age, keeley$firesev)
[1] 0.4538654

2.1 Phân tích theo kiểu SEM

Bản chất mối quan hệ này, ta có thể phân tích theo kiểu hồi quy tuyến tính để tìm ra tác động của biến age với biến firesev, và đó cũng là một mô hình SEM (về cơ bản SEM là mô hình hồi quy tuyến tính).

The package to fit the SEM using covariance-based methods is called lavaan (for LAtent VAriable ANalysis, which we will delve into in a later chapter).

keeley_formula1 <- 'firesev ~ age'

class(keeley_formula1)
[1] "character"
keeley_sem1 <- sem(keeley_formula1, 
                   data = keeley)

summary(keeley_sem1)
lavaan 0.6-20 ended normally after 1 iteration

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                         2

  Number of observations                            90

Model Test User Model:
                                                      
  Test statistic                                 0.000
  Degrees of freedom                                 0

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Expected
  Information saturated (h1) model          Structured

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)
  firesev ~                                           
    age               0.060    0.012    4.832    0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)
   .firesev           2.144    0.320    6.708    0.000

https://tuanvanle.wordpress.com/2011/09/12/c%C6%A1-s%E1%BB%9F-ly-thuy%E1%BA%BFt-c%E1%BB%A7a-mo-hinh-m%E1%BA%A1ng-sem-ph%E1%BA%A7n-1/