Part1 一元线性回归
1. 准备工作
import numpy as npimport matplotlib.pyplot as pltimport statsmodels.api as sm
2.生成100个点,并加上随机干扰项
nsample=100x=np.linspace(0,10,nsample)X=sm.add_constant(x)beta=np.array([1,10])e=np.random.normal(size=nsample)y=np.dot(X,beta)+5*e
3.估计参数,并得到结果
model=sm.OLS(y,X)results=model.fit()print(results.params)
4. 画出图像
y_fitted=results.fittedvaluesfig,ax=plt.subplots(figsize=(8,6))ax.plot(x,y,'*',label='data')ax.plot(x,y_fitted,'y-.',label='OLS')ax.legend(loc='best')
5.给出回归结果
Part2:多元线性回归
1.创建100个数值,并且生成平方生成另一组数,与系数矩阵beta相乘,并且加上随机误差
nsample=100x=np.linspace(0,10,nsample)X=np.column_stack((x,x**2))X=sm.add_constant(X)beta=np.array([1,-3,5])e=np.random.normal(size=nsample)y=np.dot(X,beta)+10*e
2.进行最小二乘拟合
model=sm.OLS(y,X)results=model.fit()
3.得到结果
print(results.params)
4. 画出图像
y_fitted=results.fittedvaluesfig,ax=plt.subplots(figsize=(8,6))ax.plot(x,y,'*',label='data')ax.plot(x,y_fitted,'y-.',label='OLS')ax.legend(loc='best')
5. 打印出结果

