Wild Cluster Bootstrap Inference for Linear Models in Python
Project description
wildboottest
wildboottest
implements multiple fast wild cluster
bootstrap algorithms as developed in Roodman et al
(2019) and
MacKinnon, Nielsen & Webb
(2022).
It has similar, but more limited functionality than Stata's boottest, R's fwildcusterboot or Julia's WildBootTests.jl. It supports
- The wild cluster bootstrap for OLS (Cameron, Gelbach & Miller 2008, Roodman et al (2019)).
- Multiple new versions of the wild cluster bootstrap as described in MacKinnon, Nielsen & Webb (2022), including the WCR13, WCR31, WCR33, WCU13, WCU31 and WCU33.
- CRV1 and CRV3 robust variance estimation, including the CRV3-Jackknife as described in MacKinnon, Nielsen & Webb (2022).
At the moment, wildboottest
only computes wild cluster bootstrapped p-values, and no confidence intervals.
Other features that are currently not supported:
- The (non-clustered) wild bootstrap for OLS (Wu, 1986).
- The subcluster bootstrap (MacKinnon and Webb 2018).
- Confidence intervals formed by inverting the test and iteratively searching for bounds.
- Multiway clustering.
Direct support for statsmodels and linearmodels is work in progress.
If you'd like to cooperate, either send us an email or comment in the issues section!
Installation
You can install wildboottest
from PyPi by running
pip install wildboottest
Example
from wildboottest.wildboottest import wildboottest
import statsmodels.api as sm
import numpy as np
import pandas as pd
# create data
np.random.seed(12312312)
N = 1000
k = 10
G = 25
X = np.random.normal(0, 1, N * k).reshape((N,k))
X = pd.DataFrame(X)
X.rename(columns = {0:"X1"}, inplace = True)
beta = np.random.normal(0,1,k)
beta[0] = 0.005
u = np.random.normal(0,1,N)
Y = 1 + X @ beta + u
cluster = np.random.choice(list(range(0,G)), N)
# estimation
model = sm.OLS(Y, X)
wildboottest(model, param = "X1", cluster = cluster, B = 9999, bootstrap_type = "11")
# param statistic p-value
# 0 X1 [-1.0530803154504016] 0.308831
wildboottest(model, param = "X1", cluster = cluster, B = 9999, bootstrap_type = "31")
# param statistic p-value
# 0 X1 [-1.0530803154504016] 0.307631
wildboottest(model, param = "X1", cluster = cluster, B = 9999, bootstrap_type = "33")
# param statistic p-value
# 0 X1 [-1.0394791020434824] 0.294286
wildboottest(model, cluster = cluster, B = 9999)
# param statistic p-value
# 0 X1 [-1.0530803154504016] 0.315132
# 1 1 [-18.5149486170657] 0.000000
# 2 2 [7.831855813581191] 0.000000
# 3 3 [-16.85188951397906] 0.000000
# 4 4 [-12.721095348008182] 0.000000
# 5 5 [1.200524160940055] 0.243624
# 6 6 [6.870946666836135] 0.000000
# 7 7 [-31.31653422266621] 0.000000
# 8 8 [10.26443257212472] 0.000000
# 9 9 [-20.650361366939535] 0.000000
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for wildboottest-0.1.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2ba566a2c63782017c84ba02416473793fe2df09635c4284728555a4057fb39 |
|
MD5 | 4d5365e6942e0268fef8b8b6b1eb796f |
|
BLAKE2b-256 | 4c9c00c0df80f0e9683a37e9c6091aa317dac0f9d548a0f01fbb2abad2ae62c4 |