messenger_logo
Liên hệ qua Messenger
SciEco

[[img_1]]: image 1

I
IEFPA
Ngày viết: 03/07/2026

SO SÁNH NHÓM TRONG MÔ HÌNH PHƯƠNG TRÌNH CẤU TRÚC: KIỂM ĐỊNH TÍNH BẤT BIẾN ĐO LƯỜNG

Khi xây dựng hầu hết các mô hình thống kê, chúng ta thường quan tâm đến việc liệu các tham số có sự khác biệt giữa các nhóm đối tượng hay không, ví dụ như giữa các thời kỳ, nhóm tuổi, giới tính hoặc trường học. Nói cách khác, chúng ta muốn kiểm định vai trò điều tiết khi biến điều tiết là một biến phân loại. Đối với mô hình hồi quy, việc này vô cùng đơn giản bằng cách đưa các biến chỉ báo nhóm vào mô hình và cho chúng tương tác với các biến dự báo khác.

Chúng ta cũng có những giả thuyết tương tự về sự khác biệt tham số giữa các nhóm khi thực hiện ước lượng mô hình phương trình cấu trúc. Khi các mô hình này chứa các biến ẩn và các biến quan sát tương ứng, chúng ta có thể kiểm định xem các phép đo lường đó có đồng nhất giữa các nhóm hay không. Quá trình đánh giá tính bất biến đo lường (measurement invariance) thường bao gồm một chuỗi các kiểm định về tính bằng nhau của các hệ số đo lường, tính bằng nhau của các hệ số chặn và tính bằng nhau của các phương sai sai số giữa các nhóm đối tượng.

Trong bài viết này, chúng tôi sẽ hướng dẫn cách sử dụng tùy chọn group và ginvariant của lệnh sem, cùng với lệnh hậu ước lượng estat ginvariant trong phần mềm Stata để thực hiện các kiểm định tính bất biến đo lường một cách nhanh chóng và chính xác.

Ví dụ thực tế về tính bất biến đo lường

Chúng tôi sử dụng bộ dữ liệu nổi tiếng của Holzinger và Swineford công bố năm 1939. Bộ dữ liệu này ghi lại điểm số của học sinh trong một số kỳ thi được thiết kế để đo lường các loại năng lực khác nhau. Học sinh trong tập dữ liệu này đến từ hai trường khác nhau là trường Pasteur và trường Grant-White, và mục tiêu của chúng ta là kiểm định sự khác biệt giữa hai trường này. Bài viết tập trung vào ba bài thi được thiết kế để đo lường năng lực không gian. Chúng ta sẽ ước lượng mô hình nhân tố khẳng định tương ứng với sơ đồ đường dẫn dưới đây và thực hiện một chuỗi các kiểm định tính bất biến đo lường. Mặc dù ví dụ này sử dụng lệnh sem bằng dòng lệnh, bạn hoàn toàn có thể vẽ sơ đồ này trong trình dựng mô hình của Stata và chọn phân tích nhóm để thực hiện tất cả các bước tương tự.

Để bắt đầu, chúng ta ước lượng một mô hình trong đó tất cả các tham số được tính toán riêng biệt cho từng nhóm. Có nhiều cách để thiết lập các ràng buộc định danh cần thiết nhằm xác định thang đo và vị trí cho biến ẩn. Ở đây, chúng ta thiết lập giá trị trung bình của biến ẩn Spatial bằng 0 và phương sai bằng 1 ở cả hai nhóm.

1. sem (Spatial -> visual cubes paper), 
2> variance(Spatial@1) mean(Spatial@0) ginvariant(none) group(school)
3Endogenous variables
4Measurement:  visual cubes paper
5Exogenous variables
6Latent:       Spatial
7Fitting target model:
8Iteration 0:   log likelihood = -2603.5782
9Iteration 1:   log likelihood = -2603.5782
10Structural equation model                       Number of obs     =        301
11Grouping variable  = school                     Number of groups  =          2
12Estimation method  = ml
13Log likelihood     = -2603.5782
14 ( 1)  [var(Spatial)]1bn.school = 1
15 ( 2)  [mean(Spatial)]1bn.school = 0
16 ( 3)  [var(Spatial)]2.school = 1
17 ( 4)  [mean(Spatial)]2.school = 0
18-------------------------------------------------------------------------------
19              |                 OIM
20              |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
21--------------+----------------------------------------------------------------
22Measurement   |
23  visual <-   |
24      Spatial |
25     Pasteur  |   4.264065   .8600633     4.96   0.000     2.578372    5.949759
26  Grant-Wh~e  |    5.49895   1.190435     4.62   0.000     3.165739     7.83216
27        _cons |
28     Pasteur  |   29.64744   .5674293    52.25   0.000     28.53529    30.75958
29  Grant-Wh~e  |   29.57931   .5721785    51.70   0.000     28.45786    30.70076
30  ------------+----------------------------------------------------------------
31  cubes <-    |
32      Spatial |
33     Pasteur  |    2.26321   .5214501     4.34   0.000     1.241187    3.285234
34  Grant-Wh~e  |   1.808245   .5031516     3.59   0.000     .8220861    2.794404
35        _cons |
36     Pasteur  |    23.9359   .3927222    60.95   0.000     23.16618    24.70562
37  Grant-Wh~e  |       24.8   .3678649    67.42   0.000       24.079      25.521
38  ------------+----------------------------------------------------------------
39  paper <-    |
40      Spatial |
41     Pasteur  |   1.695466   .3429472     4.94   0.000     1.023302     2.36763
42  Grant-Wh~e  |   1.311235   .3413206     3.84   0.000     .6422592    1.980211
43        _cons |
44     Pasteur  |   14.16026    .227089    62.36   0.000     13.71517    14.60534
45  Grant-Wh~e  |   14.30345   .2335324    61.25   0.000     13.84573    14.76116
46--------------+----------------------------------------------------------------
47 mean(Spatial)|
48          [*] |          0  (constrained)
49--------------+----------------------------------------------------------------
50 var(e.visual)|
51     Pasteur  |   32.04601   6.912718                       20.9971    48.90898
52 Grant-White  |   17.23285   12.18676                      4.309258    68.91467
53  var(e.cubes)|
54     Pasteur  |   18.93787   2.710244                      14.30585    25.06967
55 Grant-White  |   16.35232   2.318816                      12.38443    21.59149
56  var(e.paper)|
57     Pasteur  |   5.170226    1.09911                      3.408453    7.842631
58 Grant-White  |   6.188581   .9975804                      4.512114    8.487938
59  var(Spatial)|
60          [*] |          1  (constrained)
61-------------------------------------------------------------------------------
62Note: [*] identifies parameter estimates constrained to be equal across groups.
63LR test of model vs. saturated: chi2(0)   =      0.00, Prob > chi2 =      .

Khi quan sát kết quả đầu ra này, chúng ta nhận thấy rằng nhiều ước lượng tham số rất tương đồng giữa hai trường học. Để tiến hành các kiểm định chính thức về tính bất biến giữa các nhóm, chúng ta sử dụng lệnh estat ginvariant.

1. estat ginvariant, showpclass(mcoef) class
2Tests for group invariance of parameters
3------------------------------------------------------------------------------
4             |            Wald Test                       Score Test
5             |      chi2         df    p>chi2       chi2          df    p>chi2
6-------------+----------------------------------------------------------------
7Measurement  |
8  visual <-  |
9     Spatial |     0.707          1    0.4004          .           .         .
10  -----------+----------------------------------------------------------------
11  cubes <-   |
12     Spatial |     0.394          1    0.5301          .           .         .
13  -----------+----------------------------------------------------------------
14  paper <-   |
15     Spatial |     0.631          1    0.4271          .           .         .
16------------------------------------------------------------------------------
17Joint tests for each parameter class
18------------------------------------------------------------------------------
19             |            Wald Test                       Score Test
20             |      chi2         df    p>chi2       chi2          df    p>chi2
21-------------+----------------------------------------------------------------
22       mcoef |     1.097          3    0.7778          .           .         .
23------------------------------------------------------------------------------

Các tùy chọn showpclass và class giúp giới hạn kết quả kiểm định đối với các hệ số đo lường, đồng thời yêu cầu thực hiện một kiểm định đồng thời cho giả thuyết rằng toàn bộ các hệ số đo lường đều bằng nhau giữa các nhóm. Bảng đầu tiên báo cáo các kiểm định riêng biệt cho từng hệ số đo lường. Tuy nhiên, trọng tâm của chúng ta lúc này là kiểm định Wald đồng thời ở bảng thứ hai. Với p-value bằng 0.7778, chúng ta không có đủ bằng chứng để bác bỏ giả thuyết về sự bằng nhau giữa các nhóm đối với tất cả các hệ số đo lường.

Thiết lập các ràng buộc tham số đo lường

Bước tiếp theo là đưa tùy chọn ginvariant vào mô hình để áp dụng ràng buộc bằng nhau cho các hệ số đo lường giữa các nhóm.

1. sem (Spatial -> visual cubes paper), variance(Spatial@1) /// 
2       mean(Spatial@0) ginvariant(mcoef) group(school)

Sau đó, chúng ta tiến hành kiểm định xem các hệ số chặn có thể được ràng buộc bằng nhau giữa hai nhóm hay không:

1. estat ginvariant, showpclass(mcons) class
2Tests for group invariance of parameters
3------------------------------------------------------------------------------
4             |            Wald Test                       Score Test
5             |      chi2         df    p>chi2       chi2          df    p>chi2
6-------------+----------------------------------------------------------------
7Measurement  |
8  visual <-  |
9       _cons |     0.007          1    0.9326          .           .         .
10  -----------+----------------------------------------------------------------
11  cubes <-   |
12       _cons |     2.580          1    0.1082          .           .         .
13  -----------+----------------------------------------------------------------
14  paper <-   |
15       _cons |     0.193          1    0.6605          .           .         .
16------------------------------------------------------------------------------
17Joint tests for each parameter class
18------------------------------------------------------------------------------
19             |            Wald Test                       Score Test
20             |      chi2         df    p>chi2       chi2          df    p>chi2
21-------------+----------------------------------------------------------------
22       mcons |     3.011          3    0.3900          .           .         .
23------------------------------------------------------------------------------

Kết quả cho thấy chúng ta không bác bỏ giả thuyết không rằng tất cả các hệ số chặn bằng nhau giữa các nhóm. Do đó, chúng ta tiến hành ước lượng mô hình mới chứa cả hai ràng buộc này bằng cách bổ sung mcons vào tùy chọn ginvariant.

1. sem (Spatial -> visual cubes paper), variance(Spatial@1) /// 
2      mean(Spatial@0) ginvariant(mcoef mcons) group(school)

Đánh giá tính bất biến của phương sai sai số

Sau khi đã thiết lập ràng buộc cho hệ số đo lường và hệ số chặn, chúng ta tiếp tục kiểm định tính bằng nhau của các phương sai sai số đo lường giữa hai nhóm.

1. estat ginvariant, showpclass(merrvar) class
2Tests for group invariance of parameters
3------------------------------------------------------------------------------
4             |            Wald Test                       Score Test
5             |      chi2         df    p>chi2       chi2          df    p>chi2
6-------------+----------------------------------------------------------------
7var(e.visual)|     0.359          1    0.5493          .           .         .
8 var(e.cubes)|     1.413          1    0.2345          .           .         .
9 var(e.paper)|     0.014          1    0.9052          .           .         .
10------------------------------------------------------------------------------
11Joint tests for each parameter class
12------------------------------------------------------------------------------
13             |            Wald Test                       Score Test
14             |      chi2         df    p>chi2       chi2          df    p>chi2
15-------------+----------------------------------------------------------------
16     merrvar |     1.857          3    0.6027          .           .         .
17------------------------------------------------------------------------------

Một lần nữa, chúng ta không tìm thấy bằng chứng để bác bỏ giả thuyết về tính bất biến của phương sai sai số giữa các nhóm.

Bây giờ, chúng ta sẽ thiết lập mô hình cuối cùng bằng cách áp dụng đồng thời các ràng buộc lên hệ số tải, hệ số chặn và phương sai sai số, nhưng cho phép giá trị trung bình và phương sai của biến ẩn được tự do khác nhau giữa các nhóm. Để làm được điều này, chúng ta loại bỏ tùy chọn cài đặt trung bình và thay thế định nghĩa phương sai bằng cách sử dụng cú pháp mới để phương sai của nhóm thứ hai được ước lượng tự do.

1. sem (Spatial -> visual cubes paper), 
2> variance(1:Spatial@1) ginvariant(mcoef mcons merrvar) group(school)
3Endogenous variables
4Measurement:  visual cubes paper
5Exogenous variables
6Latent:       Spatial
7Fitting target model:
8Iteration 0:   log likelihood = -5357.6935  (not concave)
9Iteration 1:   log likelihood = -4792.5814  (not concave)
10Iteration 2:   log likelihood = -4316.3827  (not concave)
11Iteration 3:   log likelihood =  -2769.069  (not concave)
12Iteration 4:   log likelihood = -2662.2605
13Iteration 5:   log likelihood = -2645.7652
14Iteration 6:   log likelihood = -2629.1987
15Iteration 7:   log likelihood =   -2622.83  (not concave)
16Iteration 8:   log likelihood = -2622.3555
17Iteration 9:   log likelihood = -2622.3227
18Iteration 10:  log likelihood = -2621.9007
19Iteration 11:  log likelihood = -2621.8931
20Iteration 12:  log likelihood =  -2621.893
21Structural equation model                       Number of obs     =        301
22Grouping variable  = school                     Number of groups  =          2
23Estimation method  = ml
24Log likelihood     =  -2621.893
25 ( 1)  [cubes]1bn.school#c.Spatial - [cubes]2.school#c.Spatial = 0
26 ( 2)  [paper]1bn.school#c.Spatial - [paper]2.school#c.Spatial = 0
27 ( 3)  [var(e.visual)]1bn.school - [var(e.visual)]2.school = 0
28 ( 4)  [var(e.cubes)]1bn.school - [var(e.cubes)]2.school = 0
29 ( 5)  [var(e.paper)]1bn.school - [var(e.paper)]2.school = 0
30 ( 6)  [var(Spatial)]1bn.school = 1
31 ( 7)  [visual]1bn.school - [visual]2.school = 0
32 ( 8)  [cubes]1bn.school - [cubes]2.school = 0
33 ( 9)  [paper]1bn.school - [paper]2.school = 0
34 (10)  [visual]2.school#c.Spatial = 1
35 (11)  [mean(Spatial)]1bn.school = 0
36-------------------------------------------------------------------------------
37              |                 OIM
38              |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
39--------------+----------------------------------------------------------------
40Measurement   |
41  visual <-   |
42      Spatial |
43     Pasteur  |   5.472561   1.129916     4.84   0.000     3.257966    7.687156
44  Grant-Wh~e  |          1  (constrained)
45        _cons |
46              [*] |   29.32102   .4932735    59.44   0.000     28.35422    30.28782
47  ------------+----------------------------------------------------------------
48  cubes <-    |
49      Spatial |
50          [*] |   .3968564   .1833049     2.17   0.030     .0375854    .7561274
51        _cons |
52          [*] |   24.26618   .2890016    83.97   0.000     23.69975    24.83262
53  ------------+----------------------------------------------------------------
54  paper <-    |
55      Spatial |
56          [*] |   .2953686    .137265     2.15   0.031     .0263341    .5644031
57        _cons |
58          [*] |   14.16525   .1786194    79.30   0.000     13.81516    14.51533
59--------------+----------------------------------------------------------------
60 mean(Spatial)|
61     Pasteur  |          0  (constrained)
62 Grant-White  |   .4140109   .6928933     0.60   0.550    -.9440351    1.772057
63--------------+----------------------------------------------------------------
64 var(e.visual)|
65          [*] |   19.50062   12.09195                      5.784095    65.74481
66  var(e.cubes)|
67          [*] |   20.08682   1.784905                      16.87617    23.90829
68  var(e.paper)|
69          [*] |   6.864085    .691005                      5.634982    8.361281
70  var(Spatial)|
71     Pasteur  |          1  (constrained)
72 Grant-White  |   25.44848   15.33031                      7.814351    82.87636
73-------------------------------------------------------------------------------
74Note: [*] identifies parameter estimates constrained to be equal across groups.
75LR test of model vs. saturated: chi2(7)   =     36.63, Prob > chi2 = 0.0000

Giá trị trung bình ước lượng là 0.414 của biến ẩn Spatial ở trường Grant-White đại diện cho sự khác biệt về giá trị trung bình giữa hai trường học. Kết quả kiểm định cho thấy sự khác biệt này không có ý nghĩa thống kê do p-value lớn hơn 0.05 khá nhiều.

Tóm tắt

Việc kiểm định các giả thuyết về tính bằng nhau của các tham số đo lường giữa các nhóm được thực hiện rất dễ dàng trong Stata nhờ sự kết hợp của lệnh sem và lệnh hậu ước lượng estat ginvariant. Mặc dù có những quan điểm khác nhau trong các tài liệu nghiên cứu về cách thiết lập các ràng buộc định danh cũng như trình tự thực hiện các kiểm định này, các công cụ được giới thiệu ở đây hoàn toàn có thể tùy biến linh hoạt để thích ứng với mọi quy trình phân tích. Ngoài ra, bạn cũng có thể áp dụng các công cụ này để đánh giá tính bất biến tham số trên nhiều loại mô hình phương trình cấu trúc khác nhau.

✨ Việc kiểm định tính bất biến đo lường là nền tảng cốt lõi giúp các nhà nghiên cứu khẳng định rằng công cụ đo lường của họ hoạt động nhất quán trên các nhóm đối tượng khác nhau. Việc bỏ qua quy trình này có thể dẫn đến những so sánh sai lệch và các kết luận thiếu chính xác về sự khác biệt nhóm trong thực tế.

Nếu một mô hình nghiên cứu của bạn chỉ đạt được tính bất biến đo lường ở cấp độ hệ số tải nhân tố mà không đạt tính bất biến ở cấp độ hệ số chặn, bạn có thể thực hiện so sánh các hệ số tương quan hoặc hệ số hồi quy giữa các nhóm hay không? Hãy thử áp dụng bộ dữ liệu nghiên cứu của mình vào Stata để tìm câu trả lời thực tế.


Bài viết khác
Trong các bài viết trước, chúng ta đã sử dụng phương thức `read_stata()` để đọc toàn bộ các tập dữ liệu của Stata vào các data frame của pandas. Điều này hoạt động hiệu quả khi bạn muốn đọc toàn bộ một tập dữ liệu của Stata vào Python. Tuy nhiên, đôi khi chúng ta muốn đọc một tập con của các biến số hoặc các quan sát, hoặc cả hai, từ một tập dữ liệu của Stata vào Python. Bài viết này sẽ giới thiệu mô-đun Giao diện Chức năng của Stata (SFI) và chỉ cho bạn cách sử dụng nó để đọc các tập dữ liệu một phần vào một data frame của pandas. Nếu bạn chưa quen với Python, việc tham khảo bốn bài viết đầu tiên trong chuỗi tích hợp Stata/Python có thể hữu ích trước khi tiếp tục. Sử Dụng Mô-đun SFI Để Chuyển Dữ Liệu Từ Stata Sang Python SFI là một mô-đun Python cho phép bạn truyền thông tin qua lại giữa Stata và Python. Bạn có thể sao chép toàn bộ hoặc một phần các tập dữ liệu, data frame, macro cục bộ và toàn cục, scalar và ma trận, thậm chí cả ma trận Mata toàn cục. Có quá nhiều tính năng để trình bày trong một bài blog. Vì vậy, hôm nay chúng ta sẽ tìm hiểu một tính năng mà bạn có thể sẽ sử dụng: đọc các tập dữ liệu Stata một phần vào Python. Chúng ta sẽ khám phá thêm các tính năng khác của SFI trong các bài viết sau.
Trong bài viết trước, chúng ta đã tìm hiểu cách cài đặt các thư viện Python bằng pip. Hôm nay, chúng ta sẽ đi sâu vào những thao tác cơ bản nhất để nạp và sử dụng các thư viện này ngay trong môi trường Stata. Thông qua các ví dụ thực hành với thư viện pandas, bài viết sẽ giúp bạn nắm vững những khái niệm quan trọng cùng cú pháp cốt lõi có thể áp dụng cho hầu hết thư viện Python hiện nay. Kiểm tra và nạp thư viện Python Thư viện pandas là một công cụ rất phổ biến dùng để xử lý, nhập và xuất dữ liệu trong Python. Thư viện này chứa nhiều module khác nhau phục vụ công việc tương tác với các cấu trúc dữ liệu như series hay data frame. Trước tiên, bạn có thể kiểm tra xem pandas đã được cài đặt trên hệ thống hay chưa bằng câu lệnh sau trong Stata:
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội