Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.41 MB, 16 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>I. Outlier là gì? Ảnh hưởng như thế nào?...2</b>
<b>II. Các cách phát hiện outliers...2</b>
<b>1. Đối với biến đơn...2</b>
<b>2. Đối với biến phụ thuộc trong mơ hình hồi quy...5</b>
<b>a) Standard Residual và Studentized Residuals...5</b>
<b>b) Sửa lỗi nhập dữ liệu...10</b>
<b>c) Thay thế giá trị ngoại lai: (thay đổi giá trị của một ngoại lệ thành quan sát gần nhất </b> không phải là ngoại lệ)...10
<b>d) Loại bỏ giá trị ngoại lai...11</b>
<b>2. Đối với mơ hình hồi quy...11</b>
<b>Tài liệu Tham khảo:...13</b>
1
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Giá trị ngoại lai là những quan sát khơng nằm trong xu hướng chung so với phần cịn lại của dữ liệu, đôi khi gây bất cân xứng đến các giá trị dự đốn và ước tính tham số mơ hình.
Một số ngun nhân gây ra giá trị ngoại lai có thể kể đến như lỗi dữ liệu, lỗi đánh máy, báo cáo sai thông tin, sai cấu trúc biến, biến bị bỏ sót, lỗi lấy mẫu, giả định phân phối khơng chính xác, tính ngẫu nhiên của dữ liệu,...
Ảnh hưởng của outliers:
- Có thể làm sai lệch ước tính của các hệ số hồi quy, ảnh hưởng đến độ phân giải trực quan của dữ liệu cịn lại, làm giảm tính chính xác của ước lượng thống kê. - Ảnh hưởng đến mơ hình bình phương nhỏ nhất, dẫn đến kết luận sai lầm.
- Chúng có thể là kết quả của việc xác định sai mơ hình hay bỏ sót biến, hoặc ngoại lệ thuộc một quần thể khác với quần thể đang nghiên cứu.
“Dữ liệu sử dụng và các minh họa dưới đây được lấy từ file “Data nộp.dta” gửi kèm”
<b>1. Đối với biến đơna) Sắp xếp dữ liệu.</b>
Biện pháp này cung cấp cho chúng ta cái nhìn tổng quan trực quan về cách các giá trị của một biến tăng lên và liệu một vài giá trị cực đoan có tồn tại riêng lẻ hay không. Code minh họa: sử dụng 2 lệnh dưới cho biến price
. sort Diện tích
<b>b) Biểu đồ hộp.</b>
Biểu đồ hộp biểu thị một giá trị ngoại lai outliers nằm ngoài phân phối chuẩn/ mẫu điển hình của biến. Tuy nhiên, để biết được giá trị chính xác của nó, ta phải sắp xếp dữ liệu theo cách thủ công:
(1) Yêu cầu Stata gắn nhãn cho biểu đồ: Tạo một biến có tên id, biến này sẽ hoạt động như một số ID duy nhất cho mỗi hàng. Điều này sẽ tạo ra một biến này mô tả số lượng quan sát cho mỗi hàng.
Code minh họa: gen id=_n (2) Sử dụng hộp lệnh để vẽ biểu đồ hộp:
Code minh họa: graph box Diệntích, mark(1,mlabel(id))
Tùy chọn kí hiệu (mlabel()) phù hợp cho từng biểu đồ hộp, đảm bảo rằng các dấu chấm được vẽ cho biến giá được gắn nhãn tương ứng số quan sát.
<b>c) Lệnh extremes.</b>
Biểu đồ hình hộp khơng cho phép thay đổi mức độ giữa các phần tư. Điều này ảnh hưởng đến khả năng kiểm tra các giá trị outliers được xác định một cách khác biệt.
Một số định nghĩa đề xuất bất kỳ giá trị nào trên 150% của phạm vi vùng được xem như là outliers, trong khi các định nghĩa khác xác định 220% hoặc 300% IQR là ngoại lai. Để giải quyết vấn đề này, chúng ta sử dụng lệnh Extremes.
Code minh họa: . ssc install extremes . extremes Diệntích
Để điều chỉnh đầu ra theo một tỷ lệ phần trăm nhất định của IQR, ta sử dụng lệnh: 4
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">.extremes Diệntích, iqr(1.5) //Lệnh trả về các giá trị ngoại lai bằng 150% IQR .
.extremes Diệntích, iqr(2.2) //Lệnh trả về các giá trị ngoại lệ bằng 220% IQR.
<b>d) Histogram (Biểu đồ thanh).</b>
Biểu đồ thanh biểu thị các giá trị phân phối không đều và đồ thị bị lệch phải/trái, cho thấy có sự xuất hiện của giá trị outliers. Biểu đồ biểu thị rõ ràng một quan sát xảy ra với tần suất rất ít với giá trị rất cao/thấp so với các quan sát khác.
Cách thực hiện:
(1) Tại thanh Menu nhấn chọn Graphics > Histogram. Các nội dung quan trọng cần chọn gồm variable (chọn biến để vẽ biểu đồ), percent (tỷ lệ phần trăm), nhấp chuột trái vào các lựa chọn khác như Y axis (trục tung Y), X axis (trục hoành X) và Titles (tên biểu đồ) để bổ sung các thông tin mong muốn.
(2) Dùng code: . histogram Diệntích, bin(25) frequency
5
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>e) Spike Plots.</b>
Biểu đồ tăng đột biến hiển thị mức tăng đột biến riêng lẻ của từng giá trị của một biến liên tục. Mức tăng đột biến đối với các điểm dữ liệu được nhóm lại với nhau có thể được kết luận như là khơng phải outliers. Bất kì sự tăng đột biến nào ở một khoảng cách đáng kể so với các cụm này sẽ cho thấy sự hiện diện của một ngoại lai.
Để tạo các biểu đồ tăng đột biến, ta chọn Graphics > Distributional graphs > Spike plots and rootogram hoặc dùng code: . spikeplot Diệntích, round(5)
<b>f) Z-Score: </b>
Phương pháp này địi hỏi phải tính tốn z-score của các biến. Nếu bất kì giá trị nào trong số này nằm ngồi ba độ lệch chuẩn so với giá trị trung bình, các quan sát tương ứng sẽ được coi là outliers.
Code minh họa: Z-score tạo bằng cách tiêu chuẩn hóa biến price bằng cách sử dụng lệnh
. egen stdDiệntích = std(Diệntích)
Studentized Residuals có thể được hiểu là thống kê t để kiểm tra tầm quan trọng của một biến giả bằng 1 trong quan sát được đề cập và 0 ở những nơi khác. Một biến giả như vậy sẽ hấp thụ quan sát một cách hiệu quả và do đó loại bỏ ảnh hưởng của nó trong việc xác định các hệ số khác trong mơ hình.” Các giá trị từ 2 trở lên (hoặc -2 trở xuống) có thể có vấn đề.
Code minh họa:
6
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">. regress Diệntích Giá Phịngngủ SốWC Ởtrungtâm // Mơ hình hồi quy đa biến . predict std_resid if e(sample), rstudent // Tính tốn studentized residuals
. gen outliers = abs(std_resid) > 2 // Sử dụng ngưỡng 2, Phát hiện giá trị ngoại lai dựa trên Studentized residuals
. list if outliers // Hiển thị các giá trị ngoại lai
. regress Diệntích Giá Phịngngủ SốWC Ởtrungtâm // Mơ hình hồi quy đa biến . predict std_resid if e(sample), rstandard // Tính tốn studentized residuals . gen outliers = abs(std_resid) > 2 // Sử dụng ngưỡng 2, Phát hiện giá trị ngoại lai dựa trên standardized residuals
. list if outliers // Hiển thị các giá trị ngoại lai
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">quy. Các ngoại lệ sẽ có giá trị Leverage cao, cho thấy rằng chúng có tác động mạnh đến sự phù hợp của mơ hình tổng thể. Khi Leverage > 2k/n thì có Leverage cao. Đối với các mẫu nhỏ, ta có thể sử dụng 3k/n.
Code minh họa:
. regress Diệntích Giá Phịngngủ SốWC Ởtrungtâm
. predict leverage if e(sample), leverage //Tính tốn leverage scores .
. gen outliers = leverage > 2 * 4/90 // Sử dụng ngưỡng 2*k/n (k: số biến độc lập, n: số quan sát) Phát hiện giá trị ngoại lai dựa trên leverage scores.
. list if outliers // Hiển thị các giá trị ngoại lai.
<b>c) Sử dụng Cook's Distance</b>
Cook’s distance là một cách khác để đo lường mức độ ảnh hưởng. Cook’s distance đo lường sự thay đổi tổng hợp trong các hệ số ước tính khi mỗi quan sát khơng được ước tính. Các giá trị của khoảng cách Cook lớn hơn 4/N (trong trường hợp này là 4/90 = 0,044) có thể có vấn đề.
Code minh họa:
. regress Diệntích Giá Phịngngủ SốWC Ởtrungtâm
. predict cooks_distance if e(sample), cooksd //Tính giá trị Cook's distance . gen outliers = cooks_distance > 4/90 //Phát hiện giá trị ngoại lai
8
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">. list if outliers //Hiển thị các giá trị ngoại lai
<b>d) Sử dụng Difference in Fit</b>
Đây là sự khác biệt giữa các phản hồi dự đốn từ mơ hình được xây dựng bằng dữ liệu đầy đủ và các phản hồi dự đốn từ mơ hình được xây dựng bằng cách tách riêng quan sát thứ i. Nó tương tự như Cook’s distance. Khác với Cook’s distance, nó khơng xem xét tất cả các giá trị dự đoán với quan sát thứ i được tách ra. Nó chỉ xem xét các giá trị dự đoán cho quan sát thứ i. Nó kết hợp các giá trị địn bẩy và điểm lỗi chuẩn hóa (deleted t residuals) thành một đo lường tổng quan về mức độ bất thường của một quan sát. Giá trị này nếu lến hơn 2/sqrt(n) thì sẽ có vấn đề.
Code minh họa:
. regress Diệntích Giá Phịngngủ SốWC Ởtrungtâm . dfbeta // Tính toán DIFit.
. gen outliers=0 //Tạo biến outliers.
. replace outliers = 1 if abs (_dfbeta_1) > 0.21 | abs (_dfbeta_2) > 0.21 | abs(_dfbeta_3) > 0.21 | abs(_dfbeta_4) > 0.21 //Phát hiện outliers, 0.21 là 2/sqrt(n) và thay thế nó bằng giá trị 1 trong biến outliers.
. list if outliers //Hiển thị outliers.
9
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11"><b>e) Sử dụng giá trị dự đoán Phần dư</b>
Code minh họa:
. reg Diệntích Giá Phịngngủ SốWC Ởtrungtâm
. predict Dựđốn //Tạo biến dự đốn Diện tích theo mơ hình hồi quy
. local threshold = 2 //Xác định ngưỡng cho giá trị ngoại lai (ví dụ: 2 độ lệch chuẩn) . gen outliers = abs (Diệntích - Dựđốn) > (`threshold' * e(rmse)) // Xác định các giá trị ngoại lai
. list Diệntích if outliers // Hiển thị các giá trị ngoại lai
10
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">Trong ví dụ trên chúng ta đặt một ngưỡng (ví dụ: 2 độ lệch chuẩn) cho giá trị ngoại lai và sử dụng lệnh gen để tạo một biến outliers có giá trị 1 cho các quan sát vượt quá ngưỡng và 0 cho các quan sát không vượt quá ngưỡng. Cuối cùng, chúng ta sử dụng lệnh list để hiển thị các giá trị ngoại lai.
Thay vì loại bỏ chúng, có lẽ chúng ta có thể sử dụng một số thử nghiệm phi tham số khác không bị ảnh hưởng bởi các ngoại lệ.
<b>b) Sửa lỗi nhập dữ liệu.</b>
Đôi khi các ngoại lệ tồn tại do đã có lỗi khi mã hóa biến định tính khi nhập dữ liệu. Sau khi xác định được giá trị ngoại lai, ta tiến hành sửa lại dữ liệu cho đúng.
<b>c) Thay thế giá trị ngoại lai:</b>
Sử dụng lệnh “ssc install winsor2” để có thể sử dụng lệnh winsor2
Sử dụng lệnh “sum [var], detail” để hiển thị bảng tóm tắt phân phối dữ liệu với giá trị ở các phân vị khác nhau.
11
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Sử dụng lệnh “winsor2 [var], replace cuts(5 95)” để thay thế các giá trị ngoại lai cho biến price.
Sau khi nhập lệnh trên, các quan sát có giá trị nhỏ hơn phân vị thứ 5 được thay thế bằng giá trị của phân vị thứ 5, các quan sát có giá trị lớn hơn phân vị thứ 95 được thay thế bằng giá trị của phân vị thứ 95. Ta có thể thay đổi giá trị trong ngoặc đơn để tránh thay thế nhầm các giá trị không phải là outliers.
<b>d) Loại bỏ giá trị ngoại lai.</b>
Sử dụng lệnh “winsor2 [var], replace cuts (5 95) trim” để loại bỏ giá trị ngoại lai cho biến price.
Sau khi nhập lệnh trên, các giá trị nhỏ hơn phân vị thứ 5 và lớn hơn phân vị thứ 95 bị loại bỏ.
Vì giá trị ngoại lai thường là các giá trị lớn nhất hoặc nhỏ nhất trong biến nên các giá trị ngoại lai thường là các quan sát có giá trị bé hơn phân vị thứ 5 và phân vị thứ 95. Tuy nhiên ta có thể thay đổi giá trị trong ngoặc đơn để tránh loại bỏ nhầm các giá trị không phải là outliers.
Ta có thể tiến hành xử lý outliers trên nhiều biến khác nhau chỉ với 1 lệnh (Ví dụ: winsor2 x1 x2 x3 x4, replace cuts(5 95))
Trước tiên, cần kiểm tra để chắc chắc rằng khơng có lỗi từ nhập liệu hay từ code. Tiếp theo, đảm bảo không tồn tại Missing trong bộ dữ liệu. Chạy hồi quy cả khi có và khơng có trường hợp ngoại lai. Nếu kết quả về cơ bản khác nhau, điều này cần được lưu ý. Các ngoại lệ lớn có thể được giải thích bằng cách thêm nhiều biến giải thích hơn, đương nhiên điều này sẽ tốt hơn là chỉ loại bỏ chúng.
Tuy nhiên, ta có thể dễ dàng loại bỏ các ngoại lai này bằng lệnh:
.drop if outliers //Sau khi đã tạo biến outliers trong các cách phát hiện outlier ở trên. Ngoài ra, cũng cỏ thể sử dụng Robust regression thay vì loại bỏ các outlier bằng các lệnh:
.rreg Diệntích Giá Phịngngủ SốWC Ởtrungtâm, nolog
12
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Hoặc
.qreg Diệntích Giá Phịngngủ SốWC Ởtrungtâm, nolog
rreg là một khái niệm khó để giải thích. Đơn giản, nó đi qua một quy trình lặp, nó sử dụng "least squares được điều chỉnh bằng các hàm Huber và biweight với hiệu suất Gaussian 95%" trong đó, càng ngoại lệ cực đoan thì trọng số trong tính tốn hồi quy càng nhẹ. Trường hợp rất cực đoan được loại bỏ hoàn toàn
Một lựa chọn khác là qreg, viết tắt của quantile regression. Hình thức thơng thường nhất của quantile regression là hồi quy trung vị, trong đó mục tiêu là ước tính trung vị (thay vì trung bình) của biến phụ thuộc, dựa trên các giá trị của các biến độc lập. Nói cách khác, hồi quy trung vị tìm một đường thẳng thơng qua dữ liệu sao cho tổng giá trị tuyệt đối của các sai số là nhỏ nhất, không giống như hồi quy thơng thường nơi tổng bình phương các sai số là nhỏ nhất (do đó cịn gọi là Least Absolute Value thay vì Least Squares). Trung vị ít bị ảnh hưởng bởi các giá trị ngoại lệ hơn là trung bình, vì vậy qreg có thể làm tốt hơn regress khi có các ngoại lệ cực đoan.
Đăng T. (2022, January 30). Cách xử lý dữ liệu trong Stata - Bỏ Mising value + Outliers - MOSL. MOSL, from
Hoang, H. (2019, October 28). Outliers - Hướng dẫn xác định và loại bỏ dữ liệu ngoại lai trên MySQL. Data Fun - Data Analysis Căn Bản Cho Bất Kỳ Ai. From
13
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Ong H. (2016, January 31). Lấy và làm sạch dữ liệu: Xử lý dữ liệu ngoại lai (Outliers). Ông Xuân Hồng. From
</div>