前言
接着之前写的第一章写,这次用python来实现加权最小二乘。
一、用随机数据进行最小二乘法拟合
我们先随机取一些数据,这里用python的随机数函数实现。
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns
np.random.seed(1) #随机数的标记,这里编号为1,规定这个之后,随机数就只生成一次,之后就会固定,除非seed的参数改变。
x=np.random.uniform(-5,5,35) #生成从-5到5的随机数记为x,共35个
e=2*np.random.randn(35) #randn返回满足标准正态分布的随机值,我们将这个随机值的二倍看做随机产生的误差,存在e中
y=2*x
plt.plot(x,y,'ro') #画出没有误差的散点图
y=2*x+e
plt.plot(x,y,'bo') #画出有误差的散点图
输出如图所示:

其中红点是准确值(横轴坐标值的二倍),而蓝点是带有误差的值(这些误差是我们刚才生成的)
再去掉红点,直接变为y=2*x的红线,用一般最小二乘拟合一下。
import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns
np.random.seed(1)
x=np.random.uniform(-5,5,35)
e=2*np.random.randn(35)
y=2*x
#plt.plot(x,y,'ro')
plt.plot(x,2*x,'r--')