1. 引言
药品集团采购由集团采购组织(Group Purchasing Organizations, GPO)通过整合医疗机构用药需求,与药品供应商进行价格谈判并为医疗机构提供优质的药品采购服务,是国际通行的药品采购模式。国内药品集团采购于2016年开始实施,先后形成了以上海、深圳、广州为代表的药品GPO发展模式,在降低药价、保证供应、促进合理用药等方面取得了显著成效[1]。2021年,国务院办公厅发布《关于推动药品集中带量采购工作常态化制度化开展的意见》,明确指出未来将继续加大药品集中带量采购改革力度,并积极推动国家与区域药品集采的协同发展[2]。在集团采购过程中,先由国家医保局规定医疗机构的报量范围,一般不低于其历史采购量的80%,然后医疗机构向GPO报量,医疗机构的报量通常是根据管理人员经验进行。然而,实际药品需求量受到药品本身的可替代性、人民的健康状况以及医疗机构的患者量等因素影响,且都是“变量”,医疗机构很难通过历史采购量及经验对药品使用量进行精确“定量”预估[3]。而报量的不准确可能影响药品集团采购模式的运营效果,造成供应链整体库存偏高、响应速度迟缓,间接影响当地居民对集采药品的可及性。此时需要运用科学的方法进行需求预测来保证报量的科学性和合理性。BP神经网络具备特有的学习、概括、非线性特质,已逐渐被挖掘出来并充分地应用在供应链预测领域。然而,目前有很多医疗机构在经营过程中忽略了需求预测的重要性,在需求预测方面缺乏有效的制度和技术,存在药品短缺、药品积压导致过期出库等问题,会给患者带来潜在危险。此外,医疗机构专注于提供高质量的医疗服务,在需求预测方面大多是根据管理人员自身经验,虽具有较大的灵活性、自主性,但缺乏供应链系统的整体性观念和科学的需求预测技术[4]。而药品集团采购组织作为第三方服务机构,可以利用先进技术从供应链整体角度在医疗机构需求预测方面发挥重要作用。基于上述分析,本研究将结合改进BP神经网络和需求预测等理论方法,重点解决药品集团采购供应链末端医疗机构的需求预测问题,重点从如何通过改进BP神经网络提高药品集团采购供应链需求预测的准确性入手。
2. 相关研究
国内外众多学者对药品需求预测进行了深入的研究,产生了一批有价值的研究成果。目前,药品需求预测的主要方法包括:回归分析法、时间序列分析法、神经网络、遗传算法等,这些方法从不同角度出发建模,均取得一定效果,尤其是BP神经网络,已经在药品预测研究中取得了众多应用[5]。Dan等(2022)利用粒子群算法对BP神经网络的初始权值和阈值进行改进和优化,预测了一次大地震的死亡率和受伤率,并利用幸存者人数、受伤人数和不同供应品之间的定量关系来估计各种供应品的需求量[6]。马爱霞等(2018)分别用ARIMA模型、BP神经网络、ARIMA + BP组合模型进行预测并与实际拟合,得出结论:医院财务数据因其线性与非线性的组合特征,使用组合预测模型的预测效果最佳[7]。Huang等(2014)基于反向传播(BP)神经网络模型分析肺癌手术患者住院费用的影响因素,得出医院应合理控制药品和耗材费用,有效缩短住院时间,最大限度地减轻肺癌患者的经济负担[8]。Yichao等(2020)利用生物等效性研究数据,构建BPANN药代动力学模型,经LC-MS/MS方法验证后,成功应用于30名志愿者的喂养条件下的生物等效性研究[9]。随着人工智能领域的理论研究与实践发展不断深入,以人工神经网络、智能影像识别、流行病智能检测和防控等为代表的医学人工智能新模式正在不断涌现,人工智能技术的不断优化与广泛运用必将为药品需求预测的可能性和准确性提供更加可靠的现实依据[10]。药品需求预测在卫生医疗领域占据至关重要的地位,尤其是短期预测,它直接影响到目前行动的安排,需要有较高的精确度和准确度,以往的药品管理主要依赖于管理者的个人经验[11]。然而,随着人工智能领域的理论研究与实践应用的不断拓展,以人工神经网络、智能影像识别、流行病智能检测和防控等为代表的新型医学人工智能模式正不断涌现,人工智能技术的不断优化与广泛运用无疑将为药品需求预测提供更加坚实可靠的依据,提升其预测的可能性与精确性[10]。近年来,很多学者对药品需求预测的研究集中于应急救援药品。自然灾害、突发公共卫生事件等频繁发生给人类社会造成了重大的人员伤亡和财产损失,在此背景下,应急物资成为了应急救援工作的物质基础和基本保障[12]。特别是在地震发生初期,快速准确的应急药品需求预测能够优化社会医疗资源配置,灰色离散Verhulst模型能在很短的时间内有效预测伤病人数,然后结合地震灾害伤病人数变化与紧急救援药品需求之间的线性关系,实现对紧急救援药品需求量的预测[13]-[15]。此外,鉴于宏观经济环境与消费趋势的剧烈变化,除救援药品需求量外,生物医学领域的需求预测也变得越来越重要,通过提取特定时期的主题趋势,构建由主题趋势、无线传感器网络环境数据和时间序列销售数据组成的需求预测模型,结果表明药品主题趋势对药品需求预测的性能显著影响[16]。
基于上述文献分析可知,国内外学者围绕药品集团采购供应链需求预测相关领域的研究成果具有较高的参考价值。然而,现有研究还存在一些不足,目前,国内外对药品需求的预测研究大多集中在应急救援药品、特殊疾病药品等需求的预测上,对医疗机构普通药品需求的预测研究较少。此外,药品集团采购已成为药品采购模式的重要手段,然而当前药品供应链需求预测研究中,几乎没有涉及药品集团采购组织的研究。
3. 问题描述
3.1. 药品需求预测现状及技术目标
对于药品的供应链系统来说,患者因病情需要产生药品需求的地点、时间和数量是医疗机构所不能精确控制的,这完全是一个外生变量。在药品集中带量采购情景下,药品集团采购组织可以利用先进的预测技术,发挥药品需求预测服务功能,帮助医疗机构进行精准的需求预测,提高药品需求预测的精确度和集采药品报量的准确性。进行需求预测的技术目标主要包括:(1) 提高预测准确性。利用大数据和数据分析技术,结合机器学习算法如深度学习、神经网络等,对药品需求数据进行建模和预测。通过挖掘患者就诊历史、疾病流行趋势等信息,提高预测的精度和准确性,降低药品短缺或过剩的风险。(2) 实时监测与响应。利用物联网技术和实时数据监测手段,实现对药品需求的实时监测和快速响应。及时更新预测模型,调整库存策略,提高医疗机构对需求变化的应对能力。(3) 智能决策支持系统。建立智能化的决策支持系统,整合多种预测方法和数据来源,为医疗机构管理者提供全面的需求预测结果和优化建议。
3.2. 药品需求预测方法的选择
预测的方法基本可分为定性及定量两类。定性方法主要针对事物未来的发展趋势及方向进行预测,主要包括德菲尔法、调查法等。定量方法则是通过仿真、运筹学等构建数理模型,主要包括指数平滑法、时间序列回归法、BP神经网络等。药品的需求不是一个孤立的概念,与很多因素有关且其影响因素间的关系往往是复杂的非线性关系,传统的线性预测方法难以处理。而BP神经网络通过模拟人脑神经元的连接方式能处理复杂的非线性关系,更准确地预测需求。因此,本文主要选择BP神经网络预测方法,同时对传统的BP神经网络进行改进,改进的BP神经网络其优点主要表现在:(1) 更好的预测准确性。改进的BP神经网络能够更准确地捕捉药品需求的复杂模式和变化趋势,这对于药品需求预测来说至关重要。(2) 更快的收敛速度。由于药品需求数据通常包含大量的时序信息和复杂的影响因素,传统的BP神经网络可能需要较长的训练时间才能收敛到合适的模型。而改进的BP神经网络可以通过优化算法或结构设计等方式优化隐含层,选择最佳的隐含层节点数,加速收敛速度,更快地完成训练。(3) 更低的训练难度。构建BP神经网络模型预测药品需求时,面临着输入变量多且复杂的问题。为了降低训练难度并提高训练效率,优化输入层以简化输入变量(降维)是一个有效的方法[17]。
4. 改进BP神经网络需求预测模型构建
4.1. 模型的基本实现步骤
运用改进BP神经网络对某药品进行需求量预测时,首先要优化神经网络的输入、隐含层节点数,对网络进行训练并检测训练结果,最终确定网络结构以进行药品需求量的预测。在实现过程中需要考虑以下问题:(1) 了解预测药品的需求特点,确定药品需求量的影响因素并对其进行量化处理。(2) 对现有药品的历史数据进行处理,建立神经网络输入及输出的训练样本。(3) 确定网络结构、训练函数、收敛误差等。(4) 建立药品需求预测模型,并利用模型进行某药品的需求预测。(5) 对改进BP神经网络模型的药品需求预测结果进行分析。
4.2. BP神经网络预测模型的改进优化
为了对药品集团采购供应链末端的药品需求量进行精准预测,本研究将在前人的基础上从两个方面对BP神经网络进行改进与优化。一是综合分析药品需求量的影响因素,选出最重要、可量化的影响因素作为改进BP神经网络的输入变量;二是采用“二分分割法”优化算法来确定隐含层节点数[18]。
4.2.1. 输入层优化
(1) 影响因素选择
药品需求量的影响因素众多且复杂,需要从多个维度出发,以全面理解这些影响因素如何作用于药品市场的供需情况,以下是一些具体的影响因素:① 药品的价格。药品价格是影响需求量的直接经济因素,通常药品价格越低消费者的购买意愿和能力越强,需求量越大。但是,由于药品的特殊性(如治疗疾病的紧迫性),其需求的价格弹性可能相对较小。② 总体使用趋势。医生对该药品的使用情况,医生的处方习惯、对药品效果和安全性的评价、以及药品的宣传和推广等因素都会影响医生对某种药品的选择和推荐程度,进而影响患者对该药品的需求量。例如,如果某个药品被医生广泛认为是治疗某种疾病的首选药物,并且医生经常向患者开具这种药品的处方,那么该药品的需求量可能会相对较高。③ 季节性。在不同的季节,人们可能面临不同的健康问题或疾病,从而导致对特定药品的需求量发生变化。例如,冬季的感冒、流感等呼吸道疾病的发病率通常较高,对于退烧药、抗生素和感冒药等相关药品的需求量可能会增加。另外,某些季节性疾病或过敏也会导致特定类型药品的需求量在特定季节增加。因此,在对药品进行需求预测时,考虑季节性因素是非常重要的。④ 医保政策。医保政策对药品需求量的影响主要体现在医保支付比例、报销范围和限制等。医保支付比例的高低直接影响到患者购买药品的意愿和能力。此外,医保政策对不同药品的报销范围和限制也有所不同。例如,某些高价药和新型药可能不在医保目录内,或即使在目录内其报销比例也可能受限。这些限制会影响患者的用药选择和治疗方案,进而影响药品的需求量。⑤ 人口结构。人口结构包含年龄分布、性别比例等多个方面。随着人口老龄化趋势加剧,老年人口占总人口中比例逐渐增加。由于老年人更容易患高血压、糖尿病等慢性疾病,药品的需求量也相应增加。同时不同性别在某些疾病上的发病率也存在差异,如男性可能更容易患心血管疾病、前列腺疾病等,而女性则可能更容易患妇科疾病、乳腺癌等。⑥ 疾病就诊率。相关疾病的就诊率上升意味着有更多的患者会购买和使用与该疾病相关的药品,导致药品的需求量增加。例如,流感疫情爆发会导致大量人群感染并前往医院就诊,那么对流感相关药品(如抗病毒药物、解热镇痛药等)的需求量就会显著增加。⑦ 替代药物使用情况。当某种药品存在有效的替代药品时,医生和患者可能会根据药品的效果、副作用以及个人偏好等因素,选择替代药品,导致原药品需求量减少,替代药品需求量增加。例如,如果某种抗生素存在副作用较大或成本较高的问题,医生可能会选择使用另一种更安全、成本更低的抗生素作为替代,从而降低了原药品的需求量。⑧ 收入水平。居民的收入增加更有可能购买价格较高的药品,尤其在治疗严重疾病或长期慢性疾病的药品往往是必需的。但对于普通的且价格正常的药品,收入水平对药品需求量的影响较小。⑨ 周期性。药品在不同的时间段使用情况各不相同,使用越频繁,药品的需求量就越大,但整体呈现一定的周期性。以上分析了9个药品需求量的影响因素,但药品的种类众多,不同药品的属性、价格、疗效等并不相同,具体药品需求量的影响因素还需要进一步分析。此外,药品是特殊的商品,药品的生命周期、价格、报销比例等影响因素对需求量的影响程度较低,因此在药品需求预测时不考虑作为BP神经网络的输入变量。
(2) 影响因素分析及输入层优化
由于药品需求量的影响因素众多,故应根据药品需求分析的目的,消除影响因素间的相关性,选出最重要、可量化的因素作为BP神经网络的输入。并采用相关性分析和主成分分析对该药品需求量与其主要影响因素进行分析,对比各影响因素对该药品需求量的影响程度。
① 相关性分析。基于BP神经网络的特性,相关性较强的变量对药品需求量的影响是接近的。因此有必要将其中一个变量去除以简化原始数据、减少干扰因素,优化数据质量。通过相关性分析评估变量之间的关联程度,识别出对药品需求量影响最为显著的因素,有助于剔除冗余数据,提升药品需求量预测的准确性和可信度。
② 主成分分析。为优化BP神经网络的输入变量,在运用相关性分析的基础上,用主成分分析法对影响因素进行再次筛选。求得相关系数矩阵R,提取出彼此独立的变量,筛选有代表性的因子构造改进BP神经网络的输入样本,把主成分Z作为新的自变量代替原来的自变量作为改进BP神经网络的输入,并用新样本集代替原始数据变量,新样本集的引入可有效减轻BP (反向传播)神经网络在训练过程中的计算负担,降低训练的复杂度。
4.2.2. 隐含层优化
对于BP神经网络,可以猜想存在一个最佳的隐含层节点数使得训练时间适中、精确度高。本研究运用“二分分割法”来改进隐含层节点数的选择问题。步骤如下:(1) 根据
、
、
三个经验公式确定隐含层节点数的大概范围[19] [20]。其中,h代表隐含层节点数,m代表神经网络的输出层神经元数,n代表神经网络的输入层神经元数,a是1~10之间的常数。(2) 将
分别带入训练网络,用同一组样本、同样的转移函数、训练函数进行训练,分别比较不同的隐含层节点数训练下神经网络的输出误差(均方差MSE)。判定两个网络输出误差的“优”和“劣”,假设
的输出误差分别为
。若
,则舍去
对应的隐含层节点数
,将隐含层节点数范围缩减到
;若
,同理舍去
对应的隐含层节点数
,将隐含层节点数范围缩减到
。以此类推,不断对半分割隐含层节点数的范围,最后确定最佳的隐含层节点数。
4.3. 网络参数设计
BP神经网络的输入层神经元是对药品需求量的影响因素优化后的影响因素个数。在4.2.1中分析了药品需求量的几个通用影响因素,但具体药品的影响因素还需进一步分析,对分析后的影响因素进行相关性检验以及主成分分析等步骤后,如果剩下了两个主要成分(第一主成分和第二主成分),就可以将BP神经网络的输入层神经元数设为2,分别对应影响药品需求量的两个主要成分。BP神经网络的输出层神经元是某医疗机构对某药品的需求量。因此,这里将输出层数设为1,对应实际药品的需求量。改进后的BP神经网络结构见图1。
Figure 1. BP neural network structure diagram
图1. BP神经网络结构图
4.4. 传递函数及训练函数选择
通常情况下,S型的传递函数一般是用来传递训练样本的输出向量没有负值的数据,双曲正切函数主要用来传递训练样本的输出向量有负值的数据。本文研究的需求量预测不会出现负值,因此中间层的传递函数选择在Matlab中默认的S型正切函数tansig(),输出层传递函数选择纯线性函数purelin(),训练函数选择trainlm()。
5. 仿真实例与结果分析
为验证药品需求预测模型的可靠性,以医疗机构A销售的集采药品X (阿奇霉素)为研究对象,选取2021年到2023年三年间的实际需求数量进行需求预测研究,数据见表1。
Table 1. Monthly demand of medicine X in medical institution A in 2021~2023 (unit: box)
表1. 医疗机构A药品X在2021~2023年的月度需求量(单位:盒)
|
1月 |
2月 |
3月 |
4月 |
5月 |
6月 |
7月 |
8月 |
9月 |
10月 |
11月 |
12月 |
2021年 |
171 |
63 |
82 |
121 |
191 |
179 |
221 |
209 |
264 |
461 |
750 |
752 |
2022年 |
693 |
598 |
442 |
339 |
160 |
291 |
249 |
202 |
99 |
222 |
220 |
261 |
2023年 |
553 |
557 |
497 |
357 |
303 |
480 |
310 |
295 |
277 |
406 |
680 |
607 |
5.1. 数据处理
5.1.1. 输入层处理
(1) 影响因素选择
药品集团采购供应链末端的药品需求预测相对复杂,医疗机构的药品需求受到多种因素的影响,因此在选择影响因素时要选择能明显影响药品需求且易于量化的因素作为输入变量,并根据药品的具体使用情况分析影响药品需求量的因素。研究对象药品X需求量的影响因素经过初步筛选后,留下5个比较重要的因素:① 总体使用趋势。进行需求预测时,将近两年药品使用量的趋势作为对下一时期药品需求预测的依据之一,因此选取目标输出最近24个月的平均值作为输入的量化数据。② 季节性。X药品为大环内酯类抗生素,通过抑制细菌蛋白质合成治疗对本品敏感的病原体引起的感染性疾病。据调查,2023年冬季以来呼吸道疾病高发,X等药品出现短缺。可以看出,在对药品进行需求预测时,考虑季节性因素是非常重要的,因此将每个月的季节指数作为输入的量化数据。季节指数为目标输出最近两年同月份数据的均值与近24个月的平均值之比。③ 相关疾病就诊率。X药品是一种广谱抗生素,常用于治疗呼吸道感染、皮肤软组织感染等疾病。因此,相关疾病的流行情况会直接影响X药品的需求量。因此选取用于治疗呼吸道感染、皮肤软组织感染等相关疾病的就诊率作为输入的量化数据,就诊率可通过相关疾病就诊人数与总就诊人数的比例计算。④ 替代药物使用情况。X药品是一种常用的抗生素,要分析其替代药物的使用情况,可以分析医院内同类抗生素(如红霉素、克拉霉素等)的使用,评估替代药物对药品X市场的影响。因此可以将替代药物的处方次数与同类药品总处方次数的比例作为输入的量化数据。⑤ 周期性。取目标输出最近两年同一个月份数据的均值作为输入的量化数据。具体数据见表2。
Table 2. Influencing factors of drug X demand
表2. 药品X需求量的影响因素
日期 |
药品X需求量的影响因素 |
实际药品需求量 |
近两年平均值 |
季节指数 |
相关疾病就诊率 |
替代药物的使用情况 |
近两年月份均值 |
2023/1 |
302 |
1.43 |
0.0452 |
0.31 |
432 |
553 |
2023/2 |
318 |
1.04 |
0.0358 |
0.32 |
331 |
557 |
2023/3 |
338 |
0.77 |
0.0431 |
0.28 |
262 |
497 |
2023/4 |
355 |
0.65 |
0.0276 |
0.55 |
230 |
357 |
2023/5 |
365 |
0.48 |
0.0319 |
0.63 |
176 |
303 |
2023/6 |
370 |
0.64 |
0.0307 |
0.37 |
235 |
480 |
2023/7 |
383 |
0.61 |
0.0303 |
0.48 |
235 |
310 |
2023/8 |
386 |
0.53 |
0.0267 |
0.22 |
206 |
295 |
2023/9 |
390 |
0.47 |
0.0333 |
0.26 |
182 |
277 |
2023/10 |
390 |
0.87 |
0.0361 |
0.28 |
342 |
406 |
2023/11 |
388 |
1.25 |
0.0484 |
0.17 |
485 |
680 |
2023/12 |
385 |
1.32 |
0.0445 |
0.18 |
507 |
607 |
(2) 影响因素分析及输入层优化
① 相关性分析。将表2中的数据输入SPSS软件,进行相关性分析,输出结果见表3。
Table 3. Correlation analysis
表3. 相关性分析
Control Variables |
近两年平均值 |
季节指数 |
相关疾病就诊率 |
替代药物的使用情况 |
近两年月份均值 |
实际药品需求量 |
近两年平均值 |
Correlation |
1.000 |
−0.239 |
0.036 |
−0.427 |
0.336 |
Significance (2-tailed) |
. |
0.480 |
0.917 |
0.191 |
0.313 |
df |
0 |
9 |
9 |
9 |
9 |
季节
指数 |
Correlation |
−0.239 |
1.000 |
0.394 |
−0.103 |
0.827 |
Significance (2-tailed) |
0.480 |
. |
0.231 |
0.763 |
0.002 |
df |
9 |
0 |
9 |
9 |
9 |
相关
疾病
就诊率 |
Correlation |
0.036 |
0.394 |
1.000 |
−0.259 |
0.400 |
Significance (2-tailed) |
0.917 |
0.231 |
. |
0.441 |
0.223 |
df |
9 |
9 |
0 |
9 |
9 |
替代
药物的使用
情况 |
Correlation |
−0.427 |
−0.103 |
−0.259 |
1.000 |
−0.293 |
Significance (2-tailed) |
0.191 |
0.763 |
0.441 |
. |
0.382 |
df |
9 |
9 |
9 |
0 |
9 |
近两年月份
均值 |
Correlation |
0.336 |
0.827 |
0.400 |
−0.293 |
1.000 |
Significance (2-tailed) |
0.313 |
0.002 |
0.223 |
0.382 |
. |
df |
9 |
9 |
9 |
9 |
0 |
从表3可以看出,X药品需求量的5种影响因素两两之间相关性均小于1,这说明这5种影响因素对X药品需求量的影响是不同的,不存在类似因素或冗余数据。因此这些因素均应该保留。
② 主成分分析,采用SPSS对输入变量进行KMO和Bartlett的检验,检验结果见表4。
Table 4. KMO and Bartlett analysis
表4. KMO、Bartlett分析
Kaiser-Meyer-Olkin Measure of Sampling Adequacy |
0.507 |
Bartlett’s Test of Sphericity |
Approx. Chi-Square |
61.513 |
df |
10 |
Sig. |
0.000 |
由表4可知,KMO为0.507大于0.5,Sig为0.000小于0.5,因此可以做主成分分析。然后,采用SPSS对5个影响因素进行主成分筛选,得出公因子方差表(见表5)、解释总方差表(见表6)、成分矩阵(见表7)、成分得分系数矩阵(见表8)。
SPSS软件中默认保留特征根大于1的主成分,第一个特征根为3.242,第二个特征根为1.171,均大于1。且两个主成分集中了原始变量信息的88.249%,大于85%,可见这两个作为主成分效果是比较好的。根据成分得分系数可以得出新的数据样本,见表9。
Table 5. Common factor variance table
表5. 公因子方差表
|
Initial |
Extraction |
近两年平均值 |
1.000 |
0.915 |
季节指数 |
1.000 |
0.956 |
相关疾病就诊率 |
1.000 |
0.856 |
替代药物的使用情况 |
1.000 |
0.767 |
近两年月份均值 |
1.000 |
0.919 |
Table 6. Explaining the total variance table
表6. 解释总方差表
Initial Eigenvalues |
Extraction Sums of Squared Loadings |
Total |
% of Variance |
Cumulative % |
Total |
% of Variance |
Cumulative % |
3.242 |
64.834 |
64.834 |
3.242 |
64.834 |
64.834 |
1.171 |
23.415 |
88.249 |
1.171 |
23.415 |
88.249 |
0.391 |
7.829 |
96.078 |
|
|
|
0.194 |
3.872 |
99.950 |
|
|
|
0.003 |
0.050 |
100.000 |
|
|
|
Table 7. Component matrix
表7. 成分矩阵
|
Component |
1 |
2 |
近两年平均值 |
−0.273 |
0.917 |
季节指数 |
0.962 |
−0.174 |
相关疾病就诊率 |
0.925 |
−0.027 |
替代药物的使用情况 |
−0.688 |
−0.543 |
近两年月份均值 |
0.956 |
0.072 |
Table 8. Component score coefficient matrix
表8. 成分得分系数矩阵
|
Component |
1 |
2 |
近两年平均值 |
−0.084 |
0.783 |
季节指数 |
0.297 |
−0.148 |
相关疾病就诊率 |
0.285 |
−0.023 |
替代药物的使用情况 |
−0.212 |
−0.463 |
近两年月份均值 |
0.295 |
0.062 |
Table 9. New data sample
表9. 新的数据样本
第一主成分 |
第二主成分 |
实际药品需求量 |
102.790 |
262.632 |
553 |
71.383 |
268.856 |
557 |
49.383 |
280.783 |
497 |
38.380 |
292.233 |
357 |
21.414 |
296.541 |
303 |
38.674 |
303.981 |
480 |
37.591 |
313.754 |
310 |
28.604 |
314.961 |
295 |
21.202 |
316.270 |
277 |
68.476 |
326.544 |
406 |
111.148 |
333.642 |
680 |
117.749 |
332.677 |
607 |
表9所呈现的新样本数据相对于原始数据变量来说展现出了显著的代表性,即该新样本集能够精确地涵盖并反映出原始数据集中包含的大部分关键信息与特征。通过对原始数据进行合理的变换与筛选,极大地降低了BP神经网络模型在训练阶段的复杂度,不仅简化了网络结构的设计难度,还提升了训练过程的效率与稳定性。在经过相关性分析与主成分分析法相结合的综合因素分析法筛选后得到两个主要成分(第一成分和第二成分)。因此,在这里将BP神经网络的输入层神经元数设为2,分别对应影响药品需求的两个主要成分。
5.1.2. 隐含层处理
通过4.2中隐含层的相关公式确定隐含层节点数的大致范围是1~12,然后采用“二分分割法”选择最佳的隐含层节点数。“二分分割法”确定隐含层节点数的实验步骤如下:
(1)第一轮实验:
,网络拓扑结构为
,记为模型
,取输出误差为
;
,网络拓扑结构为
,记为模型
,取输出误差为
;
,四舍五入取
,网络拓扑结构为
,记为模型
,取输出误差为
。节点数为1、12、7的神经网络训练过程分别见表10~12。
Table 10. Training process of neural network with 1 node number
表10. 节点数为1的神经网络训练过程
Unit |
Initial Value |
Stopped Value |
Target Value |
Epoch |
0 |
11 |
5000 |
Elapsed Time |
- |
00:00:00 |
- |
Performance |
0.743 |
0.0668 |
0.001 |
Gradient |
1.53 |
2.44e−05 |
1e−07 |
Mu |
0.001 |
0.001 |
1e+10 |
Validation Checks |
0 |
6 |
6 |
Table 11. Training process of neural network with 12 node number
表11. 节点数为12的神经网络训练过程
Unit |
Initial Value |
Stopped Value |
Target Value |
Epoch |
0 |
2 |
5000 |
Elapsed Time |
- |
00:00:00 |
- |
Performance |
2.3 |
0.000372 |
0.001 |
Gradient |
5.58 |
0.0619 |
1e−07 |
Mu |
0.001 |
1e−05 |
1e+10 |
Validation Checks |
0 |
0 |
6 |
Table 12. Training process of neural network with 7 node number
表12. 节点数为7的神经网络训练过程
Unit |
Initial Value |
Stopped Value |
Target Value |
Epoch |
0 |
7 |
5000 |
Elapsed Time |
- |
00:00:00 |
- |
Performance |
1.54 |
0.000114 |
0.001 |
Gradient |
2.64 |
0.0427 |
1e−07 |
Mu |
0.001 |
1e−05 |
1e+10 |
Validation Checks |
0 |
4 |
6 |
根据表10,经过11次训练后模型的性能指标未达到预设的目标误差0.001,说明当前的训练函数在收敛速度上存在不足。根据表11和表12,在分别经过2次和7次迭代训练后,模型的性能指标已达到目标误差0.001。经过上述三次BP神经网络训练,得到了三个不同的输出误差结果,
的输出误差为
,BP2的输出误差为
,而BP3的输出误差为
,通过比较可以得出
,因此可以利用“二分分割法”舍去模型
所对应的隐含层节点数,得到一个更小的隐含层节点数范围
。
(2) 第二轮实验:
,网络拓扑结构为
,记为模型
,取输出误差为
。节点数为4的神经网络训练过程见表13。
Table 13. Training process of neural network with 4 node number
表13. 节点数为4的神经网络训练过程
Unit |
Initial Value |
Stopped Value |
Target Value |
Epoch |
0 |
6 |
5000 |
Elapsed Time |
- |
00:00:00 |
- |
Performance |
0.556 |
0.000177 |
0.001 |
Gradient |
1.08 |
0.0178 |
1e−07 |
Mu |
0.001 |
1e−05 |
1e+10 |
Validation Checks |
0 |
3 |
6 |
根据表13,在经过4次迭代训练后模型的性能指标已达到预设的目标误差0.001,实验结果很理想。通过这次BP神经网络训练,得出BP4的输出误差为
,比较
、
、
的输出误差,发现
,因此舍去模型
所对应的隐含层节点数,可以得到一个更小的隐含层节点数范围为
。
(3)第三轮实验:
,四舍五入取
,网络拓扑结构为
,记为模型
,取输出误差为
。节点数为6的神经网络训练过程见表14。
Table 14. Training process of neural network with 6 node number
表14. 节点数为6的神经网络训练过程
Unit |
Initial Value |
Stopped Value |
Target Value |
Epoch |
0 |
4 |
5000 |
Elapsed Time |
- |
00:00:00 |
- |
Performance |
0.766 |
7.67e−07 |
0.001 |
Gradient |
2.22 |
0.00199 |
1e−07 |
Mu |
0.001 |
1e−05 |
1e+10 |
Validation Checks |
0 |
2 |
6 |
根据表14,经过4次迭代训练后模型的性能指标已达到预设的目标误差0.001,实验结果很理想。通过这次BP神经网络训练,得出BP5的输出误差为
,比较
、
、
的输出误差,发现
,因此舍去模型
所对应的隐含层节点数,可以得到一个更小的隐含层节点数范围为
。
(4) 第四轮实验:
,网络拓扑结构为
,记为模型
,取输出误差为
。节点数为5的神经网络训练过程见表15。
Table 15. Training process of neural network with 5 node number
表15. 节点数为5的神经网络训练过程
Unit |
Initial Value |
Stopped Value |
Target Value |
Epoch |
0 |
5 |
5000 |
Elapsed Time |
- |
00:00:00 |
- |
Performance |
2.55 |
1.54e−06 |
0.001 |
Gradient |
5.34 |
0.00351 |
1e−07 |
Mu |
0.001 |
1e−08 |
1e+10 |
Validation Checks |
0 |
1 |
6 |
通过第四次BP神经网络训练,得出BP6的输出误差为
,比较
、
、
发现
。实验结束,四轮实验结果见表16。
Table 16. Comparison of network performance of BP network models with different model nodes
表16. 不同模型节点数的BP网络模型的网络性能对比
模型 |
节点数 |
训练次数 |
MSE |
Performance |
转移函数 |
训练函数 |
BP1 |
1 |
11/5000 |
0.093524 |
0.0668 |
tansig |
trainlm |
BP2 |
12 |
2/5000 |
0.25357 |
0.000372 |
tansig |
trainlm |
BP3 |
7 |
7/5000 |
0.061533 |
0.000114 |
tansig |
trainlm |
BP4 |
4 |
6/5000 |
0.041544 |
0.000177 |
tansig |
trainlm |
BP5 |
6 |
4/5000 |
0.0064592 |
7.67e-07 |
tansig |
trainlm |
BP6 |
5 |
5/5000 |
0.055678 |
1.54e-06 |
tansig |
trainlm |
表16可以看出BP5模型最终的方差达到了0.0064592,当隐含层节点数为6时,BP神经网络的均方误差(MSE)最小,此时BP神经网络的整体表现最优。因此,采用“二分分割法”确定的最佳隐含层节点数为6。
5.1.3. 网络结构
改进BP神经网络预测模型的拓扑结构为2-6-1。拓扑结构见图2。
Figure 2. Topology structure of BP neural network prediction model
图2. BP神经网络预测模型拓扑结构
5.2. 网络测试
Figure 3. Verification data scatter fitting diagram
图3. 验证数据散点拟合图
在构建预测模型时,样本数据的质量对模型性能的准确性具有较大影响,因此,精心选择样本数据至关重要。样本数据集通常由训练样本和测试样本组成,而药品需求变化的规律则隐含于训练样本之中,故训练样本的选择显得尤为关键。基于上述考量,将样本容量设定为表3中的12组数据(覆盖2023年1月至12月)。同时,为提升样本数据的客观性和质量,本研究采用随机抽样方法从表3中选取9组数据作为训练样本,以确保其广泛代表性。为确保预测输出的高精度,测试样本需通过BP神经网络预测模型(该模型基于训练样本训练而成)的检验。鉴于训练样本的随机性,剩余数据同样遵循随机原则且与训练样本互斥,因此,测试样本由样本数据中去除训练样本(9项)后的其余3组数据构成,即2023年3月、5月、8月的数据。在MATLAB中进行多次训练后,得到BP神经网络样本测试的训练过程(见表17)、验证数据散点拟合图(见图3)、预测值与实际值对比图(见图4)。
Figure 4. Comparison chart between predicted value and actual value of BP neural network
图4. BP神经网络的预测值与实际值对比图
Table 17. Training process of BP neural network sample test
表17. BP神经网络样本测试的训练过程
Unit |
Initial Value |
Stopped Value |
Target Value |
Epoch |
0 |
2 |
5000 |
Elapsed Time |
- |
00:00:00 |
- |
Performance |
4.62 |
0.000376 |
0.001 |
Gradient |
7.41 |
0.0545 |
1e−07 |
Mu |
0.001 |
1e−05 |
1e+10 |
Validation Checks |
0 |
1 |
6 |
通过软件运行及训练,得出2023年3月、5月、8月的数据,结果对比情况见表18。
从BP神经网络样本测试的训练过程图中可以观察到模型仅经过2次迭代后,其性能指标已成功地达到了预设的目标误差0.001,从验证数据散点拟合图可以看到预测值和真实值之间具有非常强的相关性,相关系数非常高,R达到了0.99984,由此可以看出用训练数据建立的神经网络模型用于药品需求量预测的效果非常很好。为了进一步验证模型的可靠性,对比了预测值与实际值之间的误差,通过图4可以看到期望值和预测值曲线非常接近,在3月和8月的预测值和期望值几乎重合,从表18可以发现误差比例均保持在可接受的范围内,这3个月的预测误差最多不超过37,且对8月的预测数据误差几乎为0。基于上述分析,可以判断所构建的BP神经网络预测模型是稳定且可靠的。
Table 18. Comparison of prediction results of test samples
表18. 测试样本的预测结果对比
月份(随机) |
3 |
5 |
8 |
实际需求量 |
497 |
303 |
295 |
预测需求量 |
494 |
340 |
294 |
绝对误差 |
−3 |
37 |
−1 |
相对误差(%) |
−0.60 |
12.21 |
−0.34 |
5.3. 需求预测
在验证了改进BP神经网络预测模型的可靠性后,根据上述模型预测方法预测A医疗机构的集采药品X在2024年1~5月的需求量,每次预测一个月的结果,并与实际进行对比,验证预测的准确度,后一个月的预测结果是在把前一个月的实际需求量为样本数据下进行的预测的,以此类推,医疗机构A五个月的需求预测结果见表19。结果表明预测的准确性均在90%以上,满足要求。
Table 19. The forecast demand of medicine X in medical institution A from January to May 2024
表19. 2024年1~5月A医疗机构药品X的预测需求量
|
1月 |
2月 |
3月 |
4月 |
5月 |
实际需求量 |
645 |
581 |
623 |
429 |
381 |
预测需求量 |
632 |
529 |
643 |
431 |
378 |
绝对误差 |
−13 |
−52 |
20 |
2 |
−3 |
相对误差(%) |
−2.02 |
−8.95 |
3.21 |
0.47 |
−0.79 |
6. 结论
本文根据药品集团采购供应链药品需求预测的现状,建立了基于改进BP神经网络的药品需求预测模型,该模型在优化过程中,特别关注并改进了输入层和隐含层的设计。同时,通过实例研究对某药品进行需求预测分析,进一步验证了该模型的可靠性。结果显示,模型预测的药品需求量及其预测的误差率均处于可接受范围,不仅证实了模型的准确性和适用性,也为医疗机构的需求计划及决策提供了坚实的依据。此外,这一研究成果还为基于需求预测的药品集团采购供应链库存控制模型的研究奠定了坚实的数据基础。
本文的改进BP神经网络模型在药品需求量预测方面具有广泛的应用场景。首先,该模型可以应用于医疗机构制定科学的采购计划和库存策略。通过准确预测药品需求量,医疗机构可以合理安排采购量,避免库存积压或短缺现象的发生;其次,该模型还可以应用于药品生产企业制定生产计划。通过了解市场需求情况,药品生产企业可以合理安排生产规模,提高生产效率和市场竞争力;此外,该模型还可以为政府监管部门提供决策支持。政府监管部门可以通过分析药品需求量数据,了解市场动态和趋势,制定更加科学合理的药品监管政策。然而,在实际应用中该模型可能会遇到一些问题。例如,药品需求量的影响因素可能随着时间和市场环境的变化而发生变化,所以为了保持模型的准确性和可靠性,需要不断更新和优化模型。此外,由于数据获取和处理的难度,模型的输入变量可能存在一定的误差和不确定性,这可能会对模型的预测结果产生一定的影响。为了解决这些问题,我们可以采取以下措施:一是定期收集和分析药品需求量的相关数据,了解市场动态和趋势;二是不断优化和改进模型,提高其准确性和可靠性;三是加强对输入变量的数据质量控制和预处理工作,减少误差和不确定性的影响。