习题10.2
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
# 加载数据
a = np.loadtxt('data10_2.txt')
# 设置绘图参数
plt.rc('text', usetex=True) # 启用 LaTeX 字体
plt.rc('font', size=16) # 设置字体大小
plt.style.use('default') # 使用默认样式
# 绘制数据点
plt.plot(a[:, 0], a[:, 2], '*', label='x1') # 绘制第一组数据
plt.plot(a[:, 1], a[:, 2], 'o', label='x2') # 绘制第二组数据
# 添加图例说明
plt.legend(loc='upper left')
# 创建数据字典以用于回归分析
d = {'x1': a[:, 0], 'x2': a[:, 1], 'y': a[:, 2]}
# 拟合线性回归模型
re = sm.formula.ols('y~x1+x2', data=d).fit()
print(re.summary()) # 打印模型摘要
# 预测新数据点
yh = re.predict({'x1': [9, 10], 'x2': [10, 9]})
print('残差的方差:', re.mse_resid) # 打印残差方差
print('预测值:', yh) # 打印预测值
# 显示图形
plt.show()
print("学号后两位:08")
结果如下图所示: