我有一个线性模型,我试图用内生变量中的异常值来拟合数据,但不是在外生空间。我研究过基于M估计的RLM在这种情况下是很好的。
当我按照以下方式将RLM与数据匹配时:
import numpy as np
import statsmodels.formula.api as smf
import statsmodels as sm
modelspec = ('cost ~ np.log(units) + np.log(units):item + item') #where item is a categorical variable
results = smf.rlm(modelspec, data = dataset, M = sm.robust.norms.TukeyBiweight()).fit()
print results.summary()
总结结果显示z统计量,而显著性系数检验似乎是基于此而不是t统计量。但是,下面的R手册(http://www.dst.unive.it/rsr/BelVenTutorial.pdf)显示了第19-21页上t统计的使用
两个问题:
有人能从概念上解释为什么statsmodels使用z-测试而不是t-测试吗?
所有项和相互作用在结果中都具有高度显著性(| z |>4)。在大多数情况下,每个项目都有40个或更多的观察结果。有些项目有21-25个观察结果。有没有理由相信RLM在小样本环境下是无效的?它产生的线必须是重新加权离群值后的最佳拟合线,但是z检验对这种大小的样本有效吗(即,是否有理由相信smf.rlm()产生的置信区间不会产生95%的概率覆盖率?我知道对于t检验来说这可能是个问题?
谢谢!
最佳答案
我几乎只有一个一般的答案,我从来没有读过任何小样本蒙特卡罗研究的M-估计。
到1。
在许多模型中,如M-估计、RLM或广义线性模型GLM,除了一些特殊情况外,我们只有渐近结果。渐近结果提供了估计量为正态分布的条件。鉴于此,statsmodels默认对线性回归模型、OLS和类似模型之外的所有模型使用正态分布,而不是联合假设Wald检验的F分布。
有一些证据表明,在许多情况下,使用适当的自由度选择的T或F分布提供了更好的小样本近似的测试统计量的分布。这依赖于蒙特卡罗结果,据我所知,这并不是由理论直接证明的。
在下一个版本中,以及在当前的开发版本中,statsmodels用户可以选择使用t和F分布来获得结果,而不是使用正态分布和chisquare分布。默认值保持不变。
还有一些情况不清楚t分布是否正确,以及应该使用哪种小样本自由度。在许多情况下,statsmodels试图遵循STATA的思想,例如在OLS之后的集群健壮标准错误中。
另一个结果是,有时作为不同模型的特殊情况的等效模型在Stata和statsmodels中对分布使用不同的默认假设。
我最近阅读了M-估计量的SAS文档,SAS使用的是chisquare分布,也就是正态假设,用于参数估计的重要性和置信区间。
到2。
(见第一句)
我认为同样的线性模型也适用于这里。如果数据高度非正常,那么测试统计可能在小样本中有不正确的覆盖率。这也适用于一些稳健的三明治协方差估计。另一方面,如果我们不使用异方差或相关稳健协方差估计,那么测试也可能是强偏差的。
对于稳健估计方法,如M-估计、RLM,有效样本大小也取决于内联数或分配给观测值的权重,而不仅仅取决于观测值的总数。
对于您的情况,我认为z值和样本大小足够大,例如,使用t分布不会使它们变得不那么重要。
比较不同范数和尺度估计的M-估计,可以进一步检验在异常值假设下的稳健性和稳健性估计的选择。另一个交叉检验:带有丢弃异常值的OLS(RLM估计中权重较小的观测值)是否给出了类似的答案。
最后作为一般警告:
关于稳健方法的文献常常警告我们不要盲目地使用(离群)稳健方法。使用稳健的方法估计基于“内联”的关系。但是,我们丢弃或降低异常值的权重是合理的吗?或者,我们是否有缺失的非线性,缺失的变量,混合分布或不同的制度?
关于python - Python Statsmodels基于基于M估计器的稳健线性模型测试系数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21538519/