Pooled OLS — Hồi quy gộp dữ liệu bảng
Pooled OLS gộp toàn bộ quan sát của dữ liệu bảng (N đơn vị × T kỳ) thành một mẫu duy nhất rồi chạy OLS như dữ liệu chéo, bỏ qua cấu trúc bảng. Đây là mô hình cơ sở (baseline) để so sánh với FE/RE.
Giả định mạnh
Pooled OLS giả định không có hiệu ứng cá thể ( giống nhau mọi đơn vị). Nếu tồn tại đặc điểm riêng không quan sát được tương quan với , Pooled OLS chệch ⇒ dùng FE. Sai số trong cùng đơn vị thường tương quan ⇒ cần sai số chuẩn cụm (clustered).
Đặc tả mô hình
Giống OLS nhưng dùng toàn bộ quan sát. Nên dùng clustered SE theo đơn vị.
Thực hiện trong EcoLab
- Module Mô hình hóa → họ Dữ liệu bảng tuyến tính → Pooled OLS.
- Khai báo entity/time, , ; chọn clustered SE.
- Chạy; so sánh với FE/RE qua kiểm định; xuất mã tái lập.
Minh họa mã tái lập
- Stata
- R
- Python
* === Pooled OLS với sai số chuẩn cụm ===
* Sai số chuẩn cụm theo đơn vị (entity)
reg y x1 x2, vce(cluster id)
# === Pooled OLS (R — plm) ===
library(plm)
pdata <- pdata.frame(df, index = c("id", "year"))
# Pooled OLS (model = "pooling")
model_pool <- plm(y ~ x1 + x2, data = pdata, model = "pooling")
summary(model_pool)
# Sai số chuẩn cụm theo đơn vị
library(lmtest)
coeftest(model_pool, vcov = vcovHC(model_pool,
type = "HC1", cluster = "group"))
from linearmodels.panel import PooledOLS
import statsmodels.api as sm
# === Pooled OLS (Python — linearmodels) ===
df = df.set_index(['id', 'year'])
y = df['y']
X = sm.add_constant(df[['x1', 'x2']])
model = PooledOLS(y, X).fit(cov_type='clustered', cluster_entity=True)
print(model.summary)