E. Weglarz E. Weglarz - 1 year ago 267
Python Question

Obtaining Polynomial Regression Stats in Numpy

I am looking to obtain the coefficients and intercept using a polynomial regression (polyfit) in Numpy, but am not sure how to write the script to get a polynomial function.

I have made code the code for a linear regression, which I have attached below:

import matplotlib.pyplot as plt
import sys
from numpy import *
import numpy as np
import numpy.polynomial.polynomial as poly
import pylab
from scipy import stats
from scipy.interpolate import *
from datetime import datetime, timedelta

#Open dataset1,dataset2 data

data1 = np.loadtxt('/home/script/2_columns', delimiter=',', skiprows=0)

data2 = np.loadtxt('/home/script/2_columns_a', delimiter=',', skiprows=0)

#Define first column as dataset1

#Define second column as dataset2

x = data1[:,0]
y = data1[:,1]

#The stuff...
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)

Answer Source

Do you need the stats? If not, and you just need the coefficients, it's really quite simple using numpy.polyfit:

import numpy as np

# from your code
data1 = np.loadtxt('/home/script/2_columns', delimiter=',', skiprows=0)

x = data1[:,0]
y = data1[:,1]

degree = 3
coeffs = np.polyfit(x, y, degree)

# now, coeffs is an array which contains the polynomial coefficients
# in ascending order, i.e. x^0, x^1, x^2
intercept, linear, quadratic, cubic = coeffs

If you do need the other values, please specify what you need, since for example the r_value is the correlation coefficient between x and y, which isn't very useful when you don't expect the data to be linear.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download