亚太近三年题目类型较为固定,A题为图像处理类题目;B题为纯优化类问题;C题为数据收集、分析、处理类题目。今年又加入了D题,偏优化类型题目,QUBO(二次无约束二元优化)模型题目。与每年妈杯D题相近。
基于往年C题选题人数占总人数80%+,本次助攻初步暂定为C题提供两个版本,完全不同的解题思路、解题代码,确保能够给大家提供尽可能多的选择方案。
初步赛题难度预估 A:B:C:D=5:4:1.5:6
初步选题人数预估 A:B:C:D=1:1.5:4:0.8
下面我们进行详细的问题分析,一文滤清亚太C题。首先需要根据题目自行收集数据,我根据后续题目需要收集了 中国、德国、法国、美国四个国家近五年31个指标的相关数据,仅供参考。大家也可以根据我收集数据的网站自行补充其他数据
数据分享链接:https://pan.baidu.com/s/1_w8dq7h6st8Q14KY3hc8-A
提取码:qune
收集数据部分来源网站【数据集部分来自统计局,部分来自网站。来自网站数据因来源不同、定义不同可能有真实值有所差异,可根据自己手头数据进行改动。不敢保证100%全部真实可靠】
宠物食品市场规模(亿美元) | 兽医服务开支 (亿美元)+宠物食品开支 (亿美元) | 美国宠物家庭渗透率 |
https://www.jiemian.com/article/11967023.html | https://www.euromonitor.com/ | https://www.sohu.com/a/700105587_121746450 |
https://www.thepaper.cn/newsDetail_forward_29179742 | https://www.marketresearch.com | https://www.21jingji.com/article/20240117/herald/100e75780066b931e56c2d585b19b3a5.html |
https://www.hangyan.co/charts/3488743342085244004 | https://www.hangyan.co/charts/3392831999713477730 |
首先,需要对数据进行必要的处理工作对于初步收集的数据存在大量的缺失值,需要补充。由于部分指标仅只能在网站收集,网站给出数据并非逐年的。我们为了方便后续计算,需要对缺失值数据利用插值方式进行补充。
法国相关数据 | ||||
年份 | 兽医服务开支(亿美元) | 宠物医疗市场规模(亿欧元) | 报告经济体的商品出口,剩余(占商品出口总额的百分比) | 总生育率(女性人均生育数) |
2019 | 1.2 | 0.787204677 | 1.86 | |
2020 | 1.9 | 0.455771952 | 1.83 | |
2021 | 2 | 1.4 | 0.466127228 | 1.84 |
2022 | 1.794 | |||
2023 | 2.4 | 1.6 | 0.296505815 | 1.844526316 |
插值方法选择【线性、拉格朗日、三次样条均可】只需要完成缺失值补充即可。结果大致如下所示
对于收集的数据还需要进行必要的数据分析,例如对异常的数据需要进行必要的就结果说明。
在当下,日益发展的时代,宠物的数量应该均为稳步上升,在美国出现了下降的趋势吗,中国2019-2020年也下降,这部分变化可能与疫情相关。需要对该部分进行必要的解释说明。
问题 1: 基于附件1中的数据及您的团队收集的额外数据,请分析过去五年中国宠物行业按宠物类型的发展情况。并分析中国宠物行业发展的影响因素,从而建立一个合适的数学模型,预测未来三年中国宠物行业的发展。
对于问题一,一共三个问题 分析发展情况+分析影响因素+预测未来发展
分析发展情况;使用图表(例如折线图、柱状图)对不同类型宠物(猫、狗等)的市场增长趋势进行可视化。进行必要的文字描述,进行描述性分析即可。
例如,通过饼图或柱状图比较不同宠物类型在总市场中的占比;使用折线图展示不同类型宠物数量及市场规模的变化趋势。
分析影响因素;影响中国宠物行业发展的因素可能有多个,涵盖经济、社会、文化等多方面。首先对收集到的指标进行分类,按类别进行分析。使用皮尔逊相关系数或Spearman相关系数,分析各个潜在因素与宠物数量、宠物市场规模之间的相关性,从中筛选出重要的影响因素。对于部分类别含有较多的指标,可以使用数据降维的方式进行降维处理。
宠物行业核心指标:涵盖直接描述宠物市场的指标,包括宠物类型、宠物数量、市场规模、宠物食品、兽医服务等核心业务数据。
国际贸易相关指标:主要涉及各个国家的商品出口、进口以及商业服务进出口的数据,反映了宠物食品出口及进口等方面的国际贸易情况。
人口与社会因素:包括人口的基本统计信息、人口结构以及年轻群体的就业情况等,能够帮助分析宠物市场的潜在驱动因素。
经济发展与收入不平等指标:包括经济发展水平(如人均GDP)、居民消费能力,以及衡量收入差距的基尼系数,能反映消费者的购买能力和市场潜力。
生产与消费相关指标:例如食品生产指数,可以用来评估食品生产能力对宠物食品市场供应的影响。
相关性结果如下所示
预测未来发展;对于建立一个预测未来三年中国宠物行业发展的数学模型,我们需要选择适合的模型来捕捉时间趋势及相关性。由于只有五年数据,本题目并不推荐使用机器学习相关的方法。主要推荐使用时间序列预测、灰色模型预测、多元回归预测。下述模型会再后续更新的论文中进行编程实现
时间序列模型(ARIMA、SARIMA)适用情况:如果过去的数据表现出显著的时间趋势和季节性特征。
步骤1使用差分方法来处理非平稳性,确保时间序列平稳。
步骤2使用ACF和PACF图确定合适的模型阶数(p, d, q)。
步骤3通过AIC、BIC选择最优模型,进行拟合和预测。
多元回归模型:预测宠物市场规模并考虑多种影响因素(如经济、社会、人口等)。建立以宠物市场规模或宠物数量为因变量的回归模型,将之前选出的特征作为自变量,分析它们对宠物市场的影响。
灰色预测模型:单指标预测模型,适合于小样本短期预测,1982年邓聚龙老师提出的一种模型。
模型选择注记:第一种、第三种都是单指标预测,无法考虑其他指标的影响。第二种可以加入其他指标的影响,但是精度不会太高。可以进行模型结合
我们这里以灰色模型为例进行展示说明
问题 2: 近年来,欧洲国家和美国等海外宠物行业也在迅速发展。请基于附件2中的数据及您的团队收集的额外数据,分析全球宠物行业按宠物类型的发展情况。并建立一个合适的数学模型,预测未来三年全球对宠物食品的需求。
问题二可以看作为问题一模型的普适性研究,首先根据收集的数据析全球宠物行业按宠物类型的发展情况。方法与问题一相同,利用可视化结果进行必要的描述性分析即可。
预测未来三年全球对宠物食品的需求,依旧可以沿用问题一的时间序列预测、灰色模型预测、多元回归预测。可以交叉使用,例如问题一使用时间序列预测,问题二使用预测预测,其本质不变。
问题 3: 基于附件3中的中国宠物食品生产和出口数据,分析中国宠物食品行业的发展情况,并预测未来三年中国宠物食品的生产和出口(不考虑经济政策的变化),结合全球宠物食品市场的需求趋势以及中国的发展情况进行分析。
对于问题三,题目并没有要求结合自己收集的数据。对于这一题干,可以直接默认不使用自行收集的;也可以使用自行收集的数据,针对方法不同的队伍可以有不同的理解。如果不使用收集的数据,则对于该问题大概率只能使用单指标预测模型。对于分析中国宠物食品行业的发展情况可以计算各年度生产量和出口量的增长率(年化增长率)以衡量行业的增速。根据收集到的全球市场需求数据,分析宠物食品在全球不同区域的增长趋势,例如欧洲、美国等主要市场的宠物食品需求量。
使用收集的数据,则需要从中国的发展情况出发,筛选出能够体现中国的发展情况的指标 GPD等指标,对各指标构建回归模型进行求解。
这里我们先以简单的预测模型 指数平滑为例进行展示说明
问题 4: 中国的宠物食品行业不可避免地会受到欧洲国家和美国新出台的外部经济政策(如关税政策)的影响。为了定量分析这种影响,请建立一个合适的数学模型,并将附件中的数据、您收集的额外数据以及上述问题中的计算结果纳入考虑。基于您的计算结果,请为中国宠物食品行业的可持续发展制定可行的策略。
对于该问题,我们可以分为描述性分析、量化政策影响、建立情景分析模型。
· 描述性分析:了解中国宠物食品出口历史数据与政策变化的影响。
· 量化政策影响:通过数学模型(如多元回归、计量经济学模型等)来定量化政策影响。
· 建立情景分析模型:设计不同政策情景(如关税上调、关税下调、不变)并分析它们的影响。
为了定量分析经济政策(如关税变化)对中国宠物食品行业的影响,合适的模型包括计量经济学模型和情景分析模型。
多元线性回归是一个简单但非常有效的方式来量化政策因素(如关税)对宠物食品出口的影响。
·因变量:宠物食品出口量(亿美元)。
·自变量:
o关税率(如对美国和欧洲出口的关税变化)。
o宠物食品市场规模(预测结果)。
o外部因素(如食品生产指数、人均GDP、消费支出等)。
o全球需求(全球宠物食品需求量的预测)。
% 数据准备
clc;
clear;
close all;
% 原始数据 (年份和猫狗数量)
years = 2019:2023;
data_cats = [4412, 4862, 5806, 6536, 6980];
data_dogs = [5503, 5222, 5429, 5119, 5175];
% 对猫和狗的数量进行灰色预测
% 1. 对猫数量进行GM(1,1)灰色预测
pred_cats = GM11(data_cats, 3); % 预测未来3年的数据
% 2. 对狗数量进行GM(1,1)灰色预测
pred_dogs = GM11(data_dogs, 3); % 预测未来3年的数据
% 可视化原始数据与预测结果
future_years = 2024:2026;
all_years = [years, future_years];
figure;
% 猫的数据可视化
subplot(2,1,1);
plot(years, data_cats, 'o-b', 'LineWidth', 1.5);
hold on;
plot(all_years, pred_cats, '-r', 'LineWidth', 1.5);
title('猫数量的灰色预测');
xlabel('年份');
ylabel('数量 (万)');
grid on;
legend('实际数据', '预测数据', 'Location', 'NorthWest');
% 狗的数据可视化
subplot(2,1,2);
plot(years, data_dogs, 'o-g', 'LineWidth', 1.5);
hold on;
plot(all_years, pred_dogs, '-r', 'LineWidth', 1.5);
title('狗数量的灰色预测');
xlabel('年份');
ylabel('数量 (万)');
grid on;
legend('实际数据', '预测数据', 'Location', 'NorthWest');
% 关键步骤结果的可视化
fprintf('关键过程结果:\n');
fprintf('猫的预测数据:%s\n', mat2str(pred_cats));
fprintf('狗的预测数据:%s\n', mat2str(pred_dogs));
% GM(1,1) 灰色预测函数定义
function [prediction] = GM11(data, predict_years)
% 计算累计生成序列
n = length(data);
x1 = cumsum(data);
% 构造数据矩阵B和向量Y
B = [-0.5 * (x1(1:end-1) + x1(2:end))', ones(n-1, 1)];
Y = data(2:end)';
% 求解参数向量a和b
U = (B' * B) \ (B' * Y);
a = U(1);
b = U(2);
% 构造灰色预测模型的方程
x1_hat = zeros(1, n + predict_years);
x1_hat(1) = data(1);
for k = 2:n + predict_years
x1_hat(k) = (data(1) - b / a) * exp(-a * (k - 1)) + b / a;
end
% 还原预测值
prediction = [data(1), diff(x1_hat)];
prediction = prediction(1:n + predict_years);
end
# 数据准备
import numpy as np
import matplotlib.pyplot as plt
# 原始数据 (年份和猫狗数量)
years = np.array([2019, 2020, 2021, 2022, 2023])
data_cats = np.array([4412, 4862, 5806, 6536, 6980])
data_dogs = np.array([5503, 5222, 5429, 5119, 5175])
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用SimHei字体
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
# GM(1,1) 灰色预测函数定义
def GM11(data, predict_years):
# 计算累计生成序列
n = len(data)
x1 = np.cumsum(data)
# 构造数据矩阵B和向量Y
B = np.vstack((-0.5 * (x1[:-1] + x1[1:]), np.ones(n - 1))).T
Y = data[1:]
# 求解参数向量a和b
U = np.linalg.inv(B.T @ B) @ B.T @ Y
a, b = U
# 构造灰色预测模型的方程
x1_hat = np.zeros(n + predict_years)
x1_hat[0] = data[0]
for k in range(1, n + predict_years):
x1_hat[k] = (data[0] - b / a) * np.exp(-a * k) + b / a
# 还原预测值
prediction = np.diff(x1_hat, prepend=data[0])
return prediction[:n + predict_years]
# 对猫和狗的数量进行灰色预测
# 1. 对猫数量进行GM(1,1)灰色预测
pred_cats = GM11(data_cats, 3) # 预测未来3年的数据
# 2. 对狗数量进行GM(1,1)灰色预测
pred_dogs = GM11(data_dogs, 3) # 预测未来3年的数据
# 可视化原始数据与预测结果
future_years = np.array([2024, 2025, 2026])
all_years = np.concatenate((years, future_years))
plt.figure(figsize=(10, 8))
# 猫的数据可视化
plt.subplot(2, 1, 1)
plt.plot(years, data_cats, 'o-b', linewidth=1.5, label='实际数据')
plt.plot(all_years, pred_cats, '-r', linewidth=1.5, label='预测数据')
plt.title('猫数量的灰色预测')
plt.xlabel('年份')
plt.ylabel('数量 (万)')
plt.grid(True)
plt.legend(loc='upper left')
# 狗的数据可视化
plt.subplot(2, 1, 2)
plt.plot(years, data_dogs, 'o-g', linewidth=1.5, label='实际数据')
plt.plot(all_years, pred_dogs, '-r', linewidth=1.5, label='预测数据')
plt.title('狗数量的灰色预测')
plt.xlabel('年份')
plt.ylabel('数量 (万)')
plt.grid(True)
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()
# 关键步骤结果的可视化
print('关键过程结果:')
print(f'猫的预测数据:{pred_cats}')
print(f'狗的预测数据:{pred_dogs}')