我正在使用 Python 和 Numpy 来计算任意程度的最佳拟合多项式。我传递了一个包含 x 值、 y 值和多项式拟合度(线性、二次等)的列表。
这很有用,但我还想计算 r (相关系数)和 r 平方(决定系数)。我将我的结果与 Excel 的最佳拟合趋势线能力,以及它计算的 r 平方值进行比较。使用这个,我知道我正确地计算了线性最佳拟合(度等于1)的 r 平方。然而,我的函数不适用于度数大于1的多项式。
Excel 可以做到这一点。如何使用 Numpy 计算高阶多项式的 r 平方?
我的功能是:
import numpy
# Polynomial Regression
def polyfit(x, y, degree):
results = {}
coeffs = numpy.polyfit(x, y, degree)
# Polynomial Coefficients
results['polynomial'] = coeffs.tolist()
correlation = numpy.corrcoef(x, y)[0,1]
# r
results['correlation'] = correlation
# r-squared
results['determination'] = correlation**2
return results