如何从适合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之外的任何解决方案感兴趣。
答案 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
影响和异常值统计数据尚未扩展到其他模型,主要是因为缺乏对明确处理此案例的统计文献的参考,以及不知道可用于单元测试的另一个包中的参考实现。 )