Chào các bạn, Một trong những giả định của mô hình hồi quy tuyến tính là phương sai của sai số phải như nhau (gọi là homoskedasticity). Việc vi phạm giả định này sẽ gây ra hiện tượng phương sai sai số thay đổi. Trong bài viết này, mình sẽ giới thiệu với các bạn một cách chi tiết nhất về hiện tượng này nhé.
Trang 19/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
How to STATA
A set of guides and tutorials for beginners on using Stata effectively
Hiện tượng phương sai sai số thay đổi (Heteroskedasticity)
Posted on May 9, 2020May 9, 2020 by Chung Mai
Chào các bạn,
Một trong những giả định của mô hình hồi quy tuyến tính (h ps://stataguide.wordpress.com/2020/04/19/cac-gia-dinh-cua-mo-hinh-hoi-quy-tuyen-tinh/) là phương sai của sai số phải như nhau (gọi là homoskedasticity) Việc vi phạm giả định này sẽ gây ra hiện tượng phương sai sai số thay đổi Trong bài viết này, mình sẽ giới thiệu với các bạn một cách chi tiết nhất về hiện tượng này nhé
1 Định nghĩa:
Phương sai sai số thay đổi là hiện tượng mà phương sai của các sai số ước lượng không bằng nhau Từ heteroscedasticity nghĩa là unequal variance Hiện tượng này thường hay xảy ra đối với dữ liệu cắt ngang (cross-sectional data)
2 Nguyên nhân xuất hiện:
Nguyên nhân chính dẫn đến sự xuất hiện của hiện tượng này có lẽ là do sự tồn tại của các outliers trong biến Outliers là các quan sát của biến mà có giá trị quá khác biệt so với các quan sát còn lại Hoặc là các quan sát của cùng một biến nhưng lại được đo lường với những thang đo khác nhau Ví dụ khi đo lường thu nhập, bạn dùng đơn vị tỷ đồng cho những người có thu nhập cao, nhưng lại vô tình dùng đơn vị triệu đồng cho những người có thu nhập thấp hơn Ngoài ra, hiện tượng này cũng có thể xảy ra trong trường hợp sai dạng hàm hoặc sai sót trong quá trình biến đổi dữ liệu
3 Hậu quả:
Nếu như mô hình chỉ xảy ra lỗi phương sai sai số thay đổi thôi thì ước lượng OLS vẫn là ước lượng ko bị thiên lệch và nhất quán (unbiased and consistent), tuy nhiên nó không phải là ước lượng tốt nhất (hiệu quả nhất) nữa Bởi vì, phương sai của sai số trong trường hợp này không thể đạt được giá trị nhỏ nhất nữa Khi
đó, các kiểm định hệ số hồi quy và kiểm định F của mô hình trở nên không đáng tin cậy Vì vậy, việc đưa ra các kết luận dựa trên các kiểm định này sẽ không chính xác
4 Cách phát hiện:
Trang 29/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
Mình sẽ sử dụng bộ dữ liệu auto có sẵn của STATA để minh hoạ nhé Để sử dụng bộ dữ liệu này thì các bạn chỉ cần gõ lệnh sysuse auto.dta là được
Có hai cách phát hiện hiện tượng này: đó là dùng hình vẽ hoặc dùng các kiểm định
Cách 1: Vẽ đồ thị giữa sai số và giá trị ước lượng của biến Y và quan sát
Đầu tiên mình sẽ chạy hồi quy mô hình PRICE = alpha + beta1*MPG + beta2*WEIGHT
Mình đang kiểm tra xem mức độ hao xăng và trọng lượng của xe thì có ảnh hưởng ntn đến giá thành của một chiếc xe
hetero2
Sau đó, mình sẽ dùng lệnh rvfplot để có thể vẽ được đồ thị giữa sai số và giá trị ước lượng của biến phụ thuộc trong mô hình Mình thêm một cái option trong câu lệnh là yline(0) để đồ thị hiện ra đường thẳng tại mức sai số = 0 Giá trị 0 là giá trị trung bình của sai số
hetero1
Trang 39/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
Các chấm xanh trong hình vẽ thể hiện cho vị trí của các sai số đối với từng giá trị ước lượng của biến Y (fi ed values) Nếu khoảng cách của các chấm xanh này đến đường giá trị trung bình tương tự nhau thì chúng ta
có thể ngầm hiểu là không có hiện tượng phương sai sai số thay đổi xảy ra Tuy nhiên, trong hình vẽ trên, ta thấy càng về phía bên phải thì các chấm xanh càng cách xa đường giá trị trung bình hơn Điều này ngầm báo hiệu cho chúng ta rằng có hiện tượng phương sai sai số thay đổi xảy ra Ta có thể dùng các kiểm định chuyên dụng để kiểm tra lại lần nữa cho chắc
Cách 2: Dùng các kiểm định chuyên dụng
Có 2 kiểm định mà chúng ta có thể sử dụng đó là kiểm định Breusch-Pagan và kiểm định White Cả hai kiểm định này đều có cùng một giả thuyết, đó là:
Ho: Phương sai sai số là bằng nhau/không đổi (Constant variance/Homoskedasticity)
H1: Phương sai sai số không bằng nhau/thay đổi (Unequal variance/Heteroskedasticity)
Nếu như chúng ta bác bỏ giả thuyết Ho thì nghĩa là mô hình hồi quy có hiện tượng phương sai sai số thay đổi Ngược lại nếu chúng ta chấp nhận giả thuyết H0 thì nghĩa là không có hiện tượng PSSS thay đổi xảy ra
Cả hai kiểm định này đều sẽ cung cấp cho chúng ta một hệ số thống kê đi cùng với giá trị P-value tương ứng Như vậy, nếu P-value>=0.1 thì chúng ta có thể an tâm không thể bác bỏ giả thuyết H0 và vì vậy mô hình của chúng ta okay Ngược lại, nếu P-value <0.1 thì điều đó có nghĩa là mô hình gặp phải hiện tượng PSSS thay đổi
Mình xin phép bỏ qua phần giới thiệu về quá trình xây dựng nên hai kiểm định này nhé Nếu bạn nào quan tâm, mình có thể gửi tài liệu về vấn đề này cho các bạn qua email
Trong bài viết này mình chỉ hướng dẫn cách thức thực hiện hai kiểm định này trong STATA thôi
Đối với kiểm định Breusch-Pagan
Sau khi thực hiện lệnh hồi quy, bạn dùng câu lệnh estat he est ngay sau đó thì STATA sẽ báo kết quả của kiểm định này cho bạn
hetero3
Ví dụ trong trường hợp này, P-value là 0.0001 Điều này có nghĩa là mô hình có hiện tượng PSSS thay đổi Kết quả này phù hợp với cách kiểm tra bằng hình vẽ mà mình nói ở trên
Đối với kiểm định White
Sau khi thực hiện lệnh hồi quy, chúng ta dùng câu lệnh estat imtest, white nhé Kết quả của kiểm định White như sau:
Trang 49/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
Chúng ta có thể thấy giá trị P-value = 0.0066, vẫn quá nhỏ so với 0.1 Vậy nên chúng ta phải bác bỏ giả
thuyết H0 và kết luận rằng mô hình có hiện tượng PSSS thay đổi
4* Làm thế nào phát hiện hiện tượng PSSS thay đổi trong dữ liệu bảng?
Dữ liệu bảng là sự kết hợp giữa dữ liệu thời gian (time-series) và dữ liệu cắt ngang (cross-sectional) nên có khả năng xảy ra hiện tượng PSSS thay đổi Chúng ta có thể dùng lệnh x est3 ngay sau khi chạy lệnh xtreg,
fe hoặc xtgls để biết được mô hình có bị hiện tượng PSSS thay đổi hay không Lệnh này được phát triển dựa trên kiểm định Wald để kiểm tra sai số của mô hình hồi quy ảnh hưởng cố định (fixed effect model) thôi Ad cũng chưa tìm hiểu được cách thức kiểm tra đối với mô hình OLS Tuy nhiên, khi chạy hồi quy với dữ liệu bảng thì thông thường chúng ta nên chạy cả hai mô hình OLS và mô hình Fixed effect Trên cơ sở đó, chúng
ta có thể dùng lệnh x est3 này để kiểm tra nhé
Lệnh x est3 này cũng ko có sẵn trong STATA mà chúng ta cần phải cài đặt trước khi sử dụng nhé Giả
thuyết H0 của kiểm định này tương tự như kiểm định BP hay White mà mình trình bày ở trên Vậy nên, chúng ta cũng sẽ bác bỏ giả thuyết nếu như P-value < 0.1, nghĩa là mô hình có hiện tượng PSSS thay đổi
5 Cách khắc phục
Vậy chúng ta sẽ khắc phục hiện tượng này như thế nào?
Cách 1: Chúng ta có thể dùng Weighted Least Squares (WLS) Về nguyên tắc, phương pháp hồi quy này được thực hiện tương tự như OLS, nhưng các giá trị quan sát được điều chỉnh/biến đổi (transform) bởi phương sai trước khi mô hình được ước lượng Cái khó của phương pháp này đó là chúng ta phải thực hiện thử và sai nhiều lần để xác định được nên biến đổi các biến như thế nào Các bạn có thể tham khảo thêm ở đường link này nhé h regression/ (h
ps://stats.idre.ucla.edu/stata/ado/analysis/stata-analysis-toolsweighted-least-squares-regression/)
Cách 2: Biến đổi biến về dạng log Khi đó, thang đo biến sẽ nhỏ bớt lại và giúp làm giảm hiện tượng PSSS thay dổi Ví dụ như khi 2 quan sát có giá trị là 8 và 80 được đưa về dạng log thì nó sẽ trở thành 2.0794 và 4.3280 Lúc này chênh lệch giữa các biến nhỏ hơn nhiều, nên hiện tượng PSSS thay đổi sẽ được hạn chế Tuy
Trang 59/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
nhiên, có 2 vấn đề cầu lưu ý: dạng log chỉ có giá trị với các quan sát lớn hơn 0 và hệ số beta lúc này phải được giải thích theo dạng thay đổi trong phần trăm Các bạn có thể xem lại bài viết này
(h ps://stataguide.wordpress.com/2018/10/01/cac-dang-mo-hinh-hoi-quy-tuyen-tinh/) để biết cách giải thích
hệ số beta khi biến được biến đổi ở dạng log nhé
Cách 3: Chúng ta có thể thực hiện winsorize để loại bỏ đi các outliers (nghĩa là loại bỏ đi các biến có giá trị bất thường) Để biết data của mình có outliers hay không thì các bạn có thể dùng lệnh summarize để truy xuất thông tin về giá trị trung bình, độ lệch chuẩn, giá trị lớn nhất và giá trị nhỏ nhất của biến nhé Chúng ta có thể xem xét giá trị độ lệch chuẩn Nếu như giá trị độ lệch chuẩn quá lớn thì nguy cơ cao là có outlier Lúc này chúng ta có thể dùng lệnh winsor để loại bỏ đi các outlier này Lệnh winsor không có sẵn trong STATA, nên các bạn cần phải cài đặt nó trước khi sử dụng nhé Lệnh winsor không làm thay đổi số lượng quan sát, mà
nó sẽ thay thế các giá trị outliers bằng các giá trị khác thôi Ví dụ, mình muốn loại bỏ đi 1% giá trị nhỏ nhất
và 1% giá trị lớn nhất trong dãy dữ liệu, thì lệnh winsor sẽ thay thế các giá trị này bằng giá trị nhỏ thứ 2% và lớn thứ 99% Công thức sử dụng lệnh winsor như sau:
winsor bienA, gen(bienA_w) p(#) hoặc h(#)
Lệnh này giúp chúng ta winsor biến A và tạo ra biến A mới gọi là bienA_w, dựa trên việc kê khai giá trị p hoặc h
Khi dùng p thì chúng ta kê khai % dữ liệu mà chúng ta muốn winsor Số này bắt buộc phải nhỏ hơn 0.5 nhé Nhưng 0.5 nghĩa là các bạn thực hiện winsor tới 50% số lượng quan sát rồi đó, như vậy là quá nhiều Theo kinh nghiệm của ad thì các bạn nên thử với % nhỏ nhất như là 0.01 (nghĩa là 1%) và kiểm tra lại các giá trị thống kê mô tả
Khi dùng h thì chúng ta kê khai số lượng quan sát mà mình muốn thay đổi ở mỗi đầu dữ liệu Vậy nên h này nhận giá trị ít nhất là 1 quan sát và nhiều nhất là 1/2 quan sát trong bộ dữ liệu
Nếu như bạn chỉ muốn điều chỉnh dữ liệu ở một trong hai đầu dữ liệu thì chúng ta có thể thêm lựa chọn highonly (cho giá trị lớn) hoặc là lowonly (cho giá trị nhỏ) Ví dụ như chúng ta thấy giá trị lớn nhất hoặc giá trị nhỏ nhất cách quá xa so với giá trị trung bình và vô lý thì chúng ta có thể dùng lựa chọn này nhé
Cách 4: Ước lượng với phương sai sai số chuẩn (standard errors or robust standard errors)
Đối với cách này thì hệ số hồi quy của chúng ta vẫn như cũ, nhưng sai số của các hệ số hồi quy bây giờ sẽ được điều chỉnh để cho phép sự tồn tại của hiện tượng PSSS thay đổi và tất nhiên là đảm bảo giả định của
mô hình hồi quy
Để thực hiện thì khi chạy hồi quy, chúng ta chỉ cần thêm lựa chọn robust vào sau câu lệnh thôi
Trang 69/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
Lúc này, nếu như mô hình không còn lỗi nào khác thì chúng ta có thể báo cáo kết quả này rồi Tuy nhiên, phương pháp này yêu cầu mẫu dữ liệu lớn để thực hiện nhé
Okay, bài viết này thực sự là tất tần tật về hiện tượng phương sai sai số thay đổi rồi Hy vọng sẽ giúp ích cho các bạn Nếu có vấn đề gì cần trao đổi thêm với mình về hiện tượng lỗi này, hãy comment/inbox cho mình biết nhé
Posted in Kinh tế lượng căn bản, STATA for estimationsTagged Breusch-Pagan test,
heteroskedasticity, phương sai sai số thay đổi, White test, winsorize
11 thoughts on “Hiện tượng phương sai sai số thay đổi
(Heteroskedasticity)”
1 Nguyen Linh says: December 2, 2020 at 10:20 am
Anh ơi cho em hỏi phương pháp Weighted Least Squares va phuong phap : Generalized Least Square trong stata la giống nhau đúng không ạ
Reply
Chung Mai says: December 3, 2020 at 3:58 pm
Câu trả lời ngắn gọn là không nhé WLS thường được sử dụng để giải quyết hiện tượng phương sai sai số thay đổi (heteroskedasticity) và thường hay sử dụng cho dữ liệu cắt ngang (cross-sectional) Còn GLS căn bản dựa trên giả định phương sai sai số không đổi (homoskedasticity), thường được sử dụng cho dữ liệu bảng (panel data) Mặc dù các lựa chọn thêm vào phía sau câu lệnh có thể giúp “relax” giả định này, nhưng nếu thêm vào thì bản chất của câu lệnh cũng thay đổi
Reply
2 Kim says: December 13, 2020 at 3:02 pm
Trang 79/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
Ad ơi cho mình hỏi, sau khi khắc phục phương sai thay đổi bằng hàm robust thì có chạy lại kiểm định white lại k ạ? Sao mình chạy lại thì kết quả vẫn bị phương sai thay đổi
Reply
Chung Mai says: December 14, 2020 at 11:48 am
Hi bạn, sau khi dùng robust thì ko cần chạy lại kiểm định White nữa nhé Khi dùng robust ko có nghĩa là mô hình sẽ khắc phục hiện tượng này, mà nó chỉ có nghĩa ước lượng của mô hình sẽ được điều chỉnh để phù hợp với hiện tượng này Hệ số hồi quy sẽ KO thay đổi, nhưng sai số (standard error) của nó sẽ thay đổi vì cách tính ra std.error lúc này đã dựa trên điều kiện là có hiện tượng
phương sai sai số thay đổi Std error thay đổi sẽ làm cho P-value thay đổi, nên có khả năng hệ số hồi quy không còn có ý nghĩa thống kê nữa Nếu như sau khi dùng robust, hệ số hồi quy của em vẫn có ý nghĩa thống kê thì okay nhé
Reply
3 Nguyễn Thị Yến Như says: January 4, 2021 at 3:51 pm
Hi admin, ad cho e hỏi e chạy xtgls bị lỗi này xử lý thế nào ạ:
YEAR is not regularly spaced or does not have intervals of delta — use
the force option to treat the intervals as though they were regular
Thank admin nhiều lắm ạ!
Reply
Chung Mai says: January 12, 2021 at 9:57 am
Có khả năng biến Year bị format ở dạng string nhé Có thể dùng lệnh destring để chuyển về format dạng số Mình có một bài viết về cách sử dụng lệnh destring đó, bạn tham khảo thử nha Với lại, bạn search fanpage How to STATA để có thể dễ inbox cho mình hơn nè
Reply
4 laluuuuuuuuuuuuuuuuuuuuuuuuuuuu says: May 25, 2021 at 3:21 pm
Uầy, đỉnh quá ạ Nhưng mà em lại chạy bằng python qua google collab chứ không phải stata nên hơi tiếc, nhưng mà đọc bài này xong em hiểu kĩ hơn về psss thay đổi ạ
Reply
Chung Mai says: June 2, 2021 at 2:36 pm
Hi em, chạy bằng phần mềm nào thì kết quả cũng như nhau mà Coding chỉ giúp mình có được kết quả thôi, còn quan trọng vẫn là hiểu bản chất của vấn đề là gì đúng ko? Nhưng em dùng python là đỉnh rồi á Ad cũng đang bập bẹ học đây
Reply
1 laluuuuuuuuuuuuuuuuuuuuuuuuuuuu says: June 3, 2021 at 9:54 am
Dạ vâng! em đọc phần lý thuyết của anh cũng như trong giáo trình thì hiểu được vấn đề khá rõ rồi ạ Nhưng mà em không tìm được tài liệu coding bằng python bằng tiếng việt vì tiếng anh có nhiều từ chuyên ngành mà em tìm mãi không ra được từ tiếng việt để hiểu nên khá khó ạ Nhưng
mà mỗi cái đều có một cái hay riêng ạ
5 Ngo Yen says: September 3, 2021 at 5:09 pm
mình chạy xtgls mà nó hiện “unknown egen function group” là sao v ạ, ad chỉ m cách khắc phục với Reply
Chung Mai says: September 3, 2021 at 6:27 pm
Trang 89/15/21, 2:39 PM Hiện tượng phương sai sai số thay đổi (Heteroskedasticity) – How to STATA
Theo ad tìm hiểu thông tin thì lỗi này thường gặp trên bản crack của STATA Nếu phần mềm bạn dùng update được thì bạn update lên nha Còn nếu đang dùng bản crack thì chắc phải cài lại nhỉ Reply
Website Powered by WordPress.com.