第四章-课后练习5-修正指数曲线模型--Python实现

介绍:

在统计预测与决策中,学习了时间序列的趋势外推法,其中修正指数曲线模型的用处广泛。

散点图:

我们通过数据观察,通过python汇制散点图,代码如下:

复制代码
#修正指数曲线预测
import pandas as pd
import matplotlib.pyplot as plt
#导入数据
data = pd.read_excel('P112-5.xlsx',sheet_name='data')
data.head()
#绘制数据图
#显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,6))
plt.plot(data, label='data', color='b', marker='o')
plt.title('销售量关于时间的拟合图数据')
plt.xlabel('Year')
plt.xticks(data.index)
#设置y轴范围
plt.ylim(45000, 60000)
plt.show()

修正指数曲线模型:

参数求解:

复制代码
#修正指数曲线函数
def func(t, a, b, c):
    return a+ b*c**t

#拟合
#使用分组法估计参数

#分组
n = 3
#读取前3个数据
data1 = data.iloc[:3]
data2 = data.iloc[3:6]
data3 = data.iloc[6:]

#分组求和
data1_sum = data1['销售量'].sum()
data2_sum = data2['销售量'].sum()
data3_sum = data3['销售量'].sum()

#计算参数
c = ((data3_sum-data2_sum)/(data2_sum-data1_sum))**(1/n)
b = (data2_sum-data1_sum)*((c-1)/(c**n-1)**2)
a = (data1_sum-b*(c**n-1)/(c-1))*(1/n)

#输出参数
print('a = %f, b = %f, c = %f' % (a,b,c))

#输出拟合函数
print('拟合函数为:y = %f + %f * %f^t' % (a,b,c))

data3 = pd.read_excel('P112-5.xlsx',sheet_name='data')
x = data3.销售量

#计算第2022年的销售量
d9 = a + b * c**9
print('2022年的销售量为:%d' % d9)
#绘图
plt.figure(figsize=(10,6))
plt.plot(x, label='data', color='b', marker='o')
#添加点
plt.scatter(9, d9, color='r')
plt.plot(data.index, func(data.index,a,b,c), 'r', label='fit')
#拟合直线过添加的点
plt.scatter(9, d9, color='r')
plt.text(9, d9, '(%d, %d)' % (9, d9), ha='left', va='bottom')
plt.ylim(45000, 60000)
plt.title('销售量关于时间的拟合图')
plt.xlabel('Year')
plt.legend()
plt.show()

求解参数结果:

分组求和法

通过python计算得出:

拟合曲线:

相关推荐
寻寻觅觅☆9 小时前
东华OJ-基础题-104-A == B ?(C++)
开发语言·c++
lightqjx9 小时前
【C++】unordered系列的封装
开发语言·c++·stl·unordered系列
天天爱吃肉82189 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
zh_xuan9 小时前
kotlin lazy委托异常时执行流程
开发语言·kotlin
m0_715575349 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
甄心爱学习9 小时前
【leetcode】判断平衡二叉树
python·算法·leetcode
深蓝电商API9 小时前
滑块验证码破解思路与常见绕过方法
爬虫·python
阿猿收手吧!9 小时前
【C++】string_view:高效字符串处理指南
开发语言·c++
Ulyanov9 小时前
Pymunk物理引擎深度解析:从入门到实战的2D物理模拟全攻略
python·游戏开发·pygame·物理引擎·pymunk
sensen_kiss9 小时前
INT303 Coursework1 爬取影视网站数据(如何爬虫网站数据)
爬虫·python·学习