Đối với biến phụ thuộc trong mô hình hồi quy...5a Standard Residual và Studentized Residuals...5b Sửa lỗi nhập dữ liệu...10c Thay thế giá trị ngoại lai: thay đổi giá trị của một ngoại lệ
Trang 1UNIVERSITY OF ECONOMIC AND LAW
FACULTY OF INTERNATIONAL ECONOMIC RELATIONS
PHÂN TÍCH DỮ LIỆU TRONG KINH TẾ
BÀI TẬP NHÓM SỐ 1:
CÁCH ĐỂ PHÁT HIỆN VÀ XỬ LÝ OUTLIER TRONG STATA
Hồ Chí Minh, ngày 11 tháng 7 năm 2023
Trang 2Mục lục
I Outlier là gì? Ảnh hưởng như thế nào? 2
II Các cách phát hiện outliers 2
1 Đối với biến đơn 2
a) Sắp xếp dữ liệu 2
b) Biểu đồ hộp 3
c) Lệnh extremes 3
d) Histogram (Biểu đồ thanh) 4
e) Spike Plots 5
f) Z-Score: 5
2 Đối với biến phụ thuộc trong mô hình hồi quy 5
a) Standard Residual và Studentized Residuals 5
b) Sử dụng Leverage measure 7
c) Sử dụng Cook's Distance 7
d) Sử dụng Difference in Fit 8
e) Sử dụng giá trị dự đoán Phần dư 9
III Cách xử lý outliers 10
1 Đối với biến đơn 10
a) Giữ các ngoại lệ 10
b) Sửa lỗi nhập dữ liệu 10
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 không phải là ngoại lệ) 10
d) Loại bỏ giá trị ngoại lai 11
2 Đối với mô hình hồi quy 11
Tài liệu Tham khảo: 13
1
Trang 4I Outlier là gì? Ảnh hưởng như thế nào?
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ự đoán và ước tính tham số mô hình Một số nguyên 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
II Các cách phát hiện outliers
“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”
1 Đối với biến đơn
a) Sắp xếp dữ liệu.
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
3
Too long to read on your phone? Save
to read later on your computer
Save to a Studylist
Trang 5b) Biểu đồ hộp.
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
c) Lệnh extremes.
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
Trang 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
d) Histogram (Biểu đồ thanh).
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
Trang 7e) Spike Plots.
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)
f) Z-Score:
Phương pháp này đòi hỏi phải tính toán z-score của các biến Nếu bất kì giá trị nào trong số này nằm ngoà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)
2 Đối với biến phụ thuộc trong mô hình hồi quy.
a) Standard Residual và Studentized Residuals
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
Trang 8regress 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 toá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
Hoặc:
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 toá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
Leverage measure
Trong Stata, thống kê Leverage
lai Leverage đo lường ảnh hưởng của từng quan sát đối với các giá trị phù hợp của mô hình hồi
7
Trang 9quy 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 toá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
c) Sử dụng Cook's Distance
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
Trang 10list if outliers //Hiển thị các giá trị ngoại lai
d) Sử dụng Difference in Fit
Đây là sự khác biệt giữa các phản hồi dự đoán từ mô hình được xây dựng bằng dữ liệu đầy đủ và các phản hồi dự đoá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
Trang 11e) Sử dụng giá trị dự đoán Phần dư
Code minh họa:
reg Diệntích Giá Phòngngủ SốWC Ởtrungtâm
predict Dựđoán //Tạo biến dự đoá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ựđoá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
Trang 12Trong 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
III Cách xử lý outliers
1 Đối với biến đơn
a) Giữ các ngoại lệ.
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) Sửa lỗi nhập dữ liệu.
Đô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
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 không phải là ngoại lệ)
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
Trang 13Sử 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
d) Loại bỏ giá trị ngoại lai.
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))
2 Đối với mô hình hồi quy
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
Trang 14Hoặ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 toá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
Tài liệu Tham khảo:
Đăng T (2022, January 30) Cách xử lý dữ liệu trong Stata - Bỏ Mising value + Outliers - MOSL MOSL, from
https://mosl.vn/cach-xu-ly-du-lieu-trong-stata/
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
https://data-fun.com/outliers-loai-bo-du-lieu-ngoai-lai-mysql/
13
Trang 15Ong 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 https://ongxuanhong.wordpress.com/2016/01/31/lay-va-lam-sach-du-lieu-xu-ly-du-lieu-ngoai-lai-outliers/
Ayesha Irfan, How to Identify and Treat Outliers in Stata From https://thedatahall.com/how-to-identify-and-treat-outliers-in-stata/#google_vignette
Cách xử lý dữ liệu trong Stata – Bỏ Missing value + Outliers From
https://mosl.vn/cach-xu-ly-du-lieu-trong-stata/
Whitting, Laura The dfbeta Command - Linear Regression Post-estimation, 11 February 2020, from https://www.techtips.surveydesign.com.au/post/the-dfbeta-command
14