Trong nghiên cứu ứng dụng, các mô hình chiều cao, tức là những mô hình có quá nhiều biến giải thích tiềm năng so với kích thước mẫu hiện có, đang ngày càng trở nên phổ biến. Lasso, một kỹ thuật được thảo luận trong các bài viết trước, có thể được dùng để ước lượng các hệ số quan tâm trong mô hình chiều cao. Bài viết này sẽ đi sâu vào các lệnh trong Stata 16 giúp ước lượng các hệ số này một cách đáng tin cậy.
Để minh họa vấn đề, chúng ta sẽ xem xét một ví dụ từ dữ liệu mà Sunyer cùng cộng sự (2017) đã sử dụng để ước lượng ảnh hưởng của ô nhiễm không khí lên thời gian phản ứng của học sinh tiểu học. Mô hình tổng quát có thể được biểu diễn như sau: biến thời gian phản ứng htime của cá nhân i được giải thích bởi mức độ ô nhiễm no2_class của trường học cá nhân i nhân với hệ số gamma, cộng với tích của véctơ biến kiểm soát x_i và véctơ hệ số beta, cùng với thành phần sai số epsilon_i.
Cụ thể, htime là thước đo thời gian phản ứng của trẻ i trong một bài kiểm tra, no2_class đo mức độ ô nhiễm trong trường học của trẻ i, và véctơ x_i chứa các biến kiểm soát cần được đưa vào mô hình. Vấn đề đặt ra là có tới 252 biến kiểm soát tiềm năng trong x, nhưng chúng ta chỉ có 1.084 quan sát. Phương pháp thông thường là hồi quy htime theo no2_class và tất cả 252 biến kiểm soát trong x sẽ không tạo ra các ước lượng đáng tin cậy cho hệ số gamma.
Nhìn kỹ hơn vào vấn đề, chúng ta thấy nhiều biến kiểm soát là các thành phần bậc hai. Chúng ta nghĩ rằng cần đưa một số trong các thành phần này vào, nhưng không quá nhiều, cùng với no2_class để có được một xấp xỉ tốt cho quá trình tạo ra dữ liệu.
Theo thuật ngữ kỹ thuật, mô hình của chúng ta là một ví dụ về mô hình chiều cao thưa thớt. Mô hình là chiều cao vì số lượng biến kiểm soát trong x có thể được đưa vào là quá lớn để ước lượng gamma một cách đáng tin cậy nếu tất cả chúng được đưa vào hồi quy. Mô hình là thưa thớt vì số lượng biến kiểm soát thực sự cần được đưa vào là nhỏ so với kích thước mẫu.
Giả sử chúng ta biết tập hợp con của x, ký hiệu là x tilde, mà phải được đưa vào để có được ước lượng tốt cho gamma. Nếu biết x tilde, chúng ta có thể sử dụng mô hình để ước lượng gamma bằng cách hồi quy htime theo no2_class và x tilde. Nhưng chúng ta không biết biến nào trong số 252 biến kiểm soát tiềm năng thuộc về x tilde. Vì vậy, chúng ta có một bài toán chọn biến kiểm soát, và chúng ta phải giải quyết nó để ước lượng gamma.
Lasso, đã được thảo luận trong bài viết trước, ngay lập tức đưa ra hai giải pháp khả thi. Thứ nhất, có vẻ như chúng ta có thể sử dụng các ước lượng hệ số của lasso. Điều này không hiệu quả vì số hạng hình phạt trong lasso làm lệch các ước lượng hệ số về 0. Việc thiếu các sai số chuẩn cho các ước lượng lasso cũng ngăn cản cách tiếp cận này. Thứ hai, có vẻ như việc sử dụng các biến kiểm soát được chọn bởi lasso sẽ cho phép chúng ta ước lượng gamma. Một số phiên bản của lựa chọn thứ hai này hoạt động, nhưng cần có lời giải thích.
Một cách tiếp cận gợi ý là bộ ước lượng hậu chọn biến đơn giản (SPS). Bộ ước lượng SPS là một bộ ước lượng đa bước. Đầu tiên, bộ ước lượng SPS sử dụng một lasso của biến phụ thuộc trên biến quan tâm và các biến kiểm soát để chọn biến kiểm soát nào nên được đưa vào. (Các biến quan tâm không bị hình phạt nên chúng luôn được đưa vào mô hình.) Thứ hai, nó hồi quy biến phụ thuộc trên biến quan tâm và các biến kiểm soát được chọn bởi lasso ở bước đầu tiên.
Bộ ước lượng SPS tạo ra suy luận không đáng tin cậy cho gamma. Leeb và Pötscher (2008) đã chỉ ra rằng các bộ ước lượng như SPS, bao gồm các biến kiểm soát được chọn bởi lasso trong một hồi quy tiếp theo, tạo ra suy luận không đáng tin cậy. Về mặt hình thức, Leeb và Pötscher (2008) đã chỉ ra rằng các bộ ước lượng như SPS thường không có phân phối chuẩn mẫu lớn, và việc sử dụng lý thuyết mẫu lớn thông thường có thể tạo ra suy luận không đáng tin cậy trong các mẫu hữu hạn.
Gốc rễ của vấn đề là lasso không phải lúc nào cũng tìm thấy các biến kiểm soát với hệ số nhỏ. Một ví dụ về hệ số nhỏ là hệ số có độ lớn khác 0 nhưng nhỏ hơn hai lần sai số chuẩn của nó. Trong các mẫu lặp lại, lasso đôi khi bao gồm các biến kiểm soát có hệ số nhỏ, và đôi khi loại trừ các biến này. Sự biến động từ mẫu này sang mẫu khác về việc biến nào được đưa vào và sai số biến bỏ sót không liên tục gây ra bởi việc thiếu một số biến kiểm soát liên quan đã ngăn cản phân phối mẫu lớn của bộ ước lượng SPS trở thành phân phối chuẩn. Sự thiếu chuẩn này không chỉ là một vấn đề lý thuyết. Nhiều mô phỏng đã chỉ ra rằng suy luận được tạo ra bởi các bộ ước lượng như SPS là không đáng tin cậy trong các mẫu hữu hạn; xem, ví dụ, Belloni, Chernozhukov, và Hansen (2014) và Belloni, Chernozhukov, và Wei (2016).
Belloni cùng cộng sự (2012), Belloni, Chernozhukov, và Hansen (2014), Belloni, Chernozhukov, và Wei (2016), và Chernozhukov cùng cộng sự (2018) đã phát triển ba loại bộ ước lượng cung cấp suy luận đáng tin cậy cho gamma sau khi sử dụng chọn biến để xác định biến nào thuộc về x tilde. Các loại này được gọi là bộ ước lượng phân tách một phần (PO), bộ ước lượng chọn kép (DS), và bộ ước lượng phân tách một phần chéo (XPO). Bảng dưới đây trình bày chi tiết các lệnh trong Stata 16 triển khai các loại bộ ước lượng này cho một số mô hình khác nhau.
Các Phương Pháp Suy Luận Tin Cậy Sau Chọn Biến Lasso Trong Stata 16
| Mô Hình | Lệnh PO | Lệnh DS | Lệnh XPO |
| :------ | :------------ | :------------ | :------------ |
| Tuyến tính | `poregress` | `dsregress` | `xporegress` |
| Logit | `pologit` | `dslogit` | `xpologit` |
| Poisson | `popoisson` | `dspoisson` | `xpopoisson` |
| IV tuyến tính | `poivregress` | | `xpoivregress`|
Trong phần còn lại của bài viết này, chúng ta sẽ thảo luận một số ví dụ sử dụng mô hình tuyến tính và cung cấp một số trực giác đằng sau ba loại bộ ước lượng này. Chúng ta sẽ thảo luận về bộ ước lượng PO trước.
Phương Pháp Ước Lượng Phân Tách Một Phần (PO)
Chúng ta sẽ bắt đầu thảo luận về bộ ước lượng PO bằng một ví dụ. Chúng ta sử dụng tập dữ liệu `breathe7.dta`, là một phần trích từ dữ liệu của Sunyer cùng cộng sự (2017). Chúng ta sử dụng các macro cục bộ để lưu trữ danh sách các biến kiểm soát. Trong kết quả dưới đây, chúng ta đặt danh sách các biến kiểm soát liên tục vào macro cục bộ `ccontrols`, và danh sách các biến kiểm soát yếu tố (factor-variable) vào macro cục bộ `fcontrols`. Sau đó, chúng ta sử dụng ký hiệu biến yếu tố của Stata để đặt tất cả các biến kiểm soát tiềm năng vào macro cục bộ `ctrls`. `ctrls` chứa các biến kiểm soát liên tục, các biến chỉ báo từ các biến yếu tố, và các tương tác giữa các biến kiểm soát liên tục và các biến chỉ báo được tạo từ các biến yếu tố.
1. use breathe7, clear
2. local ccontrols "sev_home sev_sch age ppt age_start_sch oldsibl "
3. local ccontrols "`ccontrols' youngsibl no2_home ndvi_mn noise_sch "
4.
5. local fcontrols "grade sex lbweight lbfeed smokep "
6. local fcontrols "`fcontrols' feduc4 meduc4 overwt_who "
7.
8. local ctrls "i.(`fcontrols') c.(`ccontrols') "
9. local ctrls "`ctrls' i.(`fcontrols')#c.(`ccontrols') "Các ký hiệu `c.`, `i.`, và `#` là cách Stata chỉ định liệu các biến là liên tục hay phân loại (yếu tố) và liệu chúng có tương tác với nhau hay không. `c.(`ccontrols`)` chỉ định rằng mỗi biến trong macro cục bộ `ccontrols` sẽ được đưa vào danh sách các biến kiểm soát tiềm năng như một biến liên tục. `i.(`fcontrols`)` chỉ định rằng mỗi biến trong macro cục bộ `fcontrols` sẽ được đưa vào danh sách các biến kiểm soát tiềm năng như một tập hợp các biến chỉ báo cho mỗi cấp độ của biến đó. `i.(`fcontrols`)#c.(`ccontrols`)` chỉ định rằng các tương tác của mỗi cấp độ của mỗi biến yếu tố trong macro cục bộ `fcontrols` sẽ tương tác với mỗi biến liên tục trong macro cục bộ `ccontrols`.
Bây giờ, chúng ta mô tả biến kết quả `htime`, biến giải thích quan tâm (`no2_class`), các biến kiểm soát liên tục, và các biến kiểm soát yếu tố. Các biến kiểm soát tiềm năng trong mô hình sẽ bao gồm các biến kiểm soát liên tục, các biến kiểm soát yếu tố, và các tương tác giữa các biến kiểm soát liên tục và yếu tố.
1. describe htime no2_class `fcontrols' `ccontrols'
2 storage display value
3variable name type format label variable label
4-------------------------------------------------------------------------------
5htime double %10.0g ANT: mean hit reaction time (ms)
6no2_class float %9.0g Classroom NO2 levels (μg/m3)
7grade byte %9.0g grade Grade in school
8sex byte %9.0g sex Sex
9lbweight float %9.0g 1 if low birthweight
10lbfeed byte %19.0f bfeed duration of breastfeeding
11smokep byte %3.0f noyes 1 if smoked during pregnancy
12feduc4 byte %17.0g edu Paternal education
13meduc4 byte %17.0g edu Maternal education
14overwt_who byte %32.0g over_wt WHO/CDC-overweight 0:no/1:yes
15sev_home float %9.0g Home vulnerability index
16sev_sch float %9.0g School vulnerability index
17age float %9.0g Child's age (in years)
18ppt double %10.0g Daily total precipitation
19age_start_sch double %4.1f Age started school
20oldsibl byte %1.0f Older siblings living in house
21youngsibl byte %1.0f Younger siblings living in house
22no2_home float %9.0g Residential NO2 levels (μg/m3)
23ndvi_mn double %10.0g Home greenness (NDVI), 300m
24 buffer
25noise_sch float %9.0g Measured school noise (in dB)Bây giờ, chúng ta sử dụng bộ ước lượng phân tách một phần tuyến tính được triển khai trong lệnh `poregress` để ước lượng ảnh hưởng của `no2_class` lên `htime`. Tùy chọn `controls()` chỉ định các biến kiểm soát tiềm năng. Trong ví dụ này, chúng ta đã đưa vào các cấp độ của biến kiểm soát yếu tố, các cấp độ của biến kiểm soát liên tục, và các tương tác giữa biến kiểm soát yếu tố và biến kiểm soát liên tục. Chúng ta sử dụng `estimates store` để lưu trữ các kết quả này vào bộ nhớ với tên `poplug`.
1. poregress htime no2_class, controls(`ctrls')
2Estimating lasso for htime using plugin
3Estimating lasso for no2_class using plugin
4Partialing-out linear model Number of obs = 1,036
5 Number of controls = 252
6 Number of selected controls = 11
7 Wald chi2(1) = 24.19
8 Prob > chi2 = 0.0000
9------------------------------------------------------------------------------
10 | Robust
11 htime | Coef. Std. Err. z P>|z| [95% Conf. Interval]
12-------------+----------------------------------------------------------------
13 no2_class | 2.354892 .4787494 4.92 0.000 1.416561 3.293224
14------------------------------------------------------------------------------
15Note: Chi-squared test is a Wald test of the coefficients of the variables
16 of interest jointly equal to zero. Lassos select controls for model
17 estimation. Type lassoinfo to see number of selected variables in each
18 lasso.
19. estimates store poplugHiện tại, hãy tập trung vào ước lượng và cách diễn giải. Kết quả cho thấy mỗi microgam NO2 trên mét khối tăng lên sẽ làm tăng thời gian phản ứng trung bình thêm 2.35 mili giây.
Chỉ hệ số của biến quan tâm được ước lượng. Các hệ số của biến kiểm soát không được ước lượng. Chi phí của việc sử dụng các phương pháp chọn biến là các bộ ước lượng này không tạo ra ước lượng cho các hệ số của biến kiểm soát.
Các bộ ước lượng PO mở rộng phương pháp phân tách một phần tiêu chuẩn để thu được một số hệ số hồi quy sau khi loại bỏ ảnh hưởng của các biến kiểm soát khác. Các bộ ước lượng PO sử dụng nhiều lasso để chọn các biến kiểm soát có ảnh hưởng nên được loại bỏ khỏi biến phụ thuộc và khỏi biến quan tâm. Một hồi quy của biến phụ thuộc đã được phân tách một phần trên biến quan tâm đã được phân tách một phần sẽ ước lượng các hệ số quan tâm.
Cơ chế của các bộ ước lượng PO cung cấp một số ngữ cảnh cho các nhận xét nâng cao hơn về cách tiếp cận này. Để đơn giản, chúng ta xem xét một mô hình tuyến tính cho biến kết quả y với một biến quan tâm d và các biến kiểm soát tiềm năng x. Mô hình là y bằng d nhân gamma cộng với tích của véctơ x và véctơ beta, cộng với thành phần sai số epsilon.
Dưới đây là các bước liên quan đến bộ ước lượng PO cho hệ số gamma trong mô hình tuyến tính:
1. Sử dụng một lasso của y trên x để chọn các biến kiểm soát x tilde y dự đoán y.
2. Hồi quy y trên x tilde y, và gọi phần dư từ hồi quy này là y tilde.
3. Sử dụng một lasso của d trên x để chọn các biến kiểm soát x tilde d dự đoán d.
4. Hồi quy d trên x tilde d, và gọi phần dư từ hồi quy này là d tilde.
5. Hồi quy y tilde trên d tilde để có được ước lượng và sai số chuẩn cho gamma.
Một cách heuristic, các điều kiện momen được sử dụng trong bước 5 không liên quan đến các biến kiểm soát đã chọn. Về mặt hình thức, các điều kiện momen được sử dụng trong bước 5 đã được trực giao hóa, hay "miễn nhiễm", đối với những lỗi nhỏ trong việc chọn biến kiểm soát. Khả năng chịu đựng này đối với những lỗi mà lasso mắc phải trong việc chọn biến kiểm soát là lý do tại sao bộ ước lượng cung cấp một ước lượng đáng tin cậy của gamma.
Bây giờ chúng ta đã quen thuộc với cách tiếp cận PO, hãy xem xét lại kết quả.
1. poregress
2Partialing-out linear model Number of obs = 1,036
3 Number of controls = 252
4 Number of selected controls = 11
5 Wald chi2(1) = 24.19
6 Prob > chi2 = 0.0000
7------------------------------------------------------------------------------
8 | Robust
9 htime | Coef. Std. Err. z P>|z| [95% Conf. Interval]
10-------------+----------------------------------------------------------------
11 no2_class | 2.354892 .4787494 4.92 0.000 1.416561 3.293224
12------------------------------------------------------------------------------
13Note: Chi-squared test is a Wald test of the coefficients of the variables
14 of interest jointly equal to zero. Lassos select controls for model
15 estimation. Type lassoinfo to see number of selected variables in each
16 lasso.Kết quả cho thấy bộ ước lượng đã sử dụng lasso dựa trên plug-in cho `htime` và lasso dựa trên plug-in cho `no2_class` để chọn các biến kiểm soát. Plug-in là phương pháp mặc định để chọn tham số hình phạt lasso. Chúng ta sẽ thảo luận về những đánh đổi khi sử dụng các phương pháp khác trong phần "Lựa Chọn Tham Số Hình Phạt Lasso" dưới đây.
Chúng ta cũng thấy rằng chỉ 11 trong số 252 biến kiểm soát tiềm năng được chọn làm biến kiểm soát bởi các lasso này. Chúng ta có thể sử dụng lệnh `lassocoef` để tìm ra biến kiểm soát nào được đưa vào trong mỗi lasso.
1. lassocoef ( ., for(htime)) ( ., for(no2_class))
2----------------------------------------
3 | htime no2_class
4------------------+---------------------
5 age | x
6 |
7 grade#c.ndvi_mn |
8 4th | x
9 |
10grade#c.noise_sch |
11 2nd | x
12 |
13 sex#c.age |
14 0 | x
15 |
16 feduc4#c.age |
17 4 | x
18 |
19 sev_sch | x
20 ppt | x
21 no2_home | x
22 ndvi_mn | x
23 noise_sch | x
24 |
25 grade#c.sev_sch |
26 2nd | x
27 |
28 _cons | x x
29----------------------------------------
30Legend:
31 b - base level
32 e - empty cell
33 o - omitted
34 x - estimatedChúng ta thấy rằng `age` và bốn biến tương tác được đưa vào trong lasso cho `htime`. Chúng ta cũng thấy rằng `sev_sch`, `ppt`, `no2_home`, `ndvi_mn`, `noise_sch`, và một biến tương tác được đưa vào trong lasso cho `no2_class`. Một số biến được sử dụng trong các biến tương tác được đưa vào cả hai lasso, nhưng nếu không thì các tập hợp các biến kiểm soát được đưa vào là khác biệt.
Chúng ta có thể đã sử dụng `lassoknots` thay vì `lassocoef` để tìm ra biến kiểm soát nào được đưa vào trong mỗi lasso, điều này được minh họa trong kết quả dưới đây.
1. lassoknots , for(htime)
2-------------------------------------------------------------------------------
3 | No. of |
4 | nonzero In-sample | Variables (A)dded, (R)emoved,
5 ID | lambda coef. R-squared | or left (U)nchanged
6-------+-------------------------------+---------------------------------------
7 * 1 | .1375306 5 0.1619 | A age 0.sex#c.age
8 | | 3.grade#c.ndvi_mn
9 | | 1.grade#c.noise_sch
10 | | 4.feduc4#c.age
11-------------------------------------------------------------------------------
12* lambda selected by plugin assuming heteroskedastic.
13. lassoknots , for(no2_class)
14-------------------------------------------------------------------------------
15 | No. of |
16 | nonzero In-sample | Variables (A)dded, (R)emoved,
17 ID | lambda coef. R-squared | or left (U)nchanged
18-------+-------------------------------+---------------------------------------
19 * 1 | .1375306 6 0.3411 | A ppt sev_sch ndvi_mn
20 | | no2_home noise_sch
21 | | 1.grade#c.sev_sch
22-------------------------------------------------------------------------------
23* lambda selected by plugin assuming heteroskedastic.Phương Pháp Ước Lượng Chọn Kép (DS)
Các bộ ước lượng DS mở rộng cách tiếp cận PO. Tóm lại, các bộ ước lượng DS bao gồm các biến kiểm soát bổ sung làm cho bộ ước lượng vững chắc trước những lỗi mà lasso mắc phải trong việc chọn biến kiểm soát ảnh hưởng đến kết quả.
Để cụ thể hơn, chúng ta sử dụng bộ ước lượng DS tuyến tính được triển khai trong lệnh `dsregress` để ước lượng ảnh hưởng của `no2_class` lên `htime`. Chúng ta sử dụng tùy chọn `controls()` để chỉ định cùng một tập hợp các biến kiểm soát tiềm năng như đã làm với `poregress`. Chúng ta lưu trữ các kết quả vào bộ nhớ với tên `dsplug`.
1. dsregress htime no2_class, controls(`ctrls')
2Estimating lasso for htime using plugin
3Estimating lasso for no2_class using plugin
4Double-selection linear model Number of obs = 1,036
5 Number of controls = 252
6 Number of selected controls = 11
7 Wald chi2(1) = 23.71
8 Prob > chi2 = 0.0000
9------------------------------------------------------------------------------
10 | Robust
11 htime | Coef. Std. Err. z P>|z| [95% Conf. Interval]
12-------------+----------------------------------------------------------------
13 no2_class | 2.370022 .4867462 4.87 0.000 1.416017 3.324027
14------------------------------------------------------------------------------
15Note: Chi-squared test is a Wald test of the coefficients of the variables
16 of interest jointly equal to zero. Lassos select controls for model
17 estimation. Type lassoinfo to see number of selected variables in each
18 lasso.
19. estimates store dsplugCách diễn giải tương tự như đối với `poregress`, và ước lượng điểm gần như giống nhau.
Cơ chế của các bộ ước lượng DS cũng cung cấp một số ngữ cảnh cho các nhận xét nâng cao hơn về cách tiếp cận này. Dưới đây là các bước cho DS đối với mô hình tuyến tính với biến kết quả y, biến quan tâm d và các biến kiểm soát tiềm năng x:
1. Sử dụng một lasso của y trên x để chọn các biến kiểm soát x tilde y dự đoán y.
2. Sử dụng một lasso của d trên x để chọn các biến kiểm soát x tilde d dự đoán d.
3. Đặt x tilde u là tập hợp hợp của các biến kiểm soát trong x tilde y và x tilde d.
4. Hồi quy y trên d và x tilde u. Kết quả ước lượng cho hệ số của d là kết quả ước lượng cho gamma.
Bộ ước lượng DS có hai cơ hội để tìm các biến kiểm soát liên quan. Belloni, Chernozhukov, và Wei (2016) báo cáo rằng bộ ước lượng DS hoạt động tốt hơn một chút so với PO trong các mô phỏng của họ, mặc dù hai bộ ước lượng này có cùng các tính chất mẫu lớn. Hiệu suất tốt hơn trong mẫu hữu hạn của bộ ước lượng DS có thể là do nó bao gồm một biến kiểm soát được tìm thấy trong một trong hai lasso trong một hồi quy duy nhất thay vì sử dụng các biến kiểm soát đã chọn trong các hồi quy riêng biệt.
So sánh các bước của DS và PO, chúng ta thấy rằng các bộ ước lượng PO và DS sử dụng cùng một lasso để chọn các biến kiểm soát trong mô hình này với một biến quan tâm.
Giống như với `poregress`, chúng ta có thể sử dụng `lassocoef` hoặc `lassoknots` để xem các biến kiểm soát nào đã được chọn trong mỗi lasso. Chúng ta bỏ qua các ví dụ này vì chúng tạo ra kết quả tương tự như ví dụ sử dụng `poregress` ở trên.
Phương Pháp Ước Lượng Phân Tách Một Phần Chéo (XPO)
Cross-fitting, còn được gọi là học máy kép (DML), là một kỹ thuật ước lượng phân tách mẫu mà Chernozhukov cùng cộng sự (2018) đã phát triển để tạo ra các phiên bản của bộ ước lượng PO có các thuộc tính lý thuyết tốt hơn và cung cấp hiệu suất mẫu hữu hạn tốt hơn. Sự khác biệt lý thuyết quan trọng nhất là các bộ ước lượng XPO yêu cầu điều kiện thưa thớt yếu hơn so với các bộ ước lượng PO mẫu đơn. Trong thực tế, điều này có nghĩa là các bộ ước lượng XPO có thể cung cấp suy luận đáng tin cậy về các quá trình bao gồm nhiều biến kiểm soát hơn mà các bộ ước lượng PO mẫu đơn có thể xử lý.
Các bộ ước lượng XPO có các thuộc tính tốt hơn vì các kỹ thuật phân tách mẫu tiếp tục giảm thiểu tác động của việc chọn biến kiểm soát lên bộ ước lượng cho gamma.
Chính sự kết hợp giữa kỹ thuật phân tách mẫu và bộ ước lượng PO đã mang lại độ tin cậy cho các bộ ước lượng XPO. Chernozhukov cùng cộng sự (2018) chỉ ra rằng việc chỉ sử dụng kỹ thuật ước lượng phân tách mẫu là không đủ để tạo ra một bộ ước lượng suy luận sử dụng lasso hoặc một phương pháp học máy khác dựa trên chọn biến kiểm soát để vững chắc trước các lỗi chọn biến kiểm soát.
Bây giờ chúng ta sử dụng bộ ước lượng XPO tuyến tính được triển khai trong lệnh `xporegress` để ước lượng ảnh hưởng của `no2_class` lên `htime`.
1. xporegress htime no2_class, controls(`ctrls')
2Cross-fit fold 1 of 10 ...
3Estimating lasso for htime using plugin
4Estimating lasso for no2_class using plugin
5Cross-fit fold 2 of 10 ...
6Estimating lasso for htime using plugin
7Estimating lasso for no2_class using plugin
8Cross-fit fold 3 of 10 ...
9Estimating lasso for htime using plugin
10note: 1.meduc4#c.youngsibl dropped because it is constant
11Estimating lasso for no2_class using plugin
12note: 1.meduc4#c.youngsibl dropped because it is constant
13Cross-fit fold 4 of 10 ...
14Estimating lasso for htime using plugin
15Estimating lasso for no2_class using plugin
16Cross-fit fold 5 of 10 ...
17Estimating lasso for htime using plugin
18Estimating lasso for no2_class using plugin
19Cross-fit fold 6 of 10 ...
20Estimating lasso for htime using plugin
21Estimating lasso for no2_class using plugin
22Cross-fit fold 7 of 10 ...
23Estimating lasso for htime using plugin
24Estimating lasso for no2_class using plugin
25Cross-fit fold 8 of 10 ...
26Estimating lasso for htime using plugin
27Estimating lasso for no2_class using plugin
28Cross-fit fold 9 of 10 ...
29Estimating lasso for htime using plugin
30Estimating lasso for no2_class using plugin
31Cross-fit fold 10 of 10 ...
32Estimating lasso for htime using plugin
33Estimating lasso for no2_class using plugin
34Cross-fit partialing-out Number of obs = 1,036
35linear model Number of controls = 252
36 Number of selected controls = 18
37 Number of folds in cross-fit = 10
38 Number of resamples = 1
39 Wald chi2(1) = 24.99
40 Prob > chi2 = 0.0000
41------------------------------------------------------------------------------
42 | Robust
43 htime | Coef. Std. Err. z P>|z| [95% Conf. Interval]
44-------------+----------------------------------------------------------------
45 no2_class | 2.393125 .4787479 5.00 0.000 1.454796 3.331453
46------------------------------------------------------------------------------
47Note: Chi-squared test is a Wald test of the coefficients of the variables
48 of interest jointly equal to zero. Lassos select controls for model
49 estimation. Type lassoinfo to see number of selected variables in each
50 lasso.
51. estimates store xpoplugCách diễn giải tương tự như các bộ ước lượng trước, và ước lượng điểm cũng tương tự.
Kết quả đầu ra cho thấy một phần của quá trình được lặp lại qua 10 tập con (folds). Các kỹ thuật phân tách mẫu chia dữ liệu thành các tập con được gọi là "folds". Để làm rõ những gì đang được thực hiện, hãy xem xét các bước sẽ được thực hiện bởi bộ ước lượng XPO tuyến tính cho hệ số gamma trong mô hình tuyến tính khi chỉ có 2 folds trong mô hình.
1. Chia dữ liệu thành 2 folds, gọi là A và B.
2. Sử dụng dữ liệu trong fold A để chọn các biến kiểm soát và để ước lượng các hệ số hậu chọn biến.
* Sử dụng một lasso của y trên x để chọn các biến kiểm soát x tilde y dự đoán y.
* Hồi quy y trên x tilde y, và gọi các hệ số ước lượng là beta tilde A.
* Sử dụng một lasso của d trên x để chọn các biến kiểm soát x tilde d dự đoán d.
* Hồi quy d trên x tilde d, và gọi các hệ số ước lượng là delta tilde A.
3. Điền các phần dư cho y và cho d trong fold B bằng cách sử dụng các hệ số ước lượng từ dữ liệu trong fold A.
* Sử dụng dữ liệu trong fold B, điền các phần dư cho y tilde bằng y trừ tích của x tilde y và beta tilde A.
* Điền các phần dư cho d tilde bằng d trừ tích của x tilde d và delta tilde A.
4. Sử dụng dữ liệu trong fold B để chọn các biến kiểm soát và để ước lượng các hệ số hậu chọn biến.
* Sử dụng một lasso của y trên x để chọn các biến kiểm soát x tilde y dự đoán y.
* Hồi quy y trên x tilde y, và gọi các hệ số ước lượng là beta tilde B.
* Sử dụng một lasso của d trên x để chọn các biến kiểm soát x tilde d dự đoán d.
* Hồi quy d trên x tilde d, và gọi các hệ số ước lượng là delta tilde B.
5. Điền các phần dư trong fold A bằng cách sử dụng các hệ số ước lượng từ dữ liệu trong fold B.
* Sử dụng dữ liệu trong fold A, điền các phần dư cho y tilde bằng y trừ tích của x tilde y và beta tilde B.
* Điền các phần dư cho d tilde bằng d trừ tích của x tilde d và delta tilde B.
6. Bây giờ các phần dư đã được điền cho toàn bộ mẫu, hồi quy y tilde trên d tilde để ước lượng gamma.
Khi có 10 folds thay vì 2, thuật toán có cấu trúc tương tự. Dữ liệu được chia thành 10 folds. Đối với mỗi fold k, dữ liệu trong các folds khác được sử dụng để chọn các biến kiểm soát và để ước lượng các hệ số hậu chọn biến. Các hệ số hậu chọn biến sau đó được sử dụng để điền các phần dư cho fold k. Với toàn bộ mẫu, hồi quy các phần dư cho y trên các phần dư cho d sẽ ước lượng gamma.
Các bước này giải thích kết quả đầu ra cụ thể theo fold được tạo bởi `xporegress`.
Chúng tôi khuyến nghị sử dụng `xporegress` hơn `poregress` và `dsregress` vì nó có các thuộc tính mẫu lớn tốt hơn và các thuộc tính mẫu hữu hạn tốt hơn. Chi phí là `xporegress` mất nhiều thời gian hơn `poregress` và `dsregress` do các phép tính ở cấp độ fold của nó.
Lựa Chọn Tham Số Hình Phạt Lasso
Các lệnh lasso suy luận triển khai các bộ ước lượng PO, DS và XPO sử dụng phương pháp plug-in để chọn tham số hình phạt lasso (lambda) theo mặc định. Giá trị của lambda chỉ định tầm quan trọng của số hạng hình phạt trong hàm mục tiêu mà lasso tối thiểu hóa. Khi tham số hình phạt lasso bằng 0, lasso cho ra các ước lượng bình phương tối thiểu thông thường (OLS). Lasso bao gồm ít biến kiểm soát hơn khi lambda tăng.
Khi phương pháp plug-in được sử dụng để chọn lambda, các bộ ước lượng PO, DS và XPO đã chứng minh các thuộc tính mẫu lớn, như đã thảo luận bởi Belloni cùng cộng sự (2012) và Belloni, Chernozhukov, và Wei (2016). Phương pháp plug-in có xu hướng thực hiện tốt việc tìm ra các biến kiểm soát quan trọng và thực hiện xuất sắc việc không bao gồm các biến kiểm soát bổ sung có hệ số bằng 0 trong mô hình xấp xỉ tốt nhất quá trình thực.
Các lệnh lasso suy luận cho phép bạn sử dụng kiểm định chéo (CV) hoặc lasso thích ứng để chọn lambda. CV và lasso thích ứng có xu hướng thực hiện xuất sắc việc tìm ra các biến kiểm soát quan trọng, nhưng chúng có xu hướng bao gồm các biến kiểm soát bổ sung có hệ số bằng 0 trong mô hình xấp xỉ tốt nhất quá trình thực. Việc bao gồm các biến kiểm soát bổ sung này có thể ảnh hưởng đến độ tin cậy của suy luận thu được, mặc dù các ước lượng điểm không thay đổi nhiều.
CV và lasso thích ứng có thể được sử dụng để phân tích độ nhạy nhằm điều tra xem liệu những thay đổi hợp lý trong lambda có gây ra những thay đổi lớn trong các ước lượng điểm hay không. Để minh họa, chúng ta so sánh các ước lượng DS thu được khi lambda được chọn bằng phương pháp plug-in với các ước lượng DS thu được khi lambda được chọn bằng CV. Chúng ta cũng so sánh các ước lượng DS dựa trên plug-in với những ước lượng thu được khi lambda được chọn bằng cách sử dụng lasso thích ứng.
Trong kết quả dưới đây, chúng ta ước lượng ẩn ảnh hưởng bằng cách sử dụng `dsregress` khi sử dụng CV và lasso thích ứng để chọn lambda. Đầu tiên, chúng ta sử dụng tùy chọn `selection(cv)` để `dsregress` sử dụng các lasso dựa trên CV. Chúng ta sử dụng `estimates store` để lưu trữ các kết quả này vào bộ nhớ với tên `dscv`. Thứ hai, chúng ta sử dụng tùy chọn `selection(adaptive)` để `dsregress` sử dụng lasso thích ứng để chọn biến kiểm soát. Chúng ta sử dụng `estimates store` để lưu trữ các kết quả này vào bộ nhớ với tên `dsadaptive`. Chúng ta chỉ định tùy chọn `rseed()` để làm cho các phân tách mẫu được sử dụng bởi CV và bởi lasso thích ứng có thể tái tạo được.
1. quietly dsregress htime no2_class, controls(`ctrls')
2> selection(cv) rseed(12345)
3. estimates store dscv
4. quietly dsregress htime no2_class, controls(`ctrls')
5> selection(adaptive) rseed(12345)
6. estimates store dsadaptiveBây giờ, chúng ta sử dụng `lassoinfo` để xem số lượng biến kiểm soát được chọn bởi mỗi lasso trong mỗi ba phiên bản của `dsregress`.
1. lassoinfo dsplug dscv dsadaptive
2 Estimate: dsplug
3 Command: dsregress
4------------------------------------------------------
5 | No. of
6 | Selection selected
7 Variable | Model method lambda variables
8------------+-----------------------------------------
9 htime | linear plugin .1375306 5
10 no2_class | linear plugin .1375306 6
11------------------------------------------------------
12 Estimate: dscv
13 Command: dsregress
14-----------------------------------------------------------------
15 | No. of
16 | Selection Selection selected
17 Variable | Model method criterion lambda variables
18------------+----------------------------------------------------
19 htime | linear cv CV min. 9.129345 12
20 no2_class | linear cv CV min. .280125 25
21-----------------------------------------------------------------
22 Estimate: dsadaptive
23 Command: dsregress
24-----------------------------------------------------------------
25 | No. of
26 | Selection Selection selected
27 Variable | Model method criterion lambda variables
28------------+----------------------------------------------------
29 htime | linear adaptive CV min. 11.90287 7
30 no2_class | linear adaptive CV min. .0185652 20
31-----------------------------------------------------------------Chúng ta thấy rằng CV đã chọn nhiều biến kiểm soát hơn lasso thích ứng, và lasso thích ứng đã chọn nhiều biến kiểm soát hơn phương pháp plug-in. Kết quả này là điển hình.
Bây giờ chúng ta sử dụng `estimates table` để hiển thị các ước lượng điểm được tạo ra bởi ba phiên bản của bộ ước lượng DS.
1. estimates table dsplug dscv dsadaptive, b se t
2-----------------------------------------------------
3 Variable | dsplug dscv dsadaptive
4-------------+---------------------------------------
5 no2_class | 2.3700223 2.5230818 2.4768917
6 | .48674624 .50743626 .50646957
7 | 4.87 4.97 4.89
8-----------------------------------------------------
9 legend: b/se/tCác ước lượng điểm tương tự nhau giữa các phương pháp khác nhau để chọn lambda. Phân tích độ nhạy không tìm thấy sự bất ổn trong các ước lượng dựa trên plug-in.
Phân Tích Độ Nhạy Thủ Công
Trong phần này, chúng ta minh họa cách sử dụng một giá trị cụ thể cho lambda trong phân tích độ nhạy. Chúng ta bắt đầu bằng cách sử dụng `estimates restore` để khôi phục các kết quả `dscv` đã sử dụng các lasso dựa trên CV trong việc tính toán bộ ước lượng DS.
1. estimates restore dscv
2(results dscv are active now)Bây giờ chúng ta sử dụng `lassoknots` để hiển thị bảng các nút từ việc thực hiện CV trong một lasso của `no2_class` trên các biến kiểm soát tiềm năng.
1. lassoknots, for(no2_class)
2-------------------------------------------------------------------------------
3 | No. of CV mean |
4 | nonzero pred. | Variables (A)dded, (R)emoved,
5 ID | lambda coef. error | or left (U)nchanged
6-------+-------------------------------+---------------------------------------
7 2 | 4.159767 2 94.42282 | A ndvi_mn noise_sch
8 5 | 3.146711 3 83.02421 | A ppt
9 12 | 1.640698 4 70.46862 | A no2_home
10 15 | 1.241128 6 68.11599 | A sev_sch 1.grade#c.sev_sch
11 16 | 1.130869 7 67.06458 | A 0.smokep#c.ndvi_mn
12 21 | .710219 8 63.26906 | A 4.feduc4#c.sev_sch
13 23 | .5896363 10 62.51624 | A sev_home 1.feduc4#c.ndvi_mn
14 25 | .4895264 11 62.08823 | A 0.overwt_who#c.youngsibl
15 26 | .4460382 14 61.94206 | A 1.lbfeed#c.oldsibl
16 | | 2.lbfeed#c.youngsibl
17 | | 1.overwt_who#c.ppt
18 27 | .4064134 16 61.82037 | A 1.grade#c.oldsibl
19 | | 0.overwt_who#c.sev_home
20 28 | .3703088 20 61.70179 | A age 1.sex#c.ppt
21 | | 3.lbfeed#c.no2_home
22 | | 1.overwt_who#c.youngsibl
23 30 | .3074368 22 61.57447 | A 3.feduc4#c.no2_home
24 | | 1.feduc4#c.youngsibl
25 * 31 | .280125 25 61.54342 | A 0.smokep#c.sev_sch
26 | | 4.meduc4#c.ndvi_mn
27 | | 1.meduc4#c.youngsibl
28 32 | .2552395 28 61.55544 | A 1.sex#c.no2_home
29 | | 1.lbfeed#c.sev_sch
30 | | 1.feduc4#c.oldsibl
31 | | 1.smokep#c.no2_home
32 | | 0.lbweight#c.sev_sch
33 32 | .2552395 28 61.55544 | R 0.smokep#c.sev_sch
34 | | 0.smokep#c.ndvi_mn
35 33 | .2325647 32 61.64949 | A 2.grade#c.ppt
36 | | 2.grade#c.no2_home
37 | | 3.grade#c.youngsibl
38 | | 1.meduc4#c.ppt
39 | | 1.lbweight#c.youngsibl
40 33 | .2325647 32 61.64949 | R 0.lbweight#c.sev_sch
41 34 | .2119043 35 61.83715 | A 0.sex#c.youngsibl
42 | | 2.feduc4#c.ppt
43 | | 2.feduc4#c.youngsibl
44 35 | .1930793 38 62.03954 | A 1.sex#c.oldsibl
45 | | 2.feduc4#c.ndvi_mn
46 | | 1.meduc4#c.ndvi_mn
47-------------------------------------------------------------------------------
48* lambda selected by cross-validation.Giá trị lambda được chọn bởi CV có ID bằng 31. Giá trị lambda này tạo ra lỗi dự đoán trung bình CV là 61.5, và nó khiến lasso bao gồm 25 biến kiểm soát. Giá trị lambda có ID bằng 23 sẽ tạo ra lỗi dự đoán trung bình CV là 62.5, và nó sẽ khiến lasso chỉ bao gồm 10 biến kiểm soát.
Giá trị lambda có ID bằng 23 có vẻ là một ứng cử viên tốt cho phân tích độ nhạy. Trong kết quả dưới đây, chúng ta minh họa cách sử dụng `lassoselect` để chỉ định rằng lambda có ID bằng 23 là giá trị được chọn cho lambda cho lasso của `no2_class` trên các biến kiểm soát. Chúng ta cũng minh họa cách lưu trữ các kết quả này vào bộ nhớ với tên `hand`.
1. lassoselect id = 23, for(no2_class)
2ID = 23 lambda = .5896363 selected
3. estimates store handBây giờ, chúng ta sử dụng `dsregress` với tùy chọn `reestimate` để ước lượng hệ số gamma bằng DS sử dụng giá trị lambda được chỉ định thủ công.
1. dsregress , reestimate
2Double-selection linear model Number of obs = 1,036
3 Number of controls = 252
4 Number of selected controls = 22
5 Wald chi2(1) = 23.09
6 Prob > chi2 = 0.0000
7------------------------------------------------------------------------------
8 | Robust
9 htime | Coef. Std. Err. z P>|z| [95% Conf. Interval]
10-------------+----------------------------------------------------------------
11 no2_class | 2.399296 .4993065 4.81 0.000 1.420674 3.377919
12------------------------------------------------------------------------------
13Note: Chi-squared test is a Wald test of the coefficients of the variables
14 of interest jointly equal to zero. Lassos select controls for model
15 estimation. Type lassoinfo to see number of selected variables in each
16 lasso.Ước lượng điểm cho gamma không thay đổi nhiều.
✨ **Giá trị đắt giá** ✨
* Các mô hình chiều cao, với nhiều biến kiểm soát tiềm năng, đòi hỏi phương pháp suy luận đặc biệt.
* Lasso thông thường hoặc phương pháp hậu chọn biến đơn giản (SPS) không cung cấp suy luận đáng tin cậy do độ lệch của hệ số và tính không ổn định của việc chọn biến kiểm soát.
* Các phương pháp ước lượng Phân Tách Một Phần (PO), Chọn Kép (DS) và Phân Tách Một Phần Chéo (XPO), được triển khai trong Stata 16, cung cấp suy luận đáng tin cậy.
* Bộ ước lượng XPO (sử dụng cross-fitting hay học máy kép) được khuyến nghị do có các tính chất lý thuyết và hiệu suất mẫu hữu hạn vượt trội, đặc biệt khi điều kiện thưa thớt yếu hơn.
* Phương pháp plug-in để chọn tham số hình phạt lasso (lambda) thường được ưa chuộng vì tính chất lý thuyết mẫu lớn được chứng minh. Tuy nhiên, các phương pháp như kiểm định chéo (CV) và lasso thích ứng có thể hữu ích cho phân tích độ nhạy.
Câu hỏi tư duy hoặc bài tập ứng dụng
1. Giải thích tại sao việc sử dụng lasso trực tiếp để ước lượng các hệ số trong mô hình chiều cao lại không phù hợp cho mục đích suy luận.
2. Trình bày sự khác biệt cơ bản về cơ chế hoạt động giữa bộ ước lượng PO và DS. Khi nào bạn sẽ chọn DS thay vì PO?
3. Cross-fitting trong các bộ ước lượng XPO giúp cải thiện độ tin cậy của suy luận như thế nào so với các bộ ước lượng PO mẫu đơn?
4. Nếu bạn thực hiện phân tích độ nhạy và thấy rằng việc thay đổi tham số lambda dẫn đến sự thay đổi đáng kể trong ước lượng điểm của hệ số quan tâm, điều này có ý nghĩa gì đối với kết luận của bạn? Bạn sẽ xử lý tình huống này như thế nào?


