【2024APMCM亚太赛C题】解题过程+可运行代码+结果分析

解题思路

该题涉及时间序列分析及相关性分析技术。
在数据预处理中,首先收集了国内生产总值、一人户家庭户户数、居民人均可支配收入、宠物经济产业规模等时间序列数据。然后基于三次样条插值的方法对缺失的数据进行了填补。
在问题一中,首先我们需要对中国宠物产业的历史数据进行深入分析。从题目所给与收集的数据中,提取各类宠物的市场规模、增长率等关键指标。然后,基于相关性系数分析了中国宠物产业发展中的影响因素。最后,基于ARIMA算法对未来三年的发展趋势进行了预测。同时,将考虑宠物类型的特异性,为每种宠物类型分别建立预测模型。
在问题二中,首先基于非线性回归模型建立特征变量与宠物数量之间关系模型。然后基于所得的非线性模型对缺失国家的宠物数量进行补全。同时,建立宠物数量与宠物食品数量之间的关系模型,推算出各个国家的宠物食品数量后基于第一问中的ARIMA算法对未来三年全球宠物食品的需求进行预测。
在问题三中,可以建立AHP-TOPSIS模型对中国的宠物食品产业发展情况进行综合评价,并结合全球宠物食品市场需求及中国的发展情况对未来三年中国宠物食品的生产和出口的预测结果进行修正。
在问题四中,首先整理欧美国家近年来欧洲国家和美国等新外资经济政策,然后对各个政策实施前后的宠物食品产业评分进行方差齐性检验,以分析每一政策是否对宠物食品产业造成了显著的影响。最后,基于分析结果为中国宠物食品产业的可持续发展制定可行的策略。

数据预处理

数据收集与分析

在探讨宠物产业及宠物食品产业的发展情况时,需综合考虑多重经济与社会指标,以全面剖析其内在关联与驱动因素。美国、日本、西欧等地区的宠物市场规模与宠物食品市场规模,作为衡量宠物产业发展水平的关键指标,与单宠年均消费(犬、猫)、人口结构特征(如20-24岁及60-64岁人口数)、宏观经济状况(国内生产总值GDP、人均GDP)、家庭结构变化(如一人户家庭户数)以及居民可支配收入等因素紧密相连。
首先,本文收集了除附件外的与宠物和宠物食品相关的数据。数据集如下表所示:
在这里插入图片描述
在这里插入图片描述

宠物经济产业规模的增长,往往伴随着居民生活水平的提升和消费观念的转变。随着人均GDP和居民可支配收入的增加,人们更倾向于为宠物提供高质量的生活用品和服务,从而推动了宠物产业的整体发展。特别是宠物食品行业,作为宠物消费中的重要组成部分,其市场规模的扩大直接反映了宠物主人对宠物健康与营养的日益重视。单宠年均消费(犬、猫)作为衡量宠物消费水平的重要指标,其增长趋势与宠物食品市场的繁荣程度息息相关。
同时,人口结构的变化也对宠物产业产生了深远影响。20-24岁年轻人群体的增长,往往预示着潜在宠物消费市场的扩大,这一年龄段的人群更倾向于接受新鲜事物,对宠物陪伴的需求较高。而60-64岁人口数的增加,则反映了老龄化社会对宠物陪伴需求的提升,老年人群更倾向于通过养宠来丰富晚年生活,进而促进了宠物产业的发展。
此外,家庭结构的变化,特别是一人户家庭户数的增多,也推动了宠物产业的快速发展。独居人群往往通过养宠来寻求情感寄托和生活陪伴,这直接促进了宠物数量的增加和宠物消费市场的繁荣。宠物干粮、湿粮、零食及保健食品等细分市场的兴起,正是为了满足不同宠物主人对宠物食品多样化、个性化的需求。
在宏观经济层面,GDP和人均GDP的增长为宠物产业提供了坚实的经济基础。美国、法国、德国、日本等国的GDP水平,不仅反映了这些国家的经济实力,也间接影响了其宠物产业的发展速度和规模。

3.2 基于三次样条插值算法的缺失值填补

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图1 插补数据与原始数据对比图

在图中,蓝点表示原始数据,红点表述基于三次样条插值得到的数据。从图中可以观察到,三次样条插值方法有效地填补了原始数据集中的缺失部分,且插补后的数据点与原始数据点之间实现了平滑且自然的过渡。插值曲线不仅紧密贴合已知数据点,还在缺失数据区域内呈现出合理的趋势和形态,充分展现了三次样条插值在保持数据整体连贯性和局部细节方面的优越性能。这种插补方法不仅提高了数据集的完整性,还为后续的数据分析和建模工作提供了更加可靠和准确的数据基础。

问题一

中国宠物产业发展情况分析

分布检验模型的建立

中国宠物产业发展影响因素分析模型的建立

相关性求解

基于ARIMA算法的中国宠物产业发展预测

问题二

基于非线性回归模型的宠物产业关系分析

非线性回归模型的建立

基于差分进化算法的模型求解

基于ARIMA算法的全球宠物食品需求预测

代码

Q1_1.m

clc
clear
close all;
data=xlsread('问题1用数据.xlsx');

name = {'Year',' Cat',' Dog',' Average annual consumption of a single pet (dog)',' Average annual consumption of a single pet (cat)',' Population aged 20-24',' Population aged 60-64',' Gross domestic product (USD)',' Gross domestic product per capita (Yuan)',' Number of one-person family households',' Disposable income per capita',' Pet Economic industry scale (billion yuan)',' Cat food (billion yuan)','Dog food (billion yuan)',' Dry pet food (billion yuan)','Wet pet food (billion yuan)','Pet snacks (billion yuan)','Health care food (billion yuan)','Number of pet-raising family households in China (10,000 households)'};


% 提取第一列作为横轴数据
x = data(:, 1);
 
markers = {'o', '+', '*', 's', 'd', '^', 'v', '>', '<', 'p', 'h', 'x', '.', 'o', '+', '*', 's', 'd'}; % 重复使用标记以覆盖所有列

% 初始化存储归一化数据和斜率的变量
num_columns = size(data, 2);
normalized_data = zeros(size(data));
normalized_data(:, 1) = x; % 保持第一列不变
slopes = zeros(1, num_columns - 1);
 
% 定义一个颜色映射,用于绘制不同的折线
% 这里使用jet颜色映射的一个子集,但你可以根据需要自定义颜色
colormap_jet_subset = jet(num_columns - 1); % jet颜色映射有64种颜色,我们取前18种(跳过黑色)
% 为了避免黑色,我们从第二种颜色开始取
colors = colormap_jet_subset(2:end, :); % 跳过第一种颜色(黑色)
 
% 对第二列到最后一列进行归一化和斜率计算
for i = 2:num_columns
    % 对每一列进行归一化([0, 1] 范围)
    min_val = min(data(:, i));
    max_val = max(data(:, i));
    if max_val ~= min_val % 避免除以零的情况
        normalized_data(:, i) = (data(:, i) - min_val) / (max_val - min_val);
    else
        % 如果最大值等于最小值,则归一化结果为0.5(或其他任意常数)
        normalized_data(:, i) = 0.5;
    end
    
    % 计算斜率(线性拟合)
    p = polyfit(x, normalized_data(:, i), 1);
    slopes(i-1) = p(1); % 斜率存储在p(1)中
end
 
% 分离上升和下降的列
up_indices = find(slopes > 0);
down_indices = find(slopes < 0);
 
% 绘制上升的列
figure;
hold on;
xticks_original = x; % 保存原始的x轴刻度值
for i = 1:length(up_indices)
    idx = up_indices(i);
    plot(x, normalized_data(:, idx + 1), 'LineWidth', 1.5, 'Marker', markers{i}, 'MarkerSize', 8, 'Color', colors(i, :));
end
xticks(xticks_original); % 设置x轴刻度为原始的第一列值
title('Normalized Data with Positive Slopes');
xlabel('Years');
ylabel('Normalized Values');
legend(arrayfun(@(i) sprintf('%s', name{up_indices(i)+1}), 1:length(up_indices), 'UniformOutput', false));
grid on;
set(gca, 'FontSize', 12, 'FontName', 'Arial');
box on;
axis tight; % 自动调整轴限以紧密地围绕数据
 
% 绘制下降的列
figure;
hold on;
xticks_original = x; % 保存原始的x轴刻度值
for i = 1:length(down_indices)
    idx = down_indices(i);
    plot(x, normalized_data(:, idx + 1), 'LineWidth', 1.5, 'Marker', markers{i}, 'MarkerSize', 8, 'Color', colors(i, :));
end
xticks(xticks_original); % 设置x轴刻度为原始的第一列值
title('Normalized Data with Negative Slopes');
xlabel('Years');
ylabel('Normalized Values');
legend(arrayfun(@(i) sprintf('%s', name{down_indices(i)+1}), 1:length(down_indices), 'UniformOutput', false));
grid on;
set(gca, 'FontSize', 12, 'FontName', 'Arial');
box on;
axis tight; % 自动调整轴限以紧密地围绕数据

Q1_2.m

clc
clear
close all;
data=xlsread("问题1相关性分析结果.xlsx");

% 创建行标签和列标签  
rowLabels = {' Cat',' Dog',' Average annual consumption of a single pet (dog)',' Average annual consumption of a single pet (cat)',' Population aged 20-24',' Population aged 60-64',' Gross domestic product (USD)',' Gross domestic product per capita (Yuan)',' Number of one-person family households',' Disposable income per capita',' Pet Economic industry scale (billion yuan)',' Cat food (billion yuan)','Dog food (billion yuan)',' Dry pet food (billion yuan)','Wet pet food (billion yuan)','Pet snacks (billion yuan)','Health care food (billion yuan)','Number of pet-raising family households in China (10,000 households)'};  
colLabels = {' Cat',' Dog',' Average annual consumption of a single pet (dog)',' Average annual consumption of a single pet (cat)',' Population aged 20-24',' Population aged 60-64',' Gross domestic product (USD)',' Gross domestic product per capita (Yuan)',' Number of one-person family households',' Disposable income per capita',' Pet Economic industry scale (billion yuan)',' Cat food (billion yuan)','Dog food (billion yuan)',' Dry pet food (billion yuan)','Wet pet food (billion yuan)','Pet snacks (billion yuan)','Health care food (billion yuan)','Number of pet-raising family households in China (10,000 households)'};  
  
% 绘制热力图  
heatmap(rowLabels, colLabels, data, 'Colormap', summer, 'ColorbarVisible', 'on', 'FontSize', 10);  

set(gcf,'Color',[1 1 1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值