Trong phần đầu tiên của bài viết này, chúng ta đã thảo luận về mô hình probit đa thức (multinomial probit model) từ góc độ mô hình tiện ích ngẫu nhiên (random utility model). Trong phần này, chúng ta sẽ xem xét kỹ hơn về cách giải thích kết quả ước lượng của mô hình. Chúng ta sẽ sử dụng một tập dữ liệu giả định về các cá nhân được cung cấp ba gói bảo hiểm sức khỏe (Sickmaster, Allgood và Cowboy Health). Chúng ta giả định có một mẫu ngẫu nhiên gồm những người từ 20 đến 60 tuổi được hỏi gói nào họ sẽ chọn nếu phải đăng ký một trong số đó. Tiện ích của một người đối với mỗi trong ba phương án được kỳ vọng là một hàm của cả đặc điểm cá nhân (thu nhập hộ gia đình và tuổi) và đặc điểm của gói bảo hiểm (giá bảo hiểm). Chúng ta đã sử dụng lệnh `asmprobit` của Stata để ước lượng mô hình.
Giải Thích Kết Quả Ước Lượng Của Chúng Ta Như Thế Nào?
Dưới đây là kết quả từ lệnh `asmprobit` và ma trận hiệp phương sai của sai số chênh lệch đã được ước lượng:
1. asmprobit choice price, case(id) alternatives(alt) casevars(hhinc age)
2> basealternative(1) scalealternative(2) nolog
3Alternative-specific multinomial probit Number of obs = 60,000
4Case variable: id Number of cases = 20,000
5Alternative variable: alt Alts per case: min = 3
6 avg = 3.0
7 max = 3
8Integration sequence: Hammersley
9Integration points: 150 Wald chi2(5) = 4577.15
10Log simulated-likelihood = -11219.181 Prob > chi2 = 0.0000
11----------------------------------------------------------------------------
12 choice | Coef. Std. Err. z P>|z| [95% Conf. Interval]
13-------------+--------------------------------------------------------------
14alt |
15 price | -.4896106 .0523626 -9.35 0.000 -.5922394 -.3869818
16-------------+--------------------------------------------------------------
17Sickmaster | (base alternative)
18-------------+--------------------------------------------------------------
19Allgood |
20 hhinc | -.5006212 .0302981 -16.52 0.000 -.5600043 -.441238
21 age | 2.001367 .0306663 65.26 0.000 1.941262 2.061472
22 _cons | -4.980841 .1968765 -25.30 0.000 -5.366711 -4.59497
23-------------+--------------------------------------------------------------
24Cowboy_Hea~h |
25 hhinc | -1.991202 .1092118 -18.23 0.000 -2.205253 -1.77715
26 age | 1.494056 .0446662 33.45 0.000 1.406512 1.581601
27 _cons | 3.038869 .4066901 7.47 0.000 2.241771 3.835967
28-------------+--------------------------------------------------------------
29 /lnl2_2 | .5550228 .0742726 7.47 0.000 .4094512 .7005944
30-------------+--------------------------------------------------------------
31 /l2_1 | .667308 .1175286 5.68 0.000 .4369562 .8976598
32----------------------------------------------------------------------------
33(alt=Sickmaster is the alternative normalizing location)
34(alt=Allgood is the alternative normalizing scale)1. estat covariance
2 +-------------------------------------+
3 | | Allgood Cowboy_~h |
4 |--------------+----------------------|
5 | Allgood | 2 |
6 | Cowboy_Hea~h | .943716 3.479797 |
7 +-------------------------------------+
8Note: Covariances are for alternatives differenced with Sickmaster.Mặc dù các tham số này xác định các ảnh hưởng quan tâm, nhưng ánh xạ phi tuyến từ các tham số sang các ảnh hưởng có nghĩa là bản thân các tham số này khó giải thích. Ma trận hiệp phương sai đã chuẩn hóa cung cấp ít thông tin đáng kể do việc tính toán sai số chênh lệch. Các hệ số cũng không truyền tải nhiều thông tin và chúng phụ thuộc một cách tùy tiện vào thang đo đã đặt. Ví dụ, nếu chúng ta sử dụng phương án thứ ba thay vì thứ hai để đặt thang đo, chúng ta sẽ nhận được các ước lượng tham số khác nhau chỉ vì thang đo khác nhau. Để có được thông tin hữu ích hơn, chúng ta sẽ tập trung vào ước tính xác suất dự đoán và hiệu ứng biên.
Xác Suất Dự Đoán
Trước tiên, hãy tập trung vào xác suất dự đoán. Sau khi ước lượng mô hình, chúng ta dự đoán xác suất mà cá nhân thứ i chọn phương án thứ j. Tức là, đối với mỗi cá nhân, chúng ta sẽ có một xác suất liên quan đến mỗi phương án. Hãy xem xét điều này:
1. predict double pr
2(option pr assumed; Pr(alt))
3. list id alt choice pr in 1/9, sepby(id)
4 +-----------------------------------------+
5 | id alt choice pr |
6 |-----------------------------------------|
7 1. | 1 Sickmaster 1 .62054511 |
8 2. | 1 Allgood 0 .01856341 |
9 3. | 1 Cowboy Health 0 .36088805 |
10 |-----------------------------------------|
11 4. | 2 Sickmaster 0 .01680147 |
12 5. | 2 Allgood 1 .39319731 |
13 6. | 2 Cowboy Health 0 .5899949 |
14 |-----------------------------------------|
15 7. | 3 Sickmaster 0 .07440388 |
16 8. | 3 Allgood 0 .02010558 |
17 9. | 3 Cowboy Health 1 .90549014 |
18 +-----------------------------------------+Nhìn vào cá nhân đầu tiên (`id==1`), chúng ta dự đoán người này có 62% khả năng chọn Sickmaster, 2% khả năng chọn Allgood và 36% khả năng chọn Cowboy Health. Nếu chúng ta thực hiện phân loại dựa trên lựa chọn có khả năng nhất, chúng ta sẽ thấy người này được phân loại chính xác vì họ thực sự đã chọn Sickmaster. Nếu chúng ta tính trung bình các xác suất này trên các cá nhân cho mỗi phương án, chúng ta sẽ nhận được xác suất trung bình không điều kiện để chọn mỗi phương án, và chúng ta sẽ nhận thấy rằng các giá trị trung bình này phản ánh phân phối biên của các trường hợp trên các phương án:
1. predict double pr
2(option pr assumed; Pr(alt))
3. bysort alt : summarize pr
4-------------------------------------------------------------------------------
5-> alt = Sickmaster
6 Variable | Obs Mean Std. Dev. Min Max
7-------------+---------------------------------------------------------
8 pr | 20,000 .3158523 .3549359 5.70e-14 .9999658
9-------------------------------------------------------------------------------
10-> alt = Allgood
11 Variable | Obs Mean Std. Dev. Min Max
12-------------+---------------------------------------------------------
13 pr | 20,000 .4155579 .3305044 .0000342 .9972706
14-------------------------------------------------------------------------------
15-> alt = Cowboy Health
16 Variable | Obs Mean Std. Dev. Min Max
17-------------+---------------------------------------------------------
18 pr | 20,000 .2685856 .2892927 1.62e-14 .9998705Thông thường, chúng ta muốn tóm tắt các xác suất theo cách cho phép chúng ta tìm hiểu về cách các biến hiệp biến (covariate) ảnh hưởng đến xác suất lựa chọn. Chúng ta bắt đầu bằng cách ước tính xác suất lựa chọn cho một người trung bình trong quần thể. Trong trường hợp này, một người trung bình có thể được định nghĩa là người có tuổi trung bình, thu nhập trung bình và được cung cấp giá trung bình cho mỗi gói. Nếu chúng ta quan tâm đặc biệt đến ảnh hưởng của tuổi, chúng ta có thể sử dụng nhiều điểm đánh giá cho tuổi. Trong ví dụ dưới đây, chúng ta dự đoán các xác suất ở tuổi trung bình mẫu và cho những người 60 tuổi, giữ thu nhập hộ gia đình ở mức trung bình mẫu và đặt giá ở mức trung bình đặc trưng cho từng phương án:
1. preserve
2. collapse (mean) age hhinc price, by(alt)
3. generate id=1
4. quietly expand 2
5. quietly replace id = 2 in 4/6
6. quietly replace age = 6 if id == 2
7. predictnl pr_at = predict(pr), ci(ci95_lo ci95_hi) force
8note: confidence intervals calculated using Z critical values
9. format %5.3f age hhinc price price pr_at ci95_lo ci95_hi
10. list, sepby(id)
11 +---------------------------------------------------------------------+
12 | alt age hhinc price id pr_at ci95_lo ci95_hi |
13 |---------------------------------------------------------------------|
14 1. | Sickmaster 3.995 4.982 2.000 1 0.195 0.185 0.206 |
15 2. | Allgood 3.995 4.982 1.249 1 0.586 0.574 0.599 |
16 3. | Cowboy Health 3.995 4.982 0.751 1 0.218 0.208 0.229 |
17 |---------------------------------------------------------------------|
18 4. | Sickmaster 6.000 4.982 2.000 2 0.000 0.000 0.000 |
19 5. | Allgood 6.000 4.982 1.249 2 0.878 0.867 0.889 |
20 6. | Cowboy Health 6.000 4.982 0.751 2 0.122 0.111 0.133 |
21 +---------------------------------------------------------------------+
22. restoreViệc sử dụng lệnh `collapse` dẫn đến một tập dữ liệu mới chỉ có ba quan sát, một cho mỗi phương án. Trước khi sử dụng `expand`, các biến tuổi và thu nhập chứa giá trị trung bình mẫu, và biến giá lưu trữ giá trung bình đặc trưng cho phương án. Bằng cách sử dụng `expand 2`, chúng ta yêu cầu Stata nhân đôi mỗi trong ba quan sát trong tập dữ liệu, sau đó chúng ta thay thế tuổi bằng giá trị 6 (để chỉ 60 tuổi) trong tập hợp các quan sát mới được thêm vào. Biến `id` hiện xác định kịch bản dự đoán của chúng ta, và chúng ta sử dụng `preserve` và `restore` để không làm xáo trộn tập dữ liệu gốc. Ngoài ra, thay vì `predict`, chúng ta sử dụng `predictnl` ở đây vì điều này sẽ cho phép chúng ta ước tính khoảng tin cậy cho các xác suất dự đoán. Biến `pr_at` mới được tạo lưu trữ các xác suất dự đoán: đối với người trung bình của chúng ta, chúng ta dự đoán 20% khả năng chọn Sickmaster, 59% khả năng chọn Allgood và 22% khả năng chọn Cowboy Health. Nếu chúng ta nhìn vào tập hợp dự đoán thứ hai (`id==2`), chúng ta thấy rằng khả năng chọn Allgood tăng theo tuổi, ít nhất là khi giữ thu nhập hộ gia đình và giá ở mức trung bình của chúng. Do đó, khả năng chọn Sickmaster và Cowboy Health giảm, nhưng khả năng chọn Sickmaster giảm mạnh hơn đáng kể: chúng ta thực sự không mong đợi bất kỳ ai ở tuổi 60 với thu nhập hộ gia đình trung bình sẽ chọn Sickmaster khi được cung cấp giá bảo hiểm trung bình.
Hiệu Ứng Biên
Mặc dù việc xem xét các xác suất dự đoán theo cách này có thể hữu ích, nhưng chúng ta thường quan tâm đến việc ước tính sự thay đổi dự kiến về xác suất trên mỗi đơn vị thay đổi trong một biến dự đoán, mà chúng ta xấp xỉ bằng hiệu ứng biên. Hiệu ứng biên là đạo hàm bậc nhất của xác suất dự đoán đối với cả biến hiệp biến đặc trưng cho phương án và đặc trưng cho trường hợp.
Hãy xem xét biến đặc trưng cho trường hợp của chúng ta, biến tuổi, trước tiên. Chúng ta bắt đầu bằng cách đánh giá hiệu ứng biên của tuổi tại các giá trị trung bình của các biến hiệp biến, bao gồm tuổi. Ở đây chúng ta sử dụng lệnh hậu ước lượng `estat mfx`:
1. estat mfx, varlist(age)
2Equation Name Alternative
3--------------------------------------------------
4Sickmaster Sickmaster
5Allgood Allgood
6Cowboy_Health Cowboy Health
7Pr(choice = Sickmaster) = .195219
8----------------------------------------------------------------------------
9variable | dp/dx Std. Err. z P>|z| [ 95% C.I. ] X
10-------------+--------------------------------------------------------------
11casevars |
12 age | -.378961 .00669 -56.64 0.000 -.392073 -.365848 3.9953
13----------------------------------------------------------------------------
14Pr(choice = Allgood) = .5864454
15----------------------------------------------------------------------------
16variable | dp/dx Std. Err. z P>|z| [ 95% C.I. ] X
17-------------+--------------------------------------------------------------
18casevars |
19 age | .363996 .006009 60.58 0.000 .352218 .375773 3.9953
20-----------------------------------------------------------------------------
21Pr(choice = Cowboy Health) = .21831866
22----------------------------------------------------------------------------
23variable | dp/dx Std. Err. z P>|z| [ 95% C.I. ] X
24-------------+--------------------------------------------------------------
25casevars |
26 age | .015001 .004654 3.22 0.001 .00588 .024123 3.9953
27----------------------------------------------------------------------------Kiểm tra kết quả đầu ra ở trên, chúng ta thấy rằng chúng ta đã ước tính một hiệu ứng biên cho mỗi phương án. Nếu chúng ta tăng tuổi của người trung bình lên 10 năm (tương ứng với một đơn vị trong biến tuổi), chúng ta kỳ vọng khả năng chọn Sickmaster sẽ giảm 38 điểm phần trăm và khả năng chọn Allgood sẽ tăng 36 điểm phần trăm. Chúng ta không thấy thay đổi đáng kể trong xác suất chọn Cowboy Health.
Với mục đích minh họa và để hiểu rõ hơn về các đại lượng mà chúng ta đang ước tính ở đây, hãy xem xét cách tính toán thủ công các hiệu ứng này:
1. preserve
2. * Sample and alternative-specific means:
3. collapse (mean) age hhinc price, by(alt)
4. generate id=1
5. * Computing numerical derivative of the predicted
6. * probability with respect to -age-:
7. scalar h = 1e-5
8. clonevar age_clone = age
9. qui replace age = age_clone + h
10. qui predict double pr_ph
11. qui replace age = age_clone - h
12. qui predict double pr_mh
13. qui generate dpdx = (pr_ph-pr_mh)/(2*h)
14. * Results:
15. list alt dpdx in 1/3, sepby(id)
16 +---------------------------+
17 | alt dpdx |
18 |---------------------------|
19 1. | Sickmaster -.3789608 |
20 2. | Allgood .3639956 |
21 3. | Cowboy Health .0150014 |
22 +---------------------------+
23. restoreTrong đoạn mã trên, chúng ta đầu tiên đặt các biến đặc trưng cho trường hợp về giá trị trung bình mẫu của chúng và giá về giá trị trung bình đặc trưng cho phương án của chúng, một lần nữa bằng cách sử dụng `collapse`. Sau đó, chúng ta tính đạo hàm số của xác suất dự đoán đối với tuổi. Chúng ta thực hiện điều này bằng cách đánh giá hàm dự đoán của chúng ta hai lần: một lần, chúng ta thêm một lượng nhỏ vào giá trị trung bình của tuổi, và lần khác, chúng ta trừ đi cùng một lượng trước khi sử dụng `predict`. Nói cách khác, chúng ta dự đoán các xác suất tại hai điểm ngay xung quanh điểm quan tâm của chúng ta và sau đó chia sự khác biệt giữa hai dự đoán này cho sự khác biệt giữa hai điểm đánh giá. Điều này mang lại cho chúng ta một xấp xỉ của đạo hàm tại điểm chính giữa, trong trường hợp này là giá trị trung bình của tuổi. Chúng ta thấy rằng tính toán thủ công các hiệu ứng biên của chúng ta khớp với kết quả `estat mfx`.
Cuối cùng, hãy xem xét biến đặc trưng cho phương án của chúng ta, biến giá. Đối với biến này, chúng ta có thể ước tính sự thay đổi dự kiến về xác suất mà trường hợp thứ i chọn phương án thứ j đối với mỗi biến đặc trưng cho phương án. Điều này có nghĩa là trong ví dụ của chúng ta, chúng ta có thể ước tính 3x3 hiệu ứng biên cho giá. Tức là, chúng ta có thể ước tính hiệu ứng biên của giá Sickmaster đối với xác suất chọn Sickmaster, Allgood và Cowboy Health, hiệu ứng của giá Allgood đối với xác suất chọn Sickmaster, Allgood và Cowboy Health, v.v. Hãy thực hiện điều này cho hiệu ứng của giá Sickmaster đối với xác suất chọn Sickmaster, Allgood và Cowboy Health. Một lần nữa chúng ta sử dụng `estat mfx` trước:
1. estat mfx, varlist(price)
2Equation Name Alternative
3--------------------------------------------------
4Sickmaster Sickmaster
5Allgood Allgood
6Cowboy_Health Cowboy Health
7Pr(choice = Sickmaster) = .195219
8----------------------------------------------------------------------------
9variable | dp/dx Std. Err. z P>|z| [ 95% C.I. ] X
10-------------+--------------------------------------------------------------
11price |
12 Sickmaster | -.098769 .010944 -9.02 0.000 -.12022 -.077318 1.9999
13 Allgood | .074859 .008579 8.73 0.000 .058044 .091673 1.2493
14Cowboy_Hea~h | .02391 .003151 7.59 0.000 .017734 .030087 .75072
15----------------------------------------------------------------------------
16Pr(choice = Allgood) = .5864454
17----------------------------------------------------------------------------
18variable | dp/dx Std. Err. z P>|z| [ 95% C.I. ] X
19-------------+--------------------------------------------------------------
20price |
21 Sickmaster | .07487 .00858 8.73 0.000 .058053 .091687 1.9999
22 Allgood | -.130799 .013278 -9.85 0.000 -.156823 -.104774 1.2493
23Cowboy_Hea~h | .055928 .006829 8.19 0.000 .042543 .069314 .75072
24----------------------------------------------------------------------------
25Pr(choice = Cowboy Health) = .21831866
26-----------------------------------------------------------------------------
27variable | dp/dx Std. Err. z P>|z| [ 95% C.I. ] X
28-------------+---------------------------------------------------------------
29price |
30 Sickmaster | .023907 .003151 7.59 0.000 .017731 .030083 1.9999
31 Allgood | .05593 .00683 8.19 0.000 .042544 .069315 1.2493
32Cowboy_Hea~h | -.079837 .008946 -8.92 0.000 -.09737 -.062303 .75072
33-----------------------------------------------------------------------------Kiểm tra kết quả đầu ra, chúng ta quan sát thấy khả năng chọn Sickmaster giảm 10 điểm phần trăm cho mỗi lần tăng một đơn vị (đơn vị ở đây là 100 đô la/tháng) trong giá của Sickmaster. Kết quả này có vẻ hợp lý vì giá thường có ảnh hưởng tiêu cực đến tiện ích. Các hiệu ứng của giá Sickmaster đối với xác suất chọn một trong các gói khác đều dương, điều đó có nghĩa là một trong các gói khác có khả năng được chọn nhiều hơn khi giá Sickmaster tăng. Ngoài ra, vì hiệu ứng của giá Sickmaster mạnh hơn đối với Allgood, chúng ta có thể kết luận rằng người trung bình có khả năng chọn Allgood hơn Cowboy Health nếu giá của Sickmaster tăng lên. Một lần nữa, chúng ta tái tạo những kết quả này bằng cách thực hiện một số tính toán thủ công:
1. preserve
2. * Sample and alternative-specific means:
3. collapse (mean) age hhinc price, by(alt)
4. generate id=1
5. * Derivative
6. scalar h = 1e-5
7. clonevar price_clone = price
8. qui replace price = price_clone + h if alt==1
9. qui predict double pr_ph
10. qui replace price = price_clone - h if alt==1
11. qui predict double pr_mh
12. gen dpdx = (pr_ph-pr_mh)/(2*h)
13. * Results
14. list alt dpdx in 1/3, sepby(id)
15 +--------------------------+
16 | alt dpdx |
17 |--------------------------|
18 1. | Sickmaster -.098769 |
19 2. | Allgood .0748703 |
20 3. | Cowboy Health .0239071 |
21 +--------------------------+
22.
23. restoreLưu ý rằng các tính toán thủ công của chúng ta tương ứng với các hiệu ứng của Sickmaster được hiển thị ở đầu mỗi trong ba bảng kết quả từ đầu ra `estat mfx`. Các hiệu ứng hiển thị trong bảng đầu tiên thực sự tương tự, nhưng chúng có một cách giải thích khác: các ước tính cho Allgood và Cowboy Health trong bảng này là các hiệu ứng lên xác suất chọn Sickmaster trên mỗi đơn vị tăng của giá Allgood và Cowboy Health, tương ứng.
✨ Trong bài viết này, chúng ta đã khám phá cách giải thích kết quả của mô hình probit đa thức bằng cách sử dụng xác suất dự đoán và hiệu ứng biên. Đây là những công cụ vô cùng mạnh mẽ giúp chuyển đổi các hệ số khó hiểu thành những hiểu biết có ý nghĩa, dễ giải thích về hành vi lựa chọn của cá nhân. Chúng ta đã sử dụng một mô hình với cấu trúc hiệp phương sai linh hoạt để cho phép phương sai không bằng nhau, tương quan giữa các phương án và các biến đặc trưng cho phương án trong bối cảnh lựa chọn rời rạc. Điều quan trọng là phải nhận ra rằng mặc dù chúng ta đã sử dụng cấu trúc hiệp phương sai tổng quát nhất trong ví dụ của mình, đây không phải lúc nào cũng là cấu trúc phù hợp nhất. Lệnh `asmprobit` của Stata cho phép các cấu trúc hoàn toàn tùy chỉnh, và các nhà nghiên cứu nên cân nhắc cẩn thận cấu trúc nào cần áp dụng.
Câu Hỏi Tư Duy Hoặc Bài Tập Ứng Dụng
Nếu bạn là một nhà hoạch định chính sách y tế và nhận thấy rằng người lớn tuổi có xu hướng chọn Allgood hơn Sickmaster khi giá Sickmaster tăng, bạn sẽ đề xuất những thay đổi chính sách nào để khuyến khích việc lựa chọn các gói bảo hiểm nhất định trong nhóm dân số này? Hãy suy nghĩ về các biến khác ngoài tuổi và giá có thể ảnh hưởng đến quyết định này.


