我如何从适合python statsmodels的WLS模型中获取杠杆/获取影响力

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之外的任何解决方案感兴趣。

最佳答案

通过对加权变量使用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

影响力和异常值统计尚未扩展到其他模型,主要是因为缺少对明确处理这种情况的统计文献的参考,并且由于不了解可用于单元测试的另一个程序包中的参考实现。

关于python - statsmodels WLS是否具有get_influence()函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40621686/

10-12 21:58