Skip to main content

gmmselector

Tự động lựa chọn biến công cụ (instrument) cho mô hình System / Difference GMM (Arellano–Bond, Blundell–Bond) — tương đương xtabond2 (Stata) ↔ pydynpd (Python).

Thư viện sinh toàn bộ lưới đặc tả ứng viên (kết hợp cách xử lý ngoại sinh / tiền định / nội sinh, độ trễ, collapse, biến giả thời gian, System vs Difference), ước lượng từng đặc tả, lọc theo 4 điều kiện chuẩn và xếp hạng để chọn ra đặc tả tốt nhất; đồng thời chạy kiểm định nội sinh Difference-in-Hansen cho tất cả các biến, gồm cả biến trễ của biến phụ thuộc.

Cài đặt

pip install gmmselector

Khi phát triển cục bộ:

pip install -e .

Phụ thuộc: numpy, pandas, scipy, pydynpd>=0.2.2, openpyxl.

Lưu ý numpy 2.x: pydynpd 0.2.2 còn gọi numpy.in1d (đã bị gỡ ở numpy ≥ 2.0). gmmselector tự vá numpy.in1d = numpy.isin ngay khi import nên chạy được trên cả Jupyter/numpy mới lẫn Google Colab.

Sử dụng (Python / notebook)

import gmmselector as gs

# 1) Cấu hình
gs.configure(
    data="sd_gdp.csv",          # đường dẫn .csv/.xlsx, hoặc một pandas.DataFrame
    id_col="id",                # cột panel id
    time_col="year",            # cột thời gian
    dep="sd_gdp",               # biến phụ thuộc
    indeps=["private", "trade", "lngdp", "inflation", "employment"],
)

# 2) Báo cáo kiểm định nội sinh TẤT CẢ biến (gồm cả biến trễ phụ thuộc L1.sd_gdp)
gs.endogeneity()

# 3) Tự chạy B2–B5 và xuất kết quả ra Excel
gs.search()                     # mặc định xuất gmm_selection_results.xlsx

configure() tự thêm trễ bậc 1 của biến phụ thuộc (L1.sd_gdp) để tạo mô hình động. Nếu bạn muốn mô hình tĩnh (không có biến trễ phụ thuộc), đặt add_dep_lag=False.

Dùng theo kiểu hướng đối tượng

from gmmselector import GMMSelector

m = GMMSelector(
    data="sd_gdp.csv", id_col="id", time_col="year",
    dep="sd_gdp",
    indeps=["private", "trade", "lngdp", "inflation", "employment"],
)
m.endogeneity()                 # -> DataFrame, đồng thời in báo cáo
res = m.search(output="ket_qua.xlsx")   # -> DataFrame các đặc tả đã xếp hạng

Sử dụng (dòng lệnh)

gmmselector --data sd_gdp.csv --id id --time year \
    --dep sd_gdp \
    --indeps private trade lngdp inflation employment \
    --output ket_qua.xlsx

Thêm --no-dep-lag cho mô hình tĩnh, --no-endogeneity để bỏ qua bước B1.

Bốn điều kiện lọc

  1. Số công cụ < số nhóm (inst < groups).
  2. AR(1) p < 0,10.
  3. AR(2) p > 0,10.
  4. Hansen p > 0,10 (cảnh báo nếu p > 0,25 hoặc > 0,80 — nguy cơ "loãng công cụ", Roodman 2009).

Xếp hạng ưu tiên: đạt cả 4 điều kiện → ưu tiên System GMM → ít công cụ nhất → Hansen cao nhất. Báo cáo search() cho biết rõ đặc tả thắng là SYSTEM GMM hay DIFFERENCE GMM, kèm phân bố số đặc tả System vs Difference trong nhóm đạt chuẩn.

Ràng buộc cách xử lý từng biến theo lý thuyết

Mặc định lưới thử cả ba cách xử lý (exog/predet/endog) cho mọi biến. Nếu muốn ép theo phân loại nội sinh (từ lý thuyết hoặc từ kết quả endogeneity()), truyền vào search():

gs.search(
    reg_allow=("endog",),                     # mặc định cho mọi biến
    reg_allow_map={"trade": ("predet",),      # trade: tiền định
                   "employment": ("exog",)},  # employment: ngoại sinh
)

Lưu ý phương pháp

  • Kiểm định Difference-in-Hansen có lực kiểm định thấp; "không bác bỏ" không đồng nghĩa biến chắc chắn ngoại sinh — nhất là khi số nhóm N nhỏ.
  • GMM động chủ yếu được biện minh bởi biến trễ phụ thuộc (chệch panel động, Nickell 1981), không chỉ bởi nội sinh của các regressor. Nếu mô hình không thực sự động và các biến ngoại sinh, hãy cân nhắc FE/RE; nếu động nhưng N nhỏ, cân nhắc LSDV hiệu chỉnh chệch.

Tham khảo

Arellano & Bond (1991); Arellano & Bover (1995); Blundell & Bond (1998); Hansen (1982); Roodman (2009, Stata Journal & Oxford Bull. Econ. Stat.); Nickell (1981).

Giấy phép

MIT © 2026 Anh Le

Metadata

Release files for gmmselector 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gmmselector 0.1.1
File Size Uploaded
gmmselector-0.1.1.tar.gz 16.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gmmselector 0.1.1
File Interpreter ABI Platform
gmmselector-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 31.4 kB

Release files / gmmselector-0.1.1.tar.gz

Download URL gmmselector-0.1.1.tar.gz
Size 16.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b0bca27c6c9d0e0ca904e0ad9b9a6061b2323bb018c233b13e41579fcc5056b1
BLAKE2b-256 checksum
How to use checksums
9d465c6005560d7196a747699e151b158613aeeba5c7a13d212cd91366d9701c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / gmmselector-0.1.1-py3-none-any.whl

Download URL gmmselector-0.1.1-py3-none-any.whl
Size 15.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
730ee01b1f4196674b04b59347019ef796ad25d981da2edf239aed85f7a62105
BLAKE2b-256 checksum
How to use checksums
c5b4c62fff77907955f18d6e0ff2abd8f353350e93fa2b37e7542fd2ff9eca99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page