回归拟合(二)

在《回归拟合(一)》中,完成了一次回归。如果做高次回归呢?其实可以将高次回归转化为一次回归。思路如下:

回归拟合(二)_第1张图片
1307525-1509632092.jpg

按照这个思路,撰写代码:

import numpy as np
import statsmodels.api as sm

# 先自己模拟一些散点分布在 y=1+0.1x+10x*x 周围
nsample=100
x=np.linspace(0,10,nsample)
X=np.column_stack((x,x**2))
X=sm.add_constant(X)
beta=np.array([1,0.1,10])
e=np.random.normal(size=nsample)
y=np.dot(X,beta)+e

# 将模拟的散点拟合成回归模型
model=sm.OLS(y,X)
result=model.fit()
print u'打印拟合出的参数'
print result.params
print u'打印全部摘要'
print result.summary()

执行结果:

回归拟合(二)_第2张图片
QQ截图20171102223605.png

将模拟的散点和拟合的函数曲线绘制在图像中:

import matplotlib.pyplot as plt
import matplotlib as mpl

y_fitted=result.fittedvalues

mpl.rcParams['figure.figsize']=(640/72,320/72)
plt.plot(x,y,'o',label='data')
plt.plot(x,y_fitted,'r--.',label='OLS')
plt.legend(loc='best')
plt.savefig('ols.jpg')
回归拟合(二)_第3张图片
ols.jpg

目测拟合效果相当好。

你可能感兴趣的:(回归拟合(二))