自学内容网 自学内容网

第四章 -课后练习7:一元线性回归 EXCEl实验与Python结合实现

1、首先使用excel录入数据,绘制散点图:

时序年份销售量(件)
12012423.50
22013433.38
32014443.32
42015450.84
52016460.14
62017467.59
72018480.16
82019483.73
92020488.49
102021494.28
112022506.551

由散点图得出销售量数据大致符合线性模型。为此使用最小二乘法对模型进行拟合:

2、接下来使用excel数据分析得出结果如下:

3、模型检验:

由图得出调整的

F检验P值接近于0,说明拒绝原假设,拟合效果好。

计算得出标准误差等于2.964。

4、预测:

2022年,t=11,计算得出预测值为​

即2022年销售量预测值为506.53。

​5、Python代码:

5.1导入数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
data = pd.read_excel('D:/P113-7.xlsx',sheet_name='data')
data.head()

5.2设置OLS求解参数 

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

#忽略警告
import warnings
# 忽略所有警告
warnings.filterwarnings('ignore')
# 假设 't' 是自变量,'Y' 是因变量
t = np.array(data['时序'])
Y = np.array(data['销售量(件)'])
print(t)
print('________________')
print(Y)
#%%
import scipy.stats as stats
r = stats.pearsonr(t,Y)[0]#相关分析

import statsmodels.api as sm

t = sm.add_constant(X)#添加常数项
model = sm.OLS(Y,t)
result = model.fit()
print(result.summary())

5.3求解拟合方程 

# 获取回归系数
intercept = result.params[0]
slope = result.params[1]

# 输出线性回归方程
print(f'线性回归方程: Y = {intercept:.4f} + {slope:.4f} * t')

Y = 418.5347 + 8.0015 * t

5.4绘制拟合直线 

# 绘制拟合图
plt.scatter(t[:, 1], Y, color='blue', label='实际值')  # X[:, 1] to exclude the constant term
plt.plot(t[:, 1], result.predict(t), color='red', linewidth=2, label='拟合线')
plt.xlabel('时序')
plt.ylabel('销售量(件)')
plt.legend()
plt.show()

5.5拟合直线预测 

#2022年预测值,t=11
# 预测2022年的销售量,t=11
t = 11
X_new = np.array([[1, t]])  # 添加常数项
Y_pred_2022 = result.predict(X_new)

print(f'2022年预测值 (t=11): {Y_pred_2022[0]:.4f}')

2022年预测值(t=11):506.5513


原文地址:https://blog.csdn.net/2301_76574743/article/details/142614021

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!