替代模型的 R 平方

R-Squared of alternative model

为了减少离群值的影响并获得更稳健的回归,我应用了winsorization 技术来修改序列的值('x')。然后我根据系列 'y'.

回归这些值

这个模型的R-squared自然要高很多,但我没有做正确的比较。

我如何使用 scipy 或 statsmodels 获得 原始 数据的 R 平方,使用来自 winsorized 模型的 beta 估计值?

您需要自己计算,基本上是通过复制 rsquared 的公式。

例如

>>> res_tmp = OLS(np.random.randn(100), np.column_stack((np.ones(100),np.random.randn(100, 2)))).fit()
>>> y_orig = res_tmp.model.endog
>>> res_tmp.rsquared
0.022009069788207714

>>> (1 - ((y_orig - res_tmp.fittedvalues)**2).sum() / ((y_orig - y_orig.mean())**2).sum())
0.022009069788207714

如果 res_tmp.fittedvalues 是您的缩尾模型的预测值或拟合值,并且 y_orig 是您最初未更改的响应变量,那么最后一个表达式将适用于您的情况。如果模型中有常数,则适用 R 平方的定义。

注意:线性模型最常见的命名对应y = X b,其中y是响应变量,X是解释变量。 IIUC,那么你把问题中的标签颠倒了。