Skip to main content

Tu dong chon bien cong cu cho System/Difference GMM (Arellano-Bond / Blundell-Bond), xtabond2 <-> pydynpd.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gmmselector-0.1.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gmmselector-0.1.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file gmmselector-0.1.0.tar.gz.

File metadata

  • Download URL: gmmselector-0.1.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for gmmselector-0.1.0.tar.gz
Algorithm Hash digest
SHA256 281d4485a91e4d2319cd90b61cce39e41d73e2905376c0d1f453302b9da83807
MD5 60989b47bd37e2b2aaa8cd5d363759a1
BLAKE2b-256 ab0d4369d15a95ba15809e54af41ec00c47f44621f93971a01b449fdf073c053

See more details on using hashes here.

File details

Details for the file gmmselector-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: gmmselector-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for gmmselector-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 325b5523382783c60291b2fd27565eb7d55b814be8c87bcc2e3a9664db6dfcab
MD5 000e0095326f339f27e670174c4bdfe8
BLAKE2b-256 4e9ad2db55af64d16e222e660ec992cd1f5225f34c1c07918f72faa39ce845d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page