习题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")

结果如下图所示:

posted @ 2024-12-21 11:39  方~~  阅读(9)  评论(0)    收藏  举报