【问题标题】:R-Squared of alternative model替代模型的 R 平方
【发布时间】:2015-06-25 16:54:50
【问题描述】:

为了减少异常值的影响并获得更稳健的回归,我应用了一种 Winsorization 技术来修改系列 ('x') 的值。然后我将这些值与系列“y”进行回归。

这个模型的 R 平方自然要高得多,但我没有做出正确的比较。

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

【问题讨论】:

    标签: pandas scipy statsmodels


    【解决方案1】:

    您需要自己计算,主要是通过复制 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 是您的winsorized 模型的预测值或拟合值,并且y_orig 是您原始未更改的响应变量,则最后一个表达式将适用于您的情况。如果模型中有常数,则此 R 平方的定义适用。

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

    【讨论】:

      猜你喜欢
      • 2018-01-01
      • 2022-12-20
      • 2016-05-13
      • 2021-02-15
      • 2020-02-12
      • 1970-01-01
      • 2014-06-24
      • 2012-08-15
      • 1970-01-01
      相关资源
      最近更新 更多