Я использую Python и Numpy для вычисления наилучшего подходящего многочлена произвольной степени. Я передаю список значений x, значений y и степень полинома, которую я хочу поместить (линейный, квадратичный и т.д.).
Это много работает, но я также хочу рассчитать r (коэффициент корреляции) и r-квадрат (коэффициент определения). Я сравниваю свои результаты с наилучшей способностью линии тренда Excel и значением r-квадрата, которое он вычисляет. Используя это, я знаю, что я правильно вычисляю r-квадрат для линейного наилучшего соответствия (степень равна 1). Однако моя функция не работает для многочленов со степенью больше 1.
Excel может это сделать. Как вычислить r-квадрат для многочленов более высокого порядка с помощью Numpy?
Здесь моя функция:
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