【问题标题】:get the R^2 value from scipy.linalg.lstsq从 scipy.linalg.lstsq 获取 R^2 值
【发布时间】:2015-05-19 08:00:47
【问题描述】:

我有一个使用 scipy.linalg.lstsq 函数的拟合 3D 数据集。
我正在使用:

# best-fit quadratic curve    
A = np.c_[np.ones(data.shape[0]), data[:,:2], np.prod(data[:,:2], axis=1), data[:,:2]**2]    
C,_,_,_ = scipy.linalg.lstsq(A, data[:,2])    
#evaluating on grid      
Z = np.dot(np.c_[np.ones(XX.shape), XX, YY, XX*YY, XX**2, YY**2], C).reshape(X.shape)

但是我怎样才能从中获得拟合曲面的 R^2 值。?
有什么方法可以检查拟合结果的重要性吗?

任何与此相关的想法都将受到高度赞赏。
谢谢。

【问题讨论】:

    标签: python numpy scipy least-squares


    【解决方案1】:

    关注http://en.wikipedia.org/wiki/Coefficient_of_determination

    B = data[:,2]
    
    SStot = ((B - B.mean())**2).sum()
    SSres = ((B - np.dot(A,C))**2).sum()
    R2 = 1 - SSres / SStot
    

    正如 Wikipedia 文章中所述,R2 有很多缺点。据我所知,scipy/numpy 与 statsmodels 之类的库相比较差。

    如果您想运行多元回归,因为您需要计算事后估计的系数标准误差、t 统计量、p 值等等,如果您想知道数据中发生了什么。

    有很多帖子专门用于使用 Python 运行 OLS,所以只需选择一个,例如:http://www.datarobot.com/blog/ordinary-least-squares-in-python/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-26
      • 2014-06-30
      • 2015-03-19
      • 2016-10-27
      • 1970-01-01
      • 2022-06-10
      • 2016-10-08
      • 2015-04-11
      相关资源
      最近更新 更多