messenger_logo
Liên hệ qua Messenger
SciEco

Mô hình nhiều phương trình: ước lượng và tác động cận biên bằng gmm

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

Chúng ta sẽ cùng tìm hiểu cách ước lượng tác động can thiệp trung bình cho mô hình trung bình mũ với một biến can thiệp nội sinh. Đây là một bài toán ước lượng hai bước, trong đó bước thứ nhất tương ứng với mô hình can thiệp và bước thứ hai là mô hình kết quả. Khác với các mô hình có hàm hợp lý tách rời, do biến can thiệp mang tính nội sinh, hàm hợp lý của mô hình này không thể tách rời. Chúng ta sẽ sử dụng phương pháp mô men tổng quát thông qua lệnh gmm để giải quyết bài toán này và thu được sai số chuẩn cùng các tác động cận biên chính xác nhất.

Mô hình khung kết quả tiềm năng

Bắt đầu với khung kết quả tiềm năng để xác định tác động can thiệp trung bình. Đối với mỗi mức độ can thiệp, sẽ có một kết quả mà chúng ta quan sát được nếu một đối tượng nhận mức can thiệp đó. Khi có một kết quả tuân theo phân phối trung bình mũ và có hai mức độ can thiệp, chúng ta có thể chỉ định cách các giá trị trung bình của kết quả tiềm năng được tạo ra từ các biến độc lập và phần dư. Các tham số bao gồm các hệ số chặn không đổi và hệ số hồi quy của biến độc lập. Cần lưu ý rằng phân phối của kết quả tiềm năng có thể là Poisson, lognormal hoặc một phân phối bất kỳ khác có trung bình mũ.

Biến can thiệp được quan sát dưới hai trạng thái: được can thiệp hoặc không được can thiệp. Sai số của kết quả tiềm năng có tương quan với việc chỉ định can thiệp. Việc can thiệp được xác định bởi các biến độc lập trong một hồi quy probit, với sai số tuân theo phân phối chuẩn tắc. Chúng ta coi biến can thiệp là nội sinh bằng cách cho phép sai số của kết quả tiềm năng tương quan với sai số của mô hình can thiệp. Giả định rằng phương sai của các sai số không quan sát được là như nhau cho cả nhóm đối chứng và nhóm can thiệp, đồng thời mức độ tương quan của chúng với sai số can thiệp cũng bằng nhau.

Xác định tác động can thiệp

Mục tiêu của chúng ta là xác định tác động can thiệp dựa trên điều kiện của các biến độc lập. Đây chính là phần chênh lệch giữa các giá trị trung bình của kết quả tiềm năng khi được can thiệp và khi không được can thiệp.

Tác động can thiệp trung bình hay ATE chính là giá trị trung bình biên của các tác động can thiệp có điều kiện trên toàn bộ các biến độc lập. Nếu chúng ta nắm được các hệ số hồi quy và các hệ số chặn đã được điều chỉnh theo phương sai, chúng ta hoàn toàn có thể xác định được tác động này. Phương pháp ước lượng mà chúng ta sử dụng sẽ cung cấp các điểm ước lượng nhất quán cho cả tham số mô hình và tác động ATE.

Xây dựng công cụ ước lượng

Chúng ta không thể chỉ chạy các hồi quy riêng biệt cho nhóm đối chứng và nhóm can thiệp rồi lấy hiệu số của các giá trị trung bình để ước lượng tác động. Các sai số của kết quả tiềm năng có tương quan với biến can thiệp, và một hồi quy bỏ qua sự tương quan này sẽ không mang lại các ước lượng nhất quán. Bằng cách mô hình hóa quá trình can thiệp và đưa thông tin này vào mô hình trung bình mũ ở bước thứ hai, chúng ta có thể kiểm soát sự tương quan và thu được kết quả chính xác.

Thay vì áp đặt một hàm hợp lý nghiêm ngặt đòi hỏi các giả định phân phối khắt khe, chúng ta thiết lập mô hình thông qua các điều kiện mô men. Điều kiện mô men là các giá trị kỳ vọng xác định tham số mô hình theo các mô men thực tế. Phương pháp GMM tìm kiếm các giá trị tham số sao cho tiệm cận nhất với việc thỏa mãn điều kiện mô men trên dữ liệu mẫu. Đối với bài toán hai bước này, thay vì chạy tuần tự và phải tự hiệu chỉnh sai số chuẩn thủ công, chúng ta sẽ ước lượng đồng thời các điều kiện mô men cho cả hai bước bằng GMM, qua đó tự động hiệu chỉnh sai số một cách hoàn hảo.

Quá trình ước lượng bằng mã lệnh

Chúng ta sẽ sử dụng GMM để ước lượng các tham số từ dữ liệu mô phỏng. Kết quả đầu ra tuân theo phân phối lognormal. Các biến macro cục bộ sẽ được dùng để tổ chức mã lệnh cho gọn gàng. Đầu tiên, phương trình mô men cho biến can thiệp được lưu trong biến macro tên là first, và công cụ tương ứng nằm trong biến first inst.

1. local first (first:t - normal({t: x1 z1 z2 _cons}))
2. local first_inst instruments(first: x1 z1 z2)

Tiếp theo là các điều kiện mô men cho bước thứ hai, tương ứng với đạo hàm của hệ số và hệ số chặn của trung bình mũ. Phương trình được lưu vào biến second và công cụ lưu vào biến second inst. Chúng ta sử dụng tùy chọn loại bỏ hệ số chặn tổng thể để thiết lập hệ số chặn tách biệt cho từng nhóm can thiệp.

1. local second (second:(exp(0.t*({y0:x1 x2 x3 _cons})+            
2>                          1.t*({y1:x1 x2 x3 _cons}))*            
3>                          cond(t,normal({sigmat}+{t:})/normal({t:}),     
4>                         (normal(-{sigmat}-{t:}))/(normal(-{t:}))))*     
5>                 (y- (exp(0.t*({y0:})+           
6>                          1.t*({y1:}))*          
7>                          cond(t,normal({sigmat}+{t:})/normal({t:}),     
8>                         (normal(-{sigmat}-{t:}))/(normal(-{t:}))))))
9. local second_inst instruments(second: c.(x1 x2 x3)#i.t ibn.t, noconstant)

Sau đó, chúng ta định nghĩa các điều kiện mô men cho tham số hiệp phương sai và biến ATE, được lưu trong các biến macro tương ứng. Hằng số sẽ đóng vai trò là biến công cụ cho các phương trình này.

1. local secondt (secondt:(exp(0.t*({y0:})+1.t*({y1:}))*                   
2>                 cond(t,normalden({sigmat}+{t:})/normal({t:}),           
3>                 (-normalden(-{sigmat}-{t:}))/(normal(-{t:}))))*         
4>                 (y- (exp(0.t*({y0:})+                                   
5>                          1.t*({y1:}))*                                  
6>                          cond(t,normal({sigmat}+{t:})/normal({t:}),     
7>                         (normal(-{sigmat}-{t:}))/(normal(-{t:}))))))
8. local ate (ate: {ate} - (exp({y1:})-exp({y0:})))

Bây giờ lệnh gmm sẽ được thực thi. Vì số lượng điều kiện mô men bằng đúng số lượng tham số, mô hình được nhận dạng chính xác. Chúng ta dùng phương pháp ước lượng một bước với ma trận trọng số ban đầu là ma trận đơn vị chứa mười bốn phần tử.

1. matrix I = I(14)
2. gmm `first' `second' `secondt' `ate', `first_inst' `second_inst' onestep winitial(I)

Kết quả trả về cho thấy giá trị ATE ước lượng xấp xỉ âm không phẩy ba. Chúng ta có thể đối chiếu giá trị này với trung bình chênh lệch mẫu nguyên thủy giữa hai nhóm kết quả tiềm năng để kiểm chứng.

1. gen diff = y1 - y0
2. sum diff

Chênh lệch trung bình trên dữ liệu thực tế cũng trùng khớp với mức âm không phẩy ba. Điều này chứng tỏ phương pháp đưa tất cả các phương trình vào cùng một hệ để giải quyết bằng GMM đã xử lý triệt để bài toán nội sinh và mang lại điểm ước lượng đáng tin cậy.

Phụ lục dữ liệu mô phỏng

Để bạn có thể tự kiểm chứng, dưới đây là đoạn mã tạo dữ liệu mô phỏng tuân theo phân phối lognormal với một biến can thiệp nội sinh. Các sai số của kết quả tiềm năng được thiết lập để có phương sai và hệ số tương quan riêng biệt, đồng thời gán các hệ số hồi quy khác nhau cho nhóm đối chứng và nhóm can thiệp.

1. set seed 113432
2. set obs 10000
3. generate x1 = rnormal()
4. generate x2 = rnormal()
5. generate x3 = rpoisson(1)
6. generate z1 = ln(rchi2(4))
7. generate z2 = rnormal()
8. matrix corr = ( 1,  .4, .4 \    
9>                 .4,  1, .4 \    
10>                 .4, .4,  1)
11. matrix sds = (.8, .8,1)
12. drawnorm e0 e1 u, corr(corr) sd(sds)
13. gen t = .5*x1 + .3*z1 - z2 -.5 + u> 0
14. gen y0 = exp(.3*x1 + .2*x2 - .3*x3 + -.5 + e0)
15. gen y1 = exp(.2*x1 + .4*x2 - .6*x3 + -.9 + e1)
16. gen y = 0.t*y0 + 1.t*y1

✨ Giá trị đắt giá: Khi làm việc với mô hình nhiều phương trình mà hàm hợp lý không thể tách rời do đặc tính nội sinh, phương pháp GMM là một giải pháp cực kỳ sắc bén. Thay vì phải ước lượng từng phần rời rạc và đối mặt với rủi ro tính toán sai lệch của sai số chuẩn, việc đưa toàn bộ các điều kiện mô men vào giải quyết đồng thời sẽ đảm bảo tính nhất quán tuyệt đối cho cả tham số hồi quy lẫn tác động can thiệp trung bình.

Câu hỏi tư duy: Nếu biến kết quả của bạn không tuân theo phân phối lognormal mà là một phân phối đếm như Poisson, theo bạn phương trình thiết lập điều kiện mô men ở bước thứ hai sẽ cần thay đổi như thế nào để phản ánh đúng hàm liên kết của dữ liệu? Hãy thử điều chỉnh các lệnh macro ở trên và chạy lại với một tập dữ liệu đếm để quan sát sự khác biệt nhé.


Bài viết khác
Machine learning, deep learning và trí tuệ nhân tạo là tập hợp các thuật toán dùng để nhận diện các mẫu trong dữ liệu. Các thuật toán này thường có tên gọi khá đặc biệt như random forests, neural networks hay spectral clustering. Bài viết này trình bày cách sử dụng một trong những thuật toán phổ biến mang tên Support Vector Machines hay còn được gọi tắt là SVM. Mục tiêu là ứng dụng mô hình SVM để phân biệt những người có khả năng mắc bệnh tiểu đường và những người không mắc bệnh thông qua hai biến số là tuổi và mức HbA1c. Tuổi được tính bằng năm, còn HbA1c là chỉ số xét nghiệm máu đo lường mức độ kiểm soát đường huyết. Mô hình SVM sẽ dự đoán rằng những người lớn tuổi với mức HbA1c cao có nguy cơ mắc bệnh tiểu đường cao hơn, trong khi những người trẻ tuổi với mức HbA1c thấp ít có nguy cơ mắc bệnh hơn. Tải, gộp và làm sạch dữ liệu bằng Stata Dữ liệu được sử dụng lấy từ Khảo sát Kiểm tra Sức khỏe và Dinh dưỡng Quốc gia Hoa Kỳ. Cụ thể, biến số tuổi trích xuất từ tập dữ liệu nhân khẩu học, chỉ số HbA1c từ dữ liệu hemoglobin và trạng thái bệnh từ dữ liệu tiểu đường. Quá trình bắt đầu bằng việc tải các tệp gốc từ trang web, lưu thành các tập dữ liệu Stata cục bộ và tiến hành gộp chúng lại với nhau. Sau khi gộp, các biến số sẽ được đổi tên và mã hóa lại cho đồng nhất. Những quan sát có giá trị bị khuyết sẽ được loại bỏ hoàn toàn để đảm bảo chất lượng cho bước huấn luyện mô hình.
Chúng ta đã làm quen với các khái niệm cơ bản về dược động học và dược lực học. Hôm nay, chúng ta sẽ ứng dụng những kiến thức đó vào bộ đôi kháng sinh piperacillin/tazobactam và vi khuẩn Pseudomonas. Gần đây, một tuyên bố của FDA vào tháng hai năm 2024 đã chỉ ra rằng đối với điểm gãy phụ thuộc liều nhạy cảm là 16 mcg/mL, chúng ta nên sử dụng liều 4.5g mỗi sáu giờ truyền kéo dài trong ba giờ. Lý do là vì phác đồ chuẩn 4.5g truyền tĩnh mạch mỗi sáu giờ trong vòng nửa giờ không đủ để đạt PTA lớn hơn 90 phần trăm. Tuyên bố này cũng đề cập đến một hạn chế khi sử dụng chỉ số thời gian nồng độ thuốc tự do lớn hơn mic đạt 50 phần trăm để tính toán PTA, một chỉ số chưa được kiểm chứng đầy đủ cho Pseudomonas. Đây là cơ hội tuyệt vời để chúng ta tự mình kiểm chứng điều này thông qua dữ liệu. Xây dựng mô hình dược động học quần thể Đầu tiên, chúng ta cần thu thập các thông số popPK, xây dựng mô hình, thực hiện mô phỏng và trực quan hóa PTA. Chúng ta sẽ dựa trên một phân tích gộp về dược động học cho piperacillin/tazobactam trên nhiều nhóm bệnh nhân khác nhau, từ trẻ sinh non đến người cao tuổi. Mô hình gộp này phức tạp và tinh vi hơn rất nhiều so với các mô hình đơn lẻ. Dưới đây là đoạn mã khởi tạo mô hình cơ bản sử dụng ngôn ngữ R và gói mrgsolve.
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