statsmodels.stats.oaxaca.OaxacaBlinder

class statsmodels.stats.oaxaca.OaxacaBlinder(endog, exog, bifurcate, hasconst=True, swap=True, cov_type='nonrobust', cov_kwds=None)[source]

用于执行Oaxaca-Blinder分解的类。

Parameters:
endogarray_like

内生变量或您试图解释的因变量。

exogarray_like

外生变量或用于解释内生变量的自变量。

bifurcate{int, str}

要分割的外生变量列。这通常是你希望解释两个均值的组。对于NumPy数组,列的整数索引;对于Pandas,列名的整数或字符串。

hasconstbool, optional

指示两个外生变量是否包含用户提供的常数。如果为True,则假设存在常数。如果为False,则在开始时添加常数。如果未提供任何内容,则默认假设为True。

swapbool, optional

模仿STATA的Oaxaca命令,允许用户选择交换组。与STATA不同,这里假设为True而不是False

cov_typestr, optional

参见 regression.linear_model.RegressionResults 以获取可用协方差估计器的描述

cov_kwdsdict, optional

请参阅 linear_model.RegressionResults.get_robustcov_results,了解替代协方差估计器所需的描述性关键字

注释

请检查您的数据是否包含常量。如果设置不正确,这仍然会运行,但会返回不正确的值。

您可以通过使用它们的代码作为属性来访问模型,例如,_t_model 表示总模型,_f_model 表示第一个模型,_s_model 表示第二个模型。

示例

>>> import numpy as np
>>> import statsmodels.api as sm
>>> data = sm.datasets.ccards.load()

‘3’ 是我们想要解释的列,或者是指示两个组的列。在这种情况下,它表示你是否租房。

>>> 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

方法

three_fold([std, n, conf])

计算三重Oaxaca Blinder分解

two_fold([std, two_fold_type, ...])

计算两倍或合并的Oaxaca Blinder分解

variance(decomp_type[, n, conf])

一个用于计算方差/标准差的辅助函数。


Last update: Oct 16, 2024