【问题标题】:Scipy stats.probplot not returning r^2 value bug?Scipy stats.probplot 不返回 r^2 值错误?
【发布时间】:2018-03-29 12:59:18
【问题描述】:

我目前正在使用 scipy 绘制数据矩阵 X 中一组特征变量的正态概率图。但是,我正在使用的模块没有返回我的 r^2 值。这是我的简单代码:

Data_Matrix=pd.read_csv('My csv')
My_datum=My_Data.as_matrix()
#loop through all feature variables
for i in range(My_datum.shape[1]):
    #just a simple print line for the column index and its shapiro test 
results
    print(i)
    print(a)
#plot    
pplot=stats.probplot(My_datum[:,i],dist='norm',fit=True, plot=plt )
    a=sp.stats.shapiro(My_datum[:,i])

我尝试在一些更简单的 numpy 数组上使用同一行,但无济于事。我正在 spyder 3 上使用 Ipython 控制台。提前致谢!

【问题讨论】:

  • 什么是r^2,为什么它必须返回那个值?
  • R^2 = 拟合优度
  • r^2 是决定系数,是 Stuart Buckingham 所说的线性预测器的“强度”!如果我能提供更多细节,请告诉我!

标签: python-3.x numpy scipy spyder


【解决方案1】:

Probplot 已经返回 R 值。您只需将其平方即可得到 R^2。

(slope, intercept, r) = stats.probplot(My_datum[:,i], dist='norm', fit=True, plot=plt)
R_squared = r**2

【讨论】:

  • 感谢您的回复!不过我有点困惑,我收到一个错误,我没有足够的值来解包(预期 3,得到 2?)
  • 啊,您可以尝试将 plot 设置为 True:即 (slope, intercept, r) = stats.probplot(My_datum[:,i], dist='norm', fit=True, plot=True)
  • 遗憾的是这不起作用,尽管如果我只是初始化两个元组而不是三个来保存我的值,它就可以工作!
  • 这很奇怪。根据这里:docs.scipy.org/doc/scipy-0.14.0/reference/generated/… 它应该返回一个具有 3 个值的元组。我还使用数据集的通用列表在我的计算机上使用它。
  • 我会继续玩,但感谢您回答我的问题!
【解决方案2】:

所以这有点奇怪,但它返回一个元组列表。您实际上只需要通过索引 probplot 函数从列表中提取第二个元组。您需要解压缩元组,然后对其进行平方。

slope, intercept, r = stats.probplot(My_datum[:,i], dist='norm', fit=True, plot=plt)[1]

r2 = r**2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 2018-10-06
    • 2019-06-02
    • 2014-01-16
    • 1970-01-01
    • 2013-12-30
    • 2014-01-06
    相关资源
    最近更新 更多