statsmodels WLS有get_influence()函数吗?

时间:2016-11-15 23:42:00

标签: python statsmodels

如何从适合python statsmodels的WLS模型中获得杠杆/ get_influence

http://statsmodels.sourceforge.net/stable/index.html

为例
# Load data
dat = sm.datasets.get_rdataset("Guerry", "HistData").data

# Fit regression model (using the natural log of one of the regressors)
results_ols = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit()
results_w = smf.wls('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit()

我可以打电话

results_ols.get_influence 

但不是results_wls.get_influence()

是否有wls的等价物?

我也会对statsmodels之外的任何解决方案感兴趣。

1 个答案:

答案 0 :(得分:1)

通过在加权变量上使用OLS,您可以获得加权变量的影响和异常值度量。

例如,如果mod_wls是您的WLS模型(模型实例,而不是结果实例),那么

res = sm.OLS(mod_wls.wendog, mod_wls.wexog).fit()
infl = res.get_influence()

AFAIK,大多数或所有影响力测量都是正确的,但它们是加权变量和观察值。根据原始变量对某些影响度量进行了一些定义,但这些定义将无法获得。例如,有两种方法可以为WLS定义帽子矩阵,一种方法对应于使用上述加权变量,另一种方式对原始变量有影响。

(类似的问题出现在GLM和RLM中,它们都基于迭代重加权最小二乘法,例如https://github.com/statsmodels/statsmodels/issues/808

影响和异常值统计数据尚未扩展到其他模型,主要是因为缺乏对明确处理此案例的统计文献的参考,以及不知道可用于单元测试的另一个包中的参考实现。 )