Hồi quy tuyến tính Python cho luận văn thường được thực hiện bằng thư viện statsmodels, theo bốn bước: chuẩn bị dữ liệu, đặc tả và ước lượng mô hình bình phương nhỏ nhất (OLS), đánh giá giả định, rồi diễn giải hệ số. Mỗi bước đều để lại dấu vết trong notebook, giúp bạn giải trình được vì sao mô hình có dạng như vậy.
Bài viết dùng ví dụ minh họa là một đề tài giả định về ý định nghỉ việc của nhân viên, chịu tác động của sự hài lòng với thu nhập, áp lực công việc và mức hỗ trợ từ quản lý. Bạn sẽ biết nên đọc dòng nào trong bảng kết quả, kiểm tra giả định bằng công cụ nào và trình bày hệ số ra sao.
Tóm tắt nhanh: dùng statsmodels khi cần suy luận thống kê, vì thư viện này trả về sai số chuẩn, giá trị p và khoảng tin cậy.
Sau khi ước lượng, hãy xem phần dư, VIF và điểm ảnh hưởng trước khi viết bất kỳ câu diễn giải nào.
Chuẩn bị dữ liệu cho hồi quy tuyến tính Python
Mô hình chỉ tốt bằng dữ liệu đưa vào. Trước khi viết công thức, bạn cần một DataFrame đã làm sạch, có đủ các biến trong mô hình và kiểu dữ liệu đúng. Bước mô tả từng biến, nhất là phân phối và giá trị ngoại lai, nên hoàn thành trước theo bài thống kê mô tả Python cho luận văn.
Tạo biến tổng hợp và kiểm soát cỡ mẫu
Với thang đo nhiều câu hỏi, điểm của mỗi nhân tố thường là trung bình các câu, tính bằng mean() theo hàng. Lưu ý rằng statsmodels tự loại mọi dòng thiếu dữ liệu ở bất kỳ biến nào trong công thức. Vì vậy, hãy đếm số dòng đầy đủ trước khi ước lượng và so với thuộc tính nobs của mô hình để biết chính xác cỡ mẫu được dùng.
Biến phân loại và nhóm tham chiếu
Biến như loại hình doanh nghiệp được đưa vào công thức bằng cú pháp C(), và thư viện tự tạo biến giả. Mặc định, nhóm đứng đầu theo thứ tự chữ cái sẽ làm nhóm tham chiếu, điều này không phải lúc nào cũng hợp lý. Bạn có thể chỉ định nhóm tham chiếu bằng Treatment(reference=...) bên trong C(), rồi ghi rõ nhóm đó ở chú thích bảng.
Nên dùng statsmodels hay scikit-learn?
Cả hai thư viện đều chạy được hồi quy tuyến tính Python, nhưng phục vụ hai mục đích khác nhau. scikit-learn với LinearRegression hướng tới dự báo, chỉ trả về hệ số và điểm số dự báo, không có sai số chuẩn hay giá trị p. statsmodels hướng tới suy luận, phù hợp hơn khi luận văn cần kiểm định giả thuyết.
Nếu đề tài của bạn có thêm phần đánh giá khả năng dự báo trên tập kiểm tra, tài liệu scikit-learn hướng dẫn cách chia dữ liệu và đánh giá sai số. Với mục tiêu kiểm định quan hệ giữa các biến, phần còn lại của bài chỉ dùng statsmodels.
Đặc tả và ước lượng mô hình OLS
Đặc tả nghĩa là quyết định biến nào vào mô hình và vì sao. Mỗi biến độc lập phải gắn với một giả thuyết đã nêu ở chương cơ sở lý thuyết, còn biến kiểm soát cần căn cứ từ nghiên cứu trước. Nếu mô hình còn mơ hồ, bài xây dựng mô hình từ giả thuyết nghiên cứu giúp bạn rà lại trước khi chạy lệnh.
Viết công thức từ giả thuyết
Giao diện công thức của statsmodels.formula.api cho phép viết mô hình gần giống ký hiệu toán học: biến phụ thuộc đứng trước dấu ngã, các biến độc lập nối nhau bằng dấu cộng. Hàm ols() nhận công thức cùng DataFrame, sau đó fit() trả về đối tượng kết quả. Tương tác giữa hai biến viết bằng dấu hai chấm hoặc dấu sao, chỉ đưa vào khi có giả thuyết điều tiết.
Đọc bảng summary từng phần
Gọi summary() trên đối tượng kết quả sẽ in ra ba khối thông tin. Những dòng cần chú ý gồm:
- coef và std err: hệ số chưa chuẩn hóa và sai số chuẩn của từng biến.
- P>|t| cùng hai cột khoảng tin cậy 95%: cơ sở để kết luận hệ số có khác 0 hay không.
- R-squared và Adj. R-squared: tỷ lệ biến thiên của ý định nghỉ việc được mô hình giải thích.
- F-statistic và xác suất đi kèm: kiểm định ý nghĩa chung của toàn mô hình.
- Cond. No.: chỉ báo sơ bộ về đa cộng tuyến, cần kiểm tra lại bằng VIF.
Ý nghĩa đầy đủ của từng chỉ số được giải thích trong tài liệu statsmodels. Khối cuối có thêm Omnibus, Jarque–Bera và Durbin–Watson; chỉ số Durbin–Watson quan trọng hơn với dữ liệu chuỗi thời gian so với dữ liệu khảo sát cắt ngang.
Đánh giá giả định của mô hình
Hệ số OLS và giá trị p chỉ đáng tin khi phần dư thỏa mãn một số điều kiện. Phần dư lấy từ thuộc tính resid, giá trị dự báo từ fittedvalues, và hầu hết kiểm tra đều dựa trên hai đại lượng này. Bảng dưới đây tóm tắt các công cụ sẵn có trong statsmodels kèm mốc tham khảo thường gặp.
| Giả định | Công cụ trong statsmodels | Mốc tham khảo | Hướng xử lý gợi ý |
|---|---|---|---|
| Quan hệ tuyến tính | Biểu đồ phần dư theo giá trị dự báo | Các điểm phân tán ngẫu nhiên quanh 0 | Thêm biến bậc hai hoặc lấy log biến lệch |
| Phương sai sai số không đổi | het_breuschpagan() | p nhỏ hơn 0,05 gợi ý phương sai thay đổi | Dùng sai số chuẩn vững HC3 |
| Phần dư gần phân phối chuẩn | qqplot() trên phần dư | Điểm bám sát đường chéo | Với mẫu lớn, ưu tiên nhận định bằng hình |
| Không đa cộng tuyến nghiêm trọng | variance_inflation_factor() | VIF trên 10 đáng lo theo Hair và cộng sự; nhiều tác giả dùng mốc 5 | Xem lại các biến đo khái niệm gần nhau |
| Không có quan sát chi phối | get_influence() và Cook’s distance | Thường xem xét khi vượt 4/n | Kiểm tra lỗi nhập, so sánh mô hình có và không có điểm đó |
Các mốc trên là quy ước tham khảo, không phải luật cứng. Hãy đối chiếu yêu cầu của giảng viên hoặc tạp chí, và nếu cần trích dẫn cơ sở lý thuyết của phân tích phần dư, NIST/SEMATECH e-Handbook là nguồn tham chiếu đáng tin cậy.
Tính VIF đúng cách
Hàm variance_inflation_factor() nhận ma trận biến độc lập dưới dạng mảng và chỉ số cột cần tính. Ma trận này phải có cột hằng số, thêm bằng add_constant(), nếu không giá trị VIF sẽ bị sai lệch. Bỏ qua dòng VIF của hằng số khi báo cáo, chỉ giữ các biến độc lập.
Sai số chuẩn vững khi phương sai thay đổi
Khi kiểm định Breusch–Pagan cho thấy phương sai sai số thay đổi, bạn có thể ước lượng lại với tham số cov_type="HC3" trong fit(). Hệ số giữ nguyên, chỉ sai số chuẩn, giá trị p và khoảng tin cậy thay đổi. Hãy nêu rõ lựa chọn này trong chương phương pháp.
Kinh nghiệm từ Luận Văn 360: lỗi chúng tôi gặp nhiều khi rà notebook là tính VIF trên ma trận không có hằng số, khiến mọi biến đều có VIF rất cao và học viên vội loại bớt biến.
Trước khi bỏ một biến khỏi mô hình, hãy kiểm tra lại cách tính và cân nhắc cơ sở lý thuyết của biến đó.
Nếu notebook của bạn đã chạy xong nhưng phần kiểm tra giả định còn rời rạc, dịch vụ hỗ trợ phân tích dữ liệu Python của Luận Văn 360 có thể rà soát mã, cách chọn kiểm định và lời diễn giải. Bạn nhận góp ý cụ thể, tự điều chỉnh và chịu trách nhiệm về kết quả cuối cùng.
Diễn giải và trình bày kết quả hồi quy
Một câu diễn giải tốt nêu hướng, độ lớn và mức chắc chắn của quan hệ. Ví dụ minh họa: khi áp lực công việc tăng một điểm trên thang năm mức, ý định nghỉ việc trung bình cao hơn khoảng 0,32 điểm, các yếu tố khác giữ nguyên. Với dữ liệu khảo sát cắt ngang, nên dùng “có liên hệ” thay vì “gây ra”.
Lập bảng kết quả bằng mã
Thay vì chép tay từ summary, hãy ghép params, bse, pvalues và conf_int() thành một DataFrame, làm tròn rồi xuất ra Excel. Bảng hồi quy trong luận văn thường gồm:
- Tên biến, kèm nhóm tham chiếu của biến phân loại.
- Hệ số chưa chuẩn hóa và sai số chuẩn.
- Khoảng tin cậy 95% và giá trị p.
- Hệ số chuẩn hóa nếu khoa yêu cầu, tính bằng cách chuẩn hóa biến trước khi ước lượng.
- Dòng ghi chú: R bình phương hiệu chỉnh, thống kê F, cỡ mẫu và loại sai số chuẩn đã dùng.
Câu hỏi thường gặp về hồi quy tuyến tính Python
Cond. No. rất lớn có nghĩa là mô hình hỏng?
Không hẳn. Chỉ số này nhạy với thang đo của biến, nên chỉ cần một biến như thu nhập tính bằng đồng là con số đã tăng vọt. Hãy kiểm tra VIF trước khi kết luận về đa cộng tuyến.
Có nên tự loại biến không có ý nghĩa thống kê?
Không nên loại chỉ vì giá trị p lớn hơn 0,05. Một giả thuyết không được ủng hộ vẫn là kết quả cần báo cáo và thảo luận. Việc loại dần biến để mô hình “đẹp” hơn làm sai lệch suy luận và cần tránh.
Kết luận
Hồi quy tuyến tính Python cho luận văn nên đi đủ bốn bước: chuẩn bị dữ liệu và kiểm soát cỡ mẫu, đặc tả mô hình từ giả thuyết, đánh giá giả định bằng phần dư, VIF và điểm ảnh hưởng, rồi diễn giải hệ số kèm khoảng tin cậy. Mọi điều chỉnh cần nằm trong mã và được nêu ở chương phương pháp.
Trước khi gửi notebook cho giảng viên, hãy soát lại theo danh mục kiểm tra tính tái lập notebook để người khác chạy lại được kết quả. Khi cần một lượt góp ý độc lập cho mô hình và bảng kết quả, hãy tìm hiểu dịch vụ phân tích dữ liệu Python của Luận Văn 360.
