statsmodels.stats.oaxaca.OaxacaBlinder#
- class statsmodels.stats.oaxaca.OaxacaBlinder(endog, exog, bifurcate, hasconst=True, swap=True, cov_type='nonrobust', cov_kwds=None, rng=None)[source]#
Class to perform Oaxaca-Blinder Decomposition
- Parameters:
- endogarray_like
The endogenous variable or the dependent variable that you are trying to explain.
- exogarray_like
The exogenous variable(s) or the independent variable(s) that you are using to explain the endogenous variable.
- bifurcate{
int,str} The column of the exogenous variable(s) on which to split. This would generally be the group that you wish to explain the two means for. Int of the column for a NumPy array or int/string for the name of the column in Pandas.
- hasconstbool,
optional Indicates whether the two exogenous variables include a user-supplied constant. If True, a constant is assumed. If False, a constant is added at the start. If nothing is supplied, then True is assumed.
- swapbool,
optional Imitates the STATA Oaxaca command by allowing users to choose to swap groups. Unlike STATA, this is assumed to be True instead of False.
- cov_type
str,optional See regression.linear_model.RegressionResults for a description of the available covariance estimators.
- cov_kwds
dict,optional See linear_model.RegressionResults.get_robustcov_results for a description of the required keywords for alternative covariance estimators.
- rng{
None,int, array_like[int],numpy.random.Generator,numpy.random.RandomState},optional If rng is None, a new
Generatoris created using fresh entropy from the operating system. If rng is an int or array of ints, a newGeneratoris created, seeded with rng. If rng is already aGeneratororRandomStateinstance, that instance is used.
Methods
three_fold([std, n, conf])Calculates the three-fold Oaxaca Blinder Decompositions
two_fold([std, two_fold_type, ...])Calculates the two-fold or pooled Oaxaca Blinder Decompositions
variance(decomp_type[, n, conf])A helper function to calculate the variance/std
Notes
Please check if your data includes a constant. This will still run, but will return incorrect values if set incorrectly.
You can access the models by using their code as an attribute, e.g., _t_model for the total model, _f_model for the first model, _s_model for the second model.
Examples
>>> import numpy as np >>> import statsmodels.api as sm >>> data = sm.datasets.ccards.load()
‘3’ is the column of which we want to explain or which indicates the two groups. In this case, it is if you rent.
>>> model = sm.OaxacaBlinder(df.endog, df.exog, 3, hasconst = False) >>> model.two_fold().summary() Oaxaca-Blinder Two-fold Effects Unexplained Effect: 27.94091 Explained Effect: 130.80954 Gap: 158.75044
>>> model.three_fold().summary() Oaxaca-Blinder Three-fold Effects Endowments Effect: 321.74824 Coefficient Effect: 75.45371 Interaction Effect: -238.45151 Gap: 158.75044
Methods
three_fold([std, n, conf])Calculates the three-fold Oaxaca Blinder Decompositions
two_fold([std, two_fold_type, ...])Calculates the two-fold or pooled Oaxaca Blinder Decompositions
variance(decomp_type[, n, conf])A helper function to calculate the variance/std