R2 的计算

Calculation of R2

我尝试用这些值找到决定系数 (R2): valeur_T= [45, 77, 102]

valeur_min = [55, 80, 105]

我尝试计算 R2,但我总是找到相同的结果

        P2 = polyfit(valeur_T,valeur_min, 2)
        p= poly1d(P2)
        yhat = p(valeur_T)
        ybar = sum(valeur_min)/len(valeur_min)
        SST = sum((valeur_min - ybar)**2)
        SSreg = sum((yhat - ybar)**2)

        R2 = SSreg/SST

SST 和 SSreg 始终具有相同的值且 R2=1

我的错误在哪里?

您正在通过 3 个点拟合二阶多项式,因此您自然会得到完美拟合 (R2=1)。您的其他错误似乎源于您使用常规 Python 列表而不是支持矢量化操作的 NumPy 数组,例如您要在此处执行的操作:

SST = sum((valeur_min - ybar)**2)

添加一个额外的数据点并修改您的代码以在整个过程中支持 NumPy,

import numpy as np

valeur_T= np.array([45., 77, 102, 110])
valeur_min = np.array([55., 80, 105, 122.])

P2 = np.polyfit(valeur_T,valeur_min, 2)
p= np.poly1d(P2)
yhat = p(valeur_T)
ybar = sum(valeur_min)/len(valeur_min)
SST = sum((valeur_min - ybar)**2)
SSreg = sum((yhat - ybar)**2)

R2 = SSreg/SST
print R2

给予

0.993316215465

当然,只有您能说出此改编代码是否适合您的用例。