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

news/2024/9/28 18:03:57 标签: 线性回归, 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


http://www.niftyadmin.cn/n/5681590.html

相关文章

WebRTC关键技术及应用场景:EasyCVR视频汇聚平台高效低延迟视频监控解决方案

众所周知,WebRTC是一项开源的实时通信技术,它通过集成音频、视频和数据传输到Web浏览器中,使得实时通信变得简单且无需任何插件或第三方软件。WebRTC不仅是一个API,也是一系列关键技术和协议的集合,它的出现改变了传统…

Go conc库学习与使用

文章目录 主要功能和特点conc 的安装典型使用场景示例代码并行执行多个 Goroutines错误处理限制并发 Goroutines 数量使用 context.Context 进行任务控制 常见问题1. **任务中发生 panic**原因:解决方法: 2. **conc.Group 重复调用 Wait()**原因&#xf…

SpringMVC5-域对象共享数据

目录 使用ServletAPI向request域对象共享数据 使用ModelAndView向request域对象共享数据 使用Model向request域对象共享数据 使用map向request域对象共享数据 使用ModelMap向request域对象共享数据 Model、ModelMap、Map的关系 向session域共享数据 向application域共享…

欺诈文本分类检测(十七):支持分类原因训练

1. 引言 前文数据校正与增强进行了数据增强,本文将使用增强后的数据对模型进行进一步训练,以便得到能同时预测出分类标签、欺诈者、分类原因多个信息的模型。 为此,我们需要对整个训练过程进行调整,包括: 交叉训练逻…

sql server 版本补丁更新

SQL Server 的最新更新和版本历史记录 - SQL Server | Microsoft Learn 目录: 概述----安装---升级SQL SERVER --升级数据库引擎----Sql Server 最新更新

Java:插入排序

目录 排序的概念 插入排序 直接插入排序 哈希排序 排序的概念 排序:所谓的排序,就是使一串记录,按照某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个…

HalconDotNet实现二维码识别功能详解

文章目录 简介1. 图像输入与预处理2. 二维码定位3. 二维码解码4. 错误校正处理5. 结果显示与后处理 简介 在HalconDotNet中,实现二维码识别功能主要涉及多个步骤和技术。以下是二维码识别的几个重要方面,包括二维码图像预处理、二维码定位、二维码解码等…

【Python】数据可视化之分布图

分布图主要用来展示某些现象或数据在地理空间、时间或其他维度上的分布情况。它可以清晰地反映出数据的空间位置、数量、密度等特征,帮助人们更好地理解数据的内在规律和相互关系。 目录 单变量分布 变量关系组图 双变量关系 核密度估计 山脊分布图 单变量分布…