2016-08-07 40 views
0

我期待在Numpy中使用多項式迴歸(polyfit)獲得係數和截距,但不知道如何編寫腳本以獲得多項式函數。在Numpy中獲取多項式迴歸統計

我已代碼線性迴歸的代碼,這是我在下面附:

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) 

回答

1

你所需要的統計數據?如果沒有,你只需要係數,它真的很簡單使用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 

如果您確實需要其他值,請註明您所需要的,因爲例如r_valuex之間的相關係數y,如果您不希望數據是線性的,這並不是非常有用。

+0

非常感謝,比我想象的更簡單!我其實也需要統計數據,所以我可以檢查迴歸的r平方值。我會像上面一樣將r_value添加到您的等式中嗎? –

+0

@ E.Weglarz不,那些必須單獨計算。但是,如果你不符合一條直線,r平方並不意味着任何有用的東西,至少沒有我能想到的(這只是衡量「我的數據線性如何」)。你可以使用的一個常見的合適的合適的統計值是chi2值。 – Carsten

+0

我可以獲得的幾乎所有價值(包括r_squared)的讀數都是完美的! –