毕 业 论 文
农产品价格预测方法及其Web预测服务设计
洪洒 200630560306
指导教师 杨振刚 讲师
学院名称 论文提交日期
答辩委员会 ____________
评 阅 人 _________
信息学院 2010年5月
专业名称 信息管理与信息系统 论文答辩日期 年 月
摘 要
农产品价格波动主要是市场经济机制下的供应和需求等方面引起的,能够准确的预测农产品价格,对于相关部门控制价格,稳定农产品市场让其健康发展有着重要的意义。在农产品价格预测上众多学者做过研究,但研究成果很少普及用到网络系统上,本次研究总结和利用前人研究成果,使用ARIMA模型来预测农产品价格未来的走势,并开发个Web系统。
本文首先分析与比较了单指数平滑、双指数平滑、自回归单整移动平均法、季节自回归单整移动平均法这四种农产品价格预测方法,发现季节自回归移动平均法最能够准确预测未来农产品价格走势。在Web系统开发方面,首先进行需求分析、系统设计,然后编写与调试各功能模块,最后展示网站系统实的基本功能。系统最终能够提供农产品价格预测服务,并为第三方软件提供一个访问接口。
系统支持技术选择JSP技术和Struts框架技术。 JSP同样继承了Java技术简单、便利、面向对象、跨平台和安全可靠的优点,比起其他服务器脚本语言,JSP更加简单、迅速、和有力。Struts是典型的MVC结构实现框架,它分离软件系统模型、视图、控制器三个部分,提高软件可维护性。
关键词:农产品 价格预测 指数平滑 ARIMA JSP
I
目 录
1 绪论 ........................................................................................................................................ 1 1.1 研究背景.............................................................................................................................. 1 1.2 国内外研究现状.................................................................................................................. 1 1.2.1 预测方法进展 .................................................................................................................. 1 1.2.2 计算机应用领域 .............................................................................................................. 2 1.3 研究内容与方法.................................................................................................................. 3 2 预测方法相关原理与研究分析 ............................................................................................ 3 2.1 数据获取与预处理.............................................................................................................. 3 2.2 时间序列分析法.................................................................................................................. 3 2.3 指数平滑法.......................................................................................................................... 3 2.3.1 指数平滑模型的发展 ...................................................................................................... 4 2.3.2 指数平滑法的优点 .......................................................................................................... 4 2.3.3 单指数平滑法对小白菜价格的预测 .............................................................................. 4 2.3.4 双指数平滑法对小白菜价格的预测 .............................................................................. 7 2.4 ARIMA模型 ....................................................................................................................... 8 2.4.1 建模基本程序 .................................................................................................................. 8 2.4.2 模型识别与估计 .............................................................................................................. 9 2.4.3 ARIMA模型的诊断...................................................................................................... 11 2.4.4 模型预测 ........................................................................................................................ 12 2.4.5 模型优化 ........................................................................................................................ 13 2.5 预测方法性能比较与分析................................................................................................ 15 3 系统支持技术 ...................................................................................................................... 16 3.1 B/S结构 ............................................................................................................................ 16 3.2 JSP技术............................................................................................................................. 17 3.3 框架技术............................................................................................................................ 17 3.4 Struts框架中的MVC模式 ............................................................................................. 18 4 系统需求分析 ...................................................................................................................... 19 5 系统设计 .............................................................................................................................. 20
II
5.1 系统总体结构设计............................................................................................................ 20 5.2 系统服务设计.................................................................................................................... 21 5.2.1 农产品价格预测服务设计 ............................................................................................ 21 5.2.2 第三方软件接口服务设计 ............................................................................................ 21 5.3 数据库设计........................................................................................................................ 22 5.4 系统详细设计 ................................................................................................................... 23 5.4.1 用户、管理员与系统交互 ............................................................................................ 23 5.4.2 农产品价格预测服务详细设计 .................................................................................... 24 6 系统实现 .............................................................................................................................. 27 6.1 农产品价格预测实现........................................................................................................ 27 6.2 农产品行情查询实现........................................................................................................ 29 6.3 添加修改价格信息的实现................................................................................................ 30 7 总结与展望 .......................................................................................................................... 32 7.1 总结.................................................................................................................................... 32 7.2 展望.................................................................................................................................... 32 致谢 ............................................................................................................................................ 33 参考文献 .................................................................................................................................... 34 英文摘要 .................................................................................................................................... 35 附录 ............................................................................................................................................ 36 华南农业大学本科专业毕业论文成绩评定表 ........................................................................ 45
III
1 绪论
1.1 研究背景
近年来,人们对大宗农产品的需求呈现大量化、多样化、优质化和动态化的趋势,与农产品生产规模小,生产有季节性、区域性、分散性等特点产生矛盾。传统农产品流通领域存在中介环节多、信息不对称、交易成本高、流通效率低等一系列问题,难以适应新的市场发展形势,严重地阻碍了农产品市场的发展[ 1 ]。
(1)流通成本高:中国农产品流通领域中介主体过多,产销流通链过长,导致流时间长、市场效率低,农产品零售价和收购价之间差价一般在3~10倍之间,造成种差价的重要原因就是农产品的流通成本居高不下,包括运输成本、储藏成本、运营成本。
(2)流通半径小:农产品具有区域性、季节性和分散性等特点,而消费者对农品具有全年普遍性、多样性、变化性的需求,因此各种农产品需要经常在不同区域进行运输流通以满足各地消费者的需求。然而,高流通成本了农产品的流通半径,造成农产品在产地市场供过于求,贱价销售,而在销地市场却供不应求,价格飘升的市场分割局面。
(3)市场体系功能落后:一是市场形成价格稳定性差,中国农产品批发市场大数规模较小,地域分散,产品和信息隔离,难以形成交易集中、市场透明度高、竞争充分的市场环境,导致农产品价格波动较大,区域价格差异明显:二是市场交易方式原始,中国农产品批发市场主要采用“一对一”交易方式,交易规模小、次数多,信息搜寻难度大,市场透明度低,形成的价格不能正确地反映供求关系;三是市场信息服务差,许多批发市场的信息建设基本处于空白,信息的传递效率和共享度低,对信息的搜集、加工、处理、发布能力低下,容易造成信息的扭曲和失真。
能够准确的预测农产品价格,对于相关部门控制价格,稳定农产品市场让其健康发展有着重要的意义。农产品价格预测宏观上可以帮助管理部门调整方向;微观上为农民提供即时的市场信息,降低生产和经营成本,增强农民抗御市场风险的能力,促进农民增收。本文据此提出研究预测方法,对农产品价格进行预测,避免盲目经济行为,繁荣农村经济。与研究的同时,开发一个Web系统,让生产者、经营者、消费者通过系统平台了解当前行情信息和未来农产品价格走势 ,提高市场信息服务水平。 1.2 国内外研究现状 1.2.1 预测方法进展
1
中国科学院数学与系统科学研究院汪寿阳研究员带领的中国外贸进出口预测和国际收支预警系统研究小组应用宏观管理与,宏观经济学、国际金融学等学科的基础知识,并大量地使用了时间序列分析、应用概率统计、数学规划、决策分析、模拟与评估、管理信息系统与决策支持系统等学科的专门技术,在非线性预测技术、定量与定性综合
1他们将先进的计量分析模型集成等理论和方法上做出了一系列的创新性工作。例如:○
与人工神经元网络模型和主成分分析技术等相结合,运用一些数学方法解决了人工神经元网络模型预测模型中的若干技术难题,使得预测模型能够适应经济转型国家结构性变
2他们将文本挖掘(Text 化的特征,不仅大大提高了预测精度,而且丰富了预测技术。○
mining)技术,传统的计量经济模型(Econometrics),人工智能技术(Intelligence,如神经网络,专家系统,模糊逻辑等)综合集成起来,提出了一个TEI@I综合集成预测方法。他们不单单是提出一个抽象的方法,而且还将此方法具体化和实用化,开发了一个基于此方法的计算机集成系统。TEI@I方法突破了过去定性与定量综合集成方法中定性分析主要由系统操作者进行的模式,而是对互联网上广泛存在的观点进行挖掘和综合,
3他们在分析外汇波动对同时也体现了经济变量随经济参与者思想变化而变化的特征。○
进出口的影响时,把微观经济分析的压力测试方法、情景分析方法等工具引进到宏观经济分析中,不仅被国外的学者评论为首创性思想,所得的到研究成果很好地解释了国际经济变动对我国经济,特别是对我国国际收支的影响,较好地支持了国际贸易的制订。他们运用这些新的研究方法,不仅得到一批领先性结果,而且有新的发现,如他们建立了一个汇率动态演化的一般均衡模型,推导出自愿退出固定汇率制度和被迫退出固定汇率制度的宏观经济条件[ 2 ]。 1.2.2 计算机应用领域
由中国农业科学院科技文献信息中心主持、北京理工大学和广东省农科院情报所参加共同完成的国家“十五”科技攻关计划专题——“农产品市场信息分析预测网络化平台研究”的阶段性成果“农产品市场信息分析预测网络化平台”,开发成功了我国第一个在LINUX操作系统、Web服务器APACHE和TOMCAT以及Oracle数据库管理系统环境下实现基于XML和Java以及其他Internet技术综合集成的农产品市场信息分析预测网络化平台。建立了在多种预测模型集成基础上的农产品市场信息综合预测模式,并以粮食生产为例,有效地将经济、价格和气象因子的影响综合于粮食生产定量化分析模型中,首次在网络环境下实现了用户远程信息分析与预测,理论和方法上有创新,这一成果具有明显的特色和较大的应用价值。制定了农产品预测基本数据XML标准词汇表,提
2
出并实现了“一站式”农产品信息发布与交易网络化服务技术,解决了农产品信息网络化服务的技术问题,对于推动农产品信息交换与处理规范化、标准化,促进农业信息化发展,具有积极作用。据专题主持人赵瑞雪博士和张峭博士介绍,该研究成果已在广东省广州农业信息网、农业科技园区网、广东兽药饲料贸易网等多家农业网站上应用,取得了一定的社会和经济效益[2 ]。 1.3 研究内容与方法
本次研究考虑到最终预测方法在系统上的实现,对预测方法进行研究,如回归分析法中的多元回归分析发、前移回归分析法,时间序列法中的单指数平滑、双指数平滑、自回归移动平均法、季节自回归移动平均法,在经过大量实验分析后,比较得出一个最优的方案,该方案将在Web预测服务系统中实现。
在系统的实现上,使用JSP(Java Server Pages)技术与Struts框架技术,JSP是由Sun
公司倡导,与多个公司共同建立的一种技术标准,它建立在Servlet之上。考虑到系统规模较小,所以只使用目前流行的开源框架Struts,Struts是个典型的MVC(Model、View、Controller)结构实现框架,使用该框架对Web系统以后的维护与升级打好基础。
2 预测方法相关原理与研究分析
2.1 数据获取与预处理
数据处理就是对每月农产品交易行情价格及其相关信息的资料进行处理的问题, 数据的获取来自“中国蔬菜网”,选取广州市白云山农产品综合批发市场每日小白菜交易价格的作为为实验数据对象。数据时间跨度从2008年1月起到2010年2月。 2.2 时间序列分析法
时间序列是指按时间顺序排列的预测数据集。在预测时,依据表示事物状态的主要变量的历史数据,用统计学方法或系统辨识的方法建立起描述事物迄今为止的变化规律的数学模型,并以此来推测未来。时向序列预测模型还可分传统时间序列预测模型与现代时间序列预测模型[3~4]。
传统时间序列预测模型有移动平均、指数平滑模型等;现代时间序列预测模型则包括ARIMA(Autoregressive Integrated Moving Average Model,自回归移动平均模型)、ARCH(Autoregressive conditional heteroskedasticity model,自回归条件异方差模型)、GARCH(Generalized ARCH,广义ARCH)等[4]。 2.3 指数平滑法
3
2.3.1 指数平滑模型的发展
指数平滑模型是由加拿大人C.C.霍尔特于1957年在未公开发表的报告中首次提出的,它在报告中详细的阐述了单指数平滑模型。美国人布朗在1962年的著作中详细论述了这种方法。并提出了布朗高次指数平滑模型,并将之应用于对非线形模型的预测分析。之后,美国人姆斯在1965年首先提出指数平滑能够产生最优预报的时间序列模型。接着,在70年代末期,出现了温特线性和季节性指数平滑模型,使得指数平滑模型可以将数据的季节性、趋势性因素也纳入考虑范围[ 5]。
以上这些基于时间序列的指数平滑模型的区别在于它们是否使用多个指数,是否是趋势的或者季节性改变。1985年,美国人加德纳发表了一篇专门论述指数平滑法的文章,直到今天这篇文章还起着非常重要的作用。之后的十几年,已经比较健全的指数平滑模型被推广到了需要预测科学的各个领域,发挥了非常大的作用。但是随着应用的普及,人们逐渐发现它有以下三个问题很难解决[5]:
(l)平滑初值要确定一个平滑初值;
(2)静态平滑参数静态参数很难适应时间序列自身变化;
(3)平滑参数Alpha值不确定,它一般都是凭借经验或多次试验得到的,这样确定的值很难达到最佳值。 2.3.2 指数平滑法的优点
指数平滑模型具有其它一些算法和模型所不能达到的优势,因而使对指数平滑的研究引起了人们广泛的重视,并且在实际生活中获得了非常普遍的应用。指数平滑法有如下几个优点[5]:
(1)操作指数平滑法操作简易,成本低廉。公式简单明了,输入数据简单,在普通的计算机上即可完成操作。
(2)使用范围和性能适应性强,指数平滑法可以说适用于几乎所有的以时间序列为基础的预测中,并不仅仅在经济预测上,还可以用于自然科学,军事等各个方面。
(3)数据处理的方法利用全部历史数据和相关信息。遵循“厚近薄远”的规则加权、修匀数据。使得数据模型具有抵御和减弱异常数据影响的功能,并使时间序列包含的历史规律显著的体现出来。这是指数平滑最显著的特点。
(4)数据的需求和处理量可以节省很多数据和数据处理时间,指数平滑预测只要有上期实际数据和预测值就可以计算下期的预测值。 2.3.3 单指数平滑法对小白菜价格的预测
4
本文使用的数据是2008年1月份至2009年12月份“广州白云山农产品综合批发市场”小白菜的批发价格,共计120条记录,每个月份5个记录。画出这两年的小白菜价格折线图,如图1所示。
2008-2009年小白菜价格元/kg3价格曲线21011325374961738597109
图1 2008年至2009年小白菜价格
横坐标自左向右表示日期序列,从2008年1月1日起,序列每递增5,表示时间向后推移一个月份。纵坐标表示小白菜批发价格,单位为元/kg。从大体上观察,可以发现08年价格波动比较剧烈,横坐标为34的位置,也就是2008年的7月份,达到这两年小白菜价格的最高点。
2009年小白菜价格趋势分析图43.532.521.510.50171319253137434955元/kg08年价格曲线趋势曲线
图2 小白菜预测分析图
5
由于我们主要关心农产品价格现状,对2009年的记录进行趋势分析,使用Minitab软件的“趋势分析”功能,得趋势方程:
Yt = 1.025 + 0.0380×t - 0.000277×t2
如图2所示,红色线为2009年“趋势曲线”,不难看出,2009年的小白菜价格在波动中有上升的趋势。
现在使用单指数平滑法对价格进行预测[5~6],首先用软件SPSS对数据进行分析, Alpha值从0开始,步长0.01,得出的平均方差最小的最优Alpha值为0.95。同样可以使用Minitab软件的单指数平滑功能来分析,得到的Alpha值为0.95167,保存统计分析后得到的拟合数据,用Excel画图折线图。如图2-3 是2009年小白菜实际价格与预测价格的单指数平滑拟合图,蓝色曲线是实际价格,红色曲线是预测价格,黄色曲线是方差,可以看出预测结果与实际价格比较吻合,用单指数平滑法对小白菜价格的预测有一定的可行性。
单指数平滑拟合图43.532.521.510.50-0.51-1-1.5实际价格预测价格方差6111621263131465156元/kg
图3 单指数平滑拟合图
以上步骤还只是预测结果与历史数据拟合,还不能做到真正的预测,现在使用指数平滑法对未来一个月的小白菜价格进行预测,使用Minilab软件单指数平滑统计功能,向后预测5个时间点的价格(对应2010年1月5个记录点小白菜价格),Alpha值为0.95,分析预测结果如图4,青色线(预测价格上限)和黄色线(预测价格下限)所包含的区间是95%致信度下,小白菜可能出现的价格,红色线(预测价格)为未来一个月份小白菜预测价格,这段时间预测结果都为2.58元/kg,基本上和未来的实际价格没有大的偏差。
6
单指数平滑法预测43.532.5元/kg21.510.501611162126313146515661实际价格预测价格预测价格下限预测价格上限
图4 单指数平滑法预测
2.3.4 双指数平滑法对小白菜价格的预测
使用Minilab对数据进行分析,关于Alpha和Gamma的取值,选“最优综合”的分析的方法,其中Alpha表示水平上的影响,Gamma代表趋势。分析得出的平均方差最小的最优Alpha值为1.04,Gamma值为0.03,图5是2009年小白菜实际价格与预测价格的双指数平滑拟合图,可以看出预测结果与实际价格比较吻合。
双指数平滑拟合图43.532.521.510.50-0.516111621263131465156-1-1.5实际价格预测价格方差元/kg
图5 双指数平滑法拟合图
现在使用双数平滑法对小白菜价格进行预测[3,7],首先用Minilab软件单指数平滑统计功能,向后预测5个时间点的价格(对应2010年1月5个记录点小白菜价格),Alpha值为1.04,Gamma值为0.03,分析预测结果如图6所示。
7
双指数平滑法预测6元/kg3210-115913172125293337414953576165实际价格预测价格预测价格下限预测价格上限
图6 双指数平滑法预测
青色线(预测价格上限)和黄色线(预测价格下限)所包含的区间是95%致信度下,小白菜可能出现的价格,红色线(预测价格)为未来一个月份小白菜预测价格,预测结果中表现出未来价格有上升的趋势,并且基本上和未来的实际价格没有大的偏差,双指数平滑预测比单指数平滑预测效果稍好。 2.4 ARIMA模型
博克斯与詹金斯所著的《时间序列分析:预测与控制》提出了新一代的预测方法———ARIMA,这种被称为博克斯- 詹金斯(Box-Jenkins)方的预测方法,在“让数据自己说话”的哲理的指引下,着重于分析经济时间序列本身的概率或随机性质,而不在意于构造单一方程抑或联立方程模型[8~14]。ARIMA方法利用单个时间序列所表现出的规律性建立模型加以模拟,并且进行预测,对于短期预测精度比较高,但是长期预测期则偏差较大。因此多用于对时间序列数据进行1~3期的外推预测。
ARIMA是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值进行回归所建立的模型, 包括移动平均过程(MA)、自回归过程(AR)、自回归移动平均过程(ARMA)以及ARIMA过程[ 3 ]。 2.4.1 建模基本程序
ARIMA模型预测的基本程序如下[8~9]:
(1)根据时间序列的散点图、自相关函数和偏自相关函数图以ADF 单位根检验其方差、趋势及其季节性变化规律,对序列的平稳性进行识别。
8
(2)对非平稳序列进行平稳化处理。如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理,如果数据存在异方差,则需对数据进行技术处理,直到处理后的数据的自相关函数值和偏相关函数值无显著地异于零。
(3)根据时间序列模型的识别规则,建立相应的模型。若平稳序列的偏相关函数是截尾的,而自相关函数是拖尾的,可断定序列适合AR模型;若平稳序列的偏相关函数是拖尾的,而自相关函数是截尾的,则可断定序列适合MA模型;若平稳序列的偏相关函数和自相关函数均是拖尾的,则序列适合ARIMA模型。
(4)进行参数估计,检验是否具有统计意义。 (5)进行假设检验,诊断残差序列是否为白噪声[3]。 (6)利用已通过检验的模型进行预测分析。
图7 ARIMA模型预测程序
2.4.2 模型识别与估计
根据数据求2009年白菜价格的自相关函数(ACF)。如图8,在红色虚线以内的值,基本上可以视为接近于零,可以看出,滞后数2以后,ACF几乎都可以视为零,ARIMA(p,d,q)模型中的q可以暂时定为2。
9
09年白菜价格自相关函数1.00.80.60.4自相关0.20.0-0.2-0.4-0.6-0.8-1.0151015202530滞后30455055 图8 09年白菜价格自相关函数
计算2009年白菜价格的偏相关函数(PACF)。如图9,在红色虚线以内的值,基本上可以视为接近于零,在滞后为5和为28时候,PACF不在红色虚线以内,可以判断09年白菜价格数据序列不是平稳的序列,需要对原数据序列进行一阶差分后在求新的自相关函数和偏相关函数。
09年白菜价格偏相关函数1.00.80.60.4偏自相关0.20.0-0.2-0.4-0.6-0.8-1.0151015202530滞后30455055 图9 09年白菜价格偏相关函数
一阶差分后的自相关函数和偏相关函数如图10 和图11所示。对于ACF,在滞后数为4以后ACF都在红色虚线以内,这些ACF可以视为零,对于PACF,在滞后数为4以后,PACF同样都可以视为零。经过分析,ARIMA模型初步确定为(4,1,4)。
10
一阶差分后自相关函数1.00.80.60.4自相关0.20.0-0.2-0.4-0.6-0.8-1.0151015202530滞后30455055 图10 一阶差分后自相关函数
一阶差分后偏相关函数1.00.80.60.4偏自相关0.20.0-0.2-0.4-0.6-0.8-1.0151015202530滞后30455055 图11 一阶差分后偏相关函数
2.4.3 ARIMA模型的诊断
在识别ARIMA模型并将其拟合后,必须对所有拟合的模型进行诊断,才能真正用于预测,对残差的分析和T-检验,是两个比较有效的诊断方法。
对模型进行残差分析,图12是根据ARIMA(4,1,4)模型拟合得到的残差生成直方图,当残差近似地服从均值为零的正态分布时,模型可信度较高。如图所示,该模型拟合的残差近似显均值为零的正态分布,说明模型(4,1,4)可信度较高。
对模型进行T-检验,表1为Minilab分析工具拟合模型时生成的参数估计值,观测P值,这次模型拟合选择的显著水平Alpha为0.05,当P值大于0.05时,那么我们没有理
11
由拒绝原假设。如表1所示,AR=2、AR=3、AR=4、MR=1、MR=2、MR=4时,P值均大于0.05,模型ARIMA(4,1,4)可信度较高。
残差直方图16141210820157516060.93321840.9035661178320222其他4099163453725936频率频率755229-006.7.5.3.1-0-0-00.11接收
图12 残差直方图
表1 模型T-检验
类型 AR 1 AR 2 AR 3 AR 4 MA 1 MA 2 MA 3 MA 4 常量
2.4.4 模型预测
使用ARIMA(4,1,4)模型对未来进行预测,预测点数为10(对应实际时间2个月份),预测结果如下,青色线(预测价格上限)和黄色线(预测价格下限)所包含的区间是95%致信度下,小白菜可能出现的价格,红色线(预测价格)为未来2个月份小
12
系数
-0.6755 -0.0751 0.1723 -0.0372 -0.5074 0.1570 0.7071
系数标准误
0.2937 0.2716 0.2534 0.2732 0.2636 0.2283 0.2428
T
-2.30 -0.28 0.68 -0.14 -1.92 0.69 2.91 1.94 3.31
P
0.026 0.783 0.500 0.2 0.060 0.495 0.005 0.059 0.002
0.5943 0.3070 0.03776
0.01140
白菜预测价格,在预测点数10以内,能过正确地预测出未来这段时间价格下降的趋势,但在预测点10以后,不能正确预测出价格上涨的趋势。该预测模型未达到预先期望的效果,需要进一步改进。
ARIMA模型预测43.532.521.510.501713192531374349556167实际价格预测价格预测价格下限预测价格上限元/kg
图13 ARIMA模型预测
2.4.5 模型优化
根据2.4.2节的分析结果,2009年小白菜价格数据序列为非稳定序列,对其一阶差分得到平稳序列。考虑到季节周期对农产品价格的影响,对季节因素的考虑可以优化原先ARIMA(4,1,4)的模型假设。
一阶差分后自相关函数1.00.80.60.4自相关0.20.0-0.2-0.4-0.6-0.8-1.0151015202530滞后30455055 图14 一阶差分后偏相关函数
13
观察一阶差分后的ACF图,如图14,在滞后数为4,19,34处,出现该点ACF值相对左右一定数目时滞ACF,处于一个谷值,这表明ACF受到周期为15的季节影响,周期15刚好与实际时间上的3个月吻合,对季节进行一阶差分,能使得数据序列更平稳,初步建立模型ARIMA(4,1,4)(0,1,1)15,模型中的“15”表示季节周期。
对模型进行残差分析,图15是根据ARIMA(4,1,3)(0,1,1)15模型拟合得到的残差直方图,残差近似服从均值为零的正态分布时,模型可信度较高。如图所示,该模型拟合的残差近似显均值为零的正态分布,说明该季节ARIMA模型可信度较高。
残差直方图16141210820频率频率96.4295651-0516.18430840.70710430.7534367680.214727526775837其他-0接收-0.69
图15 残差直方图
表2 季节ARIMA T-检验
类型 AR 1 AR 2 AR 3 AR 4 MA 1 MA 2 MA 3 SMA 15 常量
系数
-0.05 -0.0722 0.0668 -0.2194 0.1795 -0.0381 0.6683 0.92 -0.011940
系数标准误
0.3788 0.3228 0.2857 0.23 0.3687 0.3235 0.2626 0.2403 0.008326
T
-0.15 -0.22 0.23 -0.83 0.49 -0.12 2. 2.70 -1.43
P
0.882 0.824 0.816 0.412 0.629 0.907 0.016 0.011 0.160
14
对模型进行T-检验,表2为Minilab分析工具拟合模型时生成的参数估计值,观测P值,这次模型拟合选择的显著水平Alpha为0.05,当P值大于0.05时,那么我们没有理由拒绝原假设。如表2-2所示,AR=1,AR=2、AR=3、AR=4、MR=1、MR=2、MR=3时,P值均大于0.05,同时,季节周期SMA=15时P值也大于0.05,所以季节模型ARIMA(4,1,3)(0,1,1)15可信度较高。
使用ARIMA(4,1,3)(0,1,1)15模型对未来进行预测,预测点数为10(对应实际时间2个月份),预测结果如图16所示,青色线(预测价格上限)和黄色线(预测价格下限)所包含的区间是95%致信度下,小白菜可能出现的价格,红色线(预测价格)为未来2个月份小白菜预测价格。观测预测结果发现吻合程度较高,2010年1月份和2月份的小白菜实际价格,先是一小段时间价格上升,然后持续下降,在时间点66出到最低谷时再持续上升到12月份价格的水平,预测模型预测的结果也正好反映出这些价格波动趋势。该预测模型可以较精确的预测出未来2个月份的小白菜价格。
季节ARIMA模型预测4.3.532.521.510.501713192531374349556167实际价格预测价格预测价格下限预测价格上限元/kg
图16 季节ARIMA模型预测
2.5 预测方法性能比较与分析
用指数平滑法来进行预测,操作起来比较简单,现在通过计算机来辅助分析数据,用类似与穷举法的方法找出Alpha值个Gamma值的最优解,代替了传统靠经验来定值的方法,大大的提高了数据统计分析的效率。
指数平滑法在短期预测上能得到较好的预测结果,因为它遵循“重近轻远”,能使时间序列所包含的历史规律性能显著地体现出来。但在长期预测方面存在较大的缺陷,
15
它是将以往取值的加权平均数作为下一期预测值,显然,当事物发展趋势长期递增,那么将过去的数据进行加权平均作为下一期预测值必然偏低,如在2.3.4节用双指数平滑法对小白菜价格进行预测,在前期小白菜是个增长的趋势,预测值也能成功反映这种趋势,但相对实际值偏低。
ARIMA模型进行预测,效果比指数平滑法好很多,但操作起来较为复杂。在2.4.3节中用非季节的ARIMA模型建模,所得到的模型能够很好的预测未来农产品价格的趋势,但随着预测点向后推移后,这种趋势似乎没有消除,持续增长或下降,它没能够反映出价格波动的趋势,这是非季节ARIMA模型的缺陷。
季节ARIMA能够很好地反映出价格的波动,如在2.4.4节季节ARIMA模型建模中,预测结果很好的地拟合了实际价格整个波动过程,从价格持续增长一段时间,再持续下降。但季节ARIMA又有一个的缺点,它依赖于一个周期,如果历史数据波动比较随机的话,模型无法的到一个确切的季节周期,例如利用2008年至2009年的小白菜价格建季节ARIMA模型,由于2008年小白菜价格波动剧烈,使这两年的价格波动没有个明显的周期,从而得不到一个优秀的季节ARIMA模型。
通过以上分析比较,指数平滑法虽然在短期预测上有优势,但不能满足Web系统的预测服务的需求。ARIMA模型建模随较为复杂,但可以得到较好的预测结果,并满足需求。所以,未来的Web预测系统中采用的预测方法主要是季节ARIMA为主,非季节ARIMA为辅。由于季节ARIMA有时得不到较优的预测模型,这时可以用非季节ARIMA模型来代替,弥补季节ARIMA不足之处。
3 系统支持技术
3.1 B/S结构
本次系统开发将使用B/S结构,B/S结构的优点:
(1)具有分布性特点,可以随时随地进行查询、浏览等业务处理,用户不需要安装专门的客户端,只需一个普通的Web浏览器既可以。
(2)业务扩展简单方便,通过增加相应网页即可增加服务器功能,兼容性好,使用不同的开发工具,也能很好的为系统扩展新的业务和功能模块。
(3)维护简单方便,只需要在服务器端修改相应的部分,而客户端不用任何操作,即可实现所有用户的同步更新。
(4)开发简单,成本较低,共享性强。
16
3.2 JSP技术
Java Server Pages 简称 JSP[15],是由Sun公司倡导,与多个公司共同建立的一种技术标准,它建立在Servlet之上。应用JSP,程序员或非程序员可以高效率地创建Web应用程序,并使用得开发的Web应用程序具有安全性高、跨平台等优点。
JSP是运行在服务器端的脚本语言之一,与其他的服务器端脚本语言一样,是用来开发动态网页的一种技术。JSP页面由传统的HTML代码和嵌入的Java代码组成。当用户请求一个JSP页面时,服务器会执行这些Java代码,然后将结果与页面的静态部分相结合返回给客户端浏览器。
JSP是在Servlet的基础上开发的技术,它继承了Java Servlet 的各项优秀功能。而Java Servlet 是作为Java 的一种解决方案,在制作网页的过程中,他继承了Java的所有特性。因此JSP同样继承了Java技术简单、便利、面向对象、跨平台和安全可靠的优点,比起其他服务器脚本语言,JSP更加简单、迅速、和有力。JSP技术优势如下:
(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。 3.3 框架技术
框架是一个描述性的构建块和服务集合,开发人员可以用来达成某个目标,如开发整个应用、构建部分应用、测试应用等等。一般来说,框架提供了解决某类问题的基础设施,是用来创建方案的工具,而不是问题的解决方案[16]。
为了针对问题设计解决方案,框架的深入程度有所不同。有些框架致力提供不同的方式来构建解决方案,有些提供通用的基础设施,将很多决策留给开发人员来完成。
在提供这种结构是,框架一般会在其体系结果中使用成熟的模式。例如,当前很多Web应用框架中就使用了MVC模式。大多数基于MVC的Web框架都有控制器组件的
17
一个集中表示。有时这个控制器是可以配置,这样请求就能作为控制器多能执行的不同动作的一部分传递给其他类。这些与应用的集成都意味这开发人员可以将更多时间放在解决业务问题上。
3.4 Struts框架中的MVC模式
MVC在Struts框架中的实现如下 [16]: (1)Model部分
由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。
(2)View部分
该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。
(3)Controller组件
Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,业务逻辑控制器本身不具备处理能力,而是调用Model来完成处理。
图17 struts工作流程
18
Struts工作流程如图5-1显示,首先客户端浏览器向服务器发出请求,这个请求被Struts前台的控制器(Controller接收,也就是图中所示的servlet,servlet读取配置文件struts-config.xml,根据所配置的信息,将请求分发到相应的ActionServlet类,该类是struts提供的,并且是框架中Controller组件的基础。Action类在处理请求时,调用到相应的业务逻辑(Model),以完成客户所希望达成的请求操作,Action完成处理以后返回一个显示页面,该显示页面被Servlet解析(通过配置文件解析),服务器端返回一个JSP页面到客户端浏览器。
4 系统需求分析
系统角色类型存在3种,游客、注册用户、第三方软件注册用户、系统管理员。 游客权限较低,基本上不能使用系统一些功能,游客通过注册,根据系统提供的认证规则,填写合法的注册信息,注册成为正式用户。
注册用户能够使用系统前台的提供的所有功能,包括对往年的行情信息的查询,查询功能必须提供一些筛选条件,方便用户快速准确的查询到所需的信息,如按年月进行搜索,按农产品的品种来搜索。系统必须提供一个最主要的功能,既是农产品价格预测功能,在该功能模块,用户可以挑选所需要进行预测的农产品,对未来的预测,系统需返回预测结果,最好返回图表,为用户比较直观显示未来农产品价格的走势。在系统达成这些基本功能时,系统同时可以提供让用户修改自己用户密码或其他信息的功能,以确保用户使用系统的安全性。
第三方软件注册用户应当能使用上系统前台的一些基本功能,与普通注册用户有着同样的权限。
系统应当提供给后台给管理员使用,管理员理应可以查询农产品价格行情,同时管理员可以查看用户的一些信息。管理员所需最为主要的功能是更新农产品价格信息,管理员可以插入新的价格信息或者修改以往输入的有误数据,系统必须提为管理员提供较为友好的服务,让管理方便添加信息和还修改以往数据。管理员可以修改自己的管理员密码。该类管理员权限较为低,不能对数据库数据等有太强的操作(如随意删除用户),以确保系统安全性。
根据用户角色类型和角色需要使用那些功能,使用软件Rational Rose 2003,画如图18的“用例图”。
19
图18 需求分析用例图
5 系统设计
5.1 系统总体结构设计
图19是系统层次图,顶层是农产品价格预测系统,第二层主要分为三个功能模块。在用户模块,有行情查询、显示系统预测结果、查看与修改个人信息功能。管理员模块,提供管理员查看用户信息、添加新的价格信息、修改个人信息的功能。第三方软件接口,为第三方软件开发商等提供一个接口,通过该接口访问农产品价格预测系统。
图19 系统层次图
20
5.2 系统服务设计
5.2.1 农产品价格预测服务设计
该农产品价格预测系统采用的主要预测模型是ARIMA模型,自回归移动平均法ARIMA在建模方面比较复杂,通过系统直接分析得出最优模型或较为优的模型显然是不可行的,因为随着时间的推移,所使用的ARIMA模型会不断的改变,一个固定的模型是不能满足准确预测农产品价格的,而这些分析过程的数学算法的实现也非常困难。
系统的价格预测是通过读取存储在数据的数据的实现,这些数据需要价格预测的分析员预先使用预测方法得到预测结果,定期更新到数据库,这样做的优点是降低了系统开发的难度和成本,同时系统去掉一个分析过程,以保证系统运行时的性能,并且保证所使用的预测模型能够准确的预测出未来农产品价格走势,为用户提供优质的服务。当然缺点是需要定期更新,由于已经有一套ARIMA建模方法,能够快速的得出预测结果,在这方面付出的成本较低。
农产品价格预测服务核心是返回包含预测价格曲线的折线图和包含某特定日期实际价格与预测价格的表格,该服务接口实现后将有如下方法:
(1)获取预测图。本方法需要用户提供的参数是农产品名、预测方法、预测日期,这两个参数将在数据库查询、返回预测价格数据中起关键作用。方法返回类型是JFreeChart类(一个图表类)。
(2)设置预测折线图表头。本方法需要提供参数是上标题、左标题,下标题,以动态显示图表(既可以动态修改折线图对象表头)。
(3)预测图添加曲线。此方法为折线图对象动态添加曲线,以满足对象动态修改。 (4)获取特定时间段实际价格与预测价格。需提供的参数是农产品名、预测方法、预测日期。
(5)获取特定日期实际价格与预测价格。用户需要提供的参数是农产品名、预测方法、预测日期。
5.2.2 第三方软件接口服务设计
该农产品价格预测系统将提供接口给第三方软件访问,尽量让第三方软件用户享受普通网络用户得到的服务。接口设计实现后,将有如下方法:
(1)验证方法。用户输入用户名和密码作为参数,提交到服务器,认证通过后服务器将成功建立一个会话,用户就能有权利享受其他服务。
21
(2)价格查询方法。用户输入年份、月份、产品名为参数,该方法使用相应的数据库访问类,返回List (3)价格预测方法。用户输入日期做为参数,方法返回List 本系统数据库的表较为简单,下面是几个基本的数据库表。 (1)用户表 表3 用户表 字段名 用户ID 用户名 密码 电子邮箱 联系电话 (2)行情表 表4 行情表 字段名 行情ID 产品名 日期 最低价格 最高价格 平均价格 计量单位 (3)预测表 22 类型 Long Char Char Char Char 长度 8 20 20 20 20 备注 主键 Nonull Nonull Nonull 类型 Long Char Datetime Float Float Float Char 长度 8 20 8 8 8 8 10 备注 主键 Nonull Nonull 表5 预测表 字段名 预测ID 年份 序列号 产品名 实际价格 预测价格 5.4 系统详细设计 5.4.1 用户、管理员与系统交互 用户、管理员与系统交互的类图如图20,客户端的请求通过Servlet前端控制器,将请求发送到Action类,LoginAction是登录时的服务器响应客户端请求使用的自定义类,RegisterAction对应用户注册请求,ForecastAction对应用户预测查询请求,QueryAction对应用户查询行情信息请求,ModifyAction对应管理员修改行情信息请求,AddAction对应管理员添加行情信息请求。这六个类继承了Action类,并重载它的execute方法,execute方法是Action类事例化后必须调用的方法,根据处理不同业务逻辑的需求,子类在execute内填入相应的代码。 类型 Long Int Int Char Float Float 长度 8 4 4 20 8 8 备注 主键 Nonull Nonul Nonull 图20 用户、管理员与系统交互类图 23 Action类依赖DynaActionForm类和DataBaseAccess类,既Action类用到这两个类,DynaActionForm类是用来保存用户提交表单信息的类。 DataBaseAccess类是用来连接和访问SQL数据库的类,该类有默认配置方法设置默认数据库连接访问参数,有验证、查询、修改等相应数据库操作的方法,验证、查询和修改方法的参数是String类型的SQL查询语句。 5.4.2 农产品价格预测服务详细设计 (1)农产品价格预测服务类图 如图21所示,农产品价格预测服务用到图中几个类,其中ChartFactory、JFreeChart、XYSeriesCollection、XYSeries、Action由Java开源项目提供。图中的ForecastAction、LineChartFactory和DataBaseAccess是自定义类。 LineChartFactory继承ChartFactory类,它有serie属性,用于保存数据序列,该类中SeriesCollection属性,用于保存数据序列集合。date、produce属性保存用户提供的参数“预测日期”和“农产品”。该对象有添加数据序列和数据序列集合的方法,如添加方法addSeriesCollection、addSeries方法,有getForecastPoint方法获取某时间点预测价格(forecastPrice)与实际价格(factPrice),有工厂初始化方法config和生产JFreeChart对象的createLineChart方法,并且有setTitle方法设置JFreeChart表头信息。 图21 农产品价格预测服务类图 24 (2)LineChartFactory工厂实例化JFreeChart类序列图 接到客户端价格预测请求,ForecastAction类是用LineChartFactroy工厂来实例化一个JFreeChart类,当然,LineChartFactory工厂需要客户端提交表单中的一些数据作为配置参数。如图22,LineChartFactry对象实例化一个DatabaseAccess对象,调用对象中定义的selectStatement方法,该方法作用是访问数据库,得到实际价格与预测价格,数据保存在一个ArrayList对象中,得的这个返回值,LineChartFactory经过一系列对数据的处理,调用XYSeriesCollection对象(XYSeriesCollection对象相当于一个容器,可以装入所需要的图形)的addSeries方法,将从数据库获取的数据添加到XYSeriesCollection中,为图表(JFreeChart类)加入曲线,实例化一个JFreeChart,在JFreeChart对象中添入实例化的XYseriesCollection。经过这一序列操作,工厂成功创建一个JFreeChart对象,返回到ForecastAction中,ForecastAction可以用过request对象将JFreeChart对象设置为一个属性,供相应JSP页面获取。 图22 实例化JFreeChart类序列图 (3)预测时间段价格和预测时间点价格程序流程 预测时间段价格程序流程如图23所示,首先需获取用户提供的参数“预测日期”和“农产品”,接着计算日期落在哪个时间段,(算法默认将一年分成6个时间段,1-2月份,3-4月份等),如2010年1月13日落在第一个时间段。根据计算结果和参数“农产 25 品”,生成查询语句的字符串。调用DatabaseAccess对象的查询方法,如果数据存得到返回值,调用LineChartFactory的addSeries方法,将数据添加到数据序列集合里面。 图23 预测时间段价格程序流程图 图24 预测时间点价格程序流程图 26 预测时间点程序流程如图24所示,首先需获取用户提供的参数“预测日期”和“农产品”,根据“预测日期”参数计算出时间点(本程序中一个月份有5个时间点,分别是每月份1、7、13、19、25日,如预测日期为2010年1月3日,那该预测时间点落在1月份第一和第二个时间点之间,预测价格也按比例取1月1日与1月7日预测价格之间的值)。根据计算结果和参数,生成查询语句,调用DatabaseAccess对象的查询方法,数据存在的话,返回数据数组,提取数组并计算预测价格,最后更新LineChartFactory的forecastPrice和factPrice属性。 6 系统实现 6.1 农产品价格预测实现 农产品价格预测服务实现如图25所示,系统提供两个下拉框和一个文本框供用户输入数据,点击下拉框“农产品”选择需要进行预测的产品,如图选择“小白菜”,预测方法选“ARIMA”,日期文本框默认输入当前日期,点击日期的文本框出现如图中的“日期控件”,选择日期“2010-4-30”,提交后服务器返回图26所示的界面。 图25 农产品价格预测1 如图26中折线图所示,横坐标为1-70的时间点,纵坐标为农产品价格,单位为元/公斤,红色曲线为2009年3月至2010年2月份的小白菜实际价格,蓝色曲线为2010年3月至2010年4月的小白菜预测价格,绿色直线则表示预测日期所在的位置(既2010 27 年4月30日在图中相应位置)。在预测折线图的下面是“预测结果表”,表中记录2010年4月30日小白菜实际价格与预测价格。 图26 农产品价格预测2 图27 农产品价格预测3 当输入预测时间点已经存在历史实际农产品价格时,预测系统将返回实际价格与预测价格的拟合线,如图27所示,预测时间点选“2010-02-02”(1、2月份的实际价格和 28 预测价格在数据库中均有数据),红色曲线为2009年1月至2010年2月份的小白菜实际价格,单位为元/公斤,蓝色曲线为2010年1月至2010年2月的小白菜预测价格。 6.2 农产品行情查询实现 点击“行情查询菜单”,系统返回图28 所示的界面。 图28 农产品行情查询1 图29 农产品行情查询2 29 农产品行情查询提供给用户三个筛选条件,第一个是“年份”,第二个是“月份”,最后一个是农产品名,点击查询,当查询返回较多记录时,JSP页面会对记录进行分页,每页10条记录。点击下拉框年份选择“2010”年,月份选“全部”,农产品选择“小白菜”,系统返回图29页面,页面显示共返回17条记录分为2页。 6.3 添加修改价格信息的实现 图30是添加价格信息功能实现的界面,添加修改信息的日期输入文本框,是使用日期控件(该模块使用了预测模块中相同的日期控件)获取日期,在没选择日期的情况下,该文本默认输入当前日期。管理员在“最低价格”,“最高价格”,“平均价格”,“计量单位”文本框输入当天的价格信息。“最低价格”、“最高价格”、“平均价格”三个文本框必须输入合法的数值,否则数据无法提交,如在“最低价格”文本框中输入英文字符串,系统将返回错误提示信息。 图30 添加修改价格信息1 点击提交将当天农产品价格信息提交到服务器,得到如图31所示的返回结果。表单中列出用户之前提交的数据,如果输入错误的数据,可以通过价格信息修改模块纠正错误,关于价格信息修改模块将在下文介绍。 30 图31 添加修改价格信息2 修改价格信息,管理员先通过搜索功能查找所以修改的信息,如图32所示,点击所要修改的记录的单选框,点修改提交请求,将返回如图33所示的表,表内的数据可以进行编辑,点击“保持修改”,系统将接受管理员请求,将数据保存到数据库。 图32 添加修改价格信息3 31 图33 添加修改价格信息4 7 总结与展望 7.1 总结 农产品价格预测系统实现的功能:用户注册登录功能、农产品价格预测功能、行情信息查询功能、管理员添加修改行情信息功能。本文也描述了此网站系统的整个开发过程,从需求分析到系统设计到系统实现。 本系统的特色与特点: (1)Web系统界面简洁友好,在个别功能使用上,提供给用户一些帮组信息。 (2)农产品价格预测服务上,能够对某个时间点进行预测,并生成一组完整的图表。 (3)本次Web系统分析与设计中,充分考虑到系统的可维护性,使用了目前比较流行的Struts框架。 7.2 展望 本设计的不足之处和需要后续完善的内容是: (1)未提供下载行情信息的功能,用户体验有待提高。 (2)对某一日期的价格预测采用的方法较为简单,准确性需要进一步验证,今后拟采用更佳的方法进行预测。 (3)对Struts框架运用不够娴熟,还不能实现数据与显示的分离。 32 致 谢 在四年的大学学习生活中,我有幸得到华南农业大学的悉心栽培,为此感到莫大的荣幸。特别感谢华南农业大学信息学院信息管理与信息系统的各位教师的悉心教导,在此我向各位教师致以诚挚的敬意! 在这次毕业设计工作中,感谢我的导师杨振刚老师对我帮助,当我遇到难题而感到困惑时,是杨老师认真细心地给予指导,让我顺利地度过毕业论文(设计)中的难关。您平易朴素的为人、勤劳务实的作风和高尚的学者风范,给我留下了深刻的印象,使我受益终身。您严谨的治学精神,认真负责的工作态度帮助我如期完成了这次论文任务。 洪 洒 2010年4月20日 33 参 考 文 献 [1] 郭超. 农产品价格数据挖掘与趋势预测模型的研究[D]. 山东: 山东大学, 2009. 1-2 [2] 王素雅. 农产品短期价格分析及预测方法选择[D]. 北京: 中国农业科学院, 2009. 6-7 [3] 施锡铨,范正绮. 数据分析与统计建模[M]. 上海: 人民出版社, 2007 [4] 范剑青,姚琦伟. 非线性时间序列[M]. 北京: 高等教育出版社, 2005 [5] 苗开超. 基于指数平滑模型的农产品价格预测研究[D]. 安徽: 合肥工业大学, 2009. 22-23 [6] 张蓓,胡永芳. 指数平滑预测模型在医院药品消耗中的应用[J]. 中国医院药学杂志, 2008, 28(7): 571-572 [7] 杨建南,汪学军,刘勇华. 霍特双参数指数平滑预测模型在医院管理中应用的探讨[J]. 中国医院统计, 2008, 15(3): 193-194 [8] 刘峰,王儒敬,李传席. ARIMA模型在农产品价格预测中的应用[J]. 计算机工程与应 用, 2009, 45(25): 239 [9] 张焕杰. 基于季节ARIMA模型的华北电网售电量预测研究[J]. 中国科技信息, 2008, 37 (1): 71 [10] 胡常全,徐祥文,刘丽等. 应用ARIMA模型对季度入院人次的预测[J]. 现代预防医 学, 2009, 36(2): 213-214 [11] Caiado, Jorge. Performance of Combined Double Seasonal Univariate Time Series Models for Forecasting Water Demand [J]. Journal of Hydrologic Engineering, 2010, 15 (3): 2-3 [12] Kumar U, Jain VK . ARIMA Forecasting of Ambient Air Pollutants[J]. Stochastic Environmental Research and Risk Assessment, 2010, 24(5): 5-6 [13] 崔婧,张珂. ARIMA模型在我国教育投资预测中的应用[J]. 统计教育, 2009, (2): 43-44 [14] 裴武,陈凤,程立勤. 交通量时间序列ARIMA预测技术研[J]究. 山西科技, 2009, (1): 75-76 [15] 郭真,王国辉. JSP程序设计教程[M]. 北京: 人民邮电出版社, 2008. 3-4 [16] 乔普拉. JSP高级程序设计[M]. 北京: 人民邮电出版社, 2006 34 The Forecasting Methods and the Web Forecasting Service Design of the Prices of the Agricultural Products Hong Sa (College of Informatics, South China Agricultural University Guangzhou 5102, China) Abstract:Price fluctuations of agricultural products mainly cause by the supply and the demand in the mechanism of market economy. Predicting the prices of agricultural products is important for the relevant government departments to control prices, stabilize the markets of the agricultural products and let the markets develop in a healthy way. A number of scholars have done lots of researches on the forecasting of agricultural prices, but little research on the popularity of network systems. This study concludes and uses the results of previous studies, uses ARIMA model to predict the future trend of prices of agricultural products, and develops a web system system. This text analyzes and compares the single exponential smoothing, the double exponential smoothing, the autoregressive integrated moving average method, and the seasonal autoregressive integrated moving average method, which are four methods of forecasting the prices of the agricultural products. And find the seasonal autoregressive integrated moving average method most able to accurately predict the future trend of prices of agricultural products. In web system development, this text the first analysis the requirement, the second design the system, then write and debug the function module, and finally show the basic functions of web system implementation. The system will be able to provide forecasting services of the prices of agricultural products and an interface for third-parties softwares. The supporting technologies of the system are JSP technology and Struts Framework technique. JSP also inherits advantages of Java technology, such as simple, convenient, object-oriented, cross-platform and secure reliable. Compared to other server scripting language, JSP is more simple, rapid, and effective. Struts is a typical MVC framework. It separates software system model, view, controller into three parts to improve software maintainability. Keyword:Agricultural Products Forecasting Exponential Smoothing ARIMA JSP 35 附 录 (1)struts-config.xml文件动态表单配置 36 (2)struts-config.xml文件动作映射 name=\"loginForm\" validate=\"true\" input=\"/index.jsp\" scope=\"request\"> name=\"registerForm\" 37 validate=\"true\" input=\"/page/page-register.jsp\" scope=\"request\"> name=\"queryForm\" validate=\"false\" input=\"/page-system.jsp\" scope=\"request\"> name=\"modifyForm\" validate=\"false\" input=\"/page-individual.jsp.jsp\" scope=\"request\"> name=\"modifyForm\" validate=\"false\" input=\"/page-individual.jsp.jsp\" scope=\"request\"> 38 input=\"/page/page-management-add.jsp\" scope=\"request\"> (3)转换中文编码关键代码 public static String toChinese(String str){ if(str==null) str=\"字符为空\"; try{ str=new String(str.getBytes(\"ISO-8859-1\"),\"gb2312\"); }catch(UnsupportedEncodingException e){ } return str; str=\"转换失败\"; e.printStackTrace(); 39 } (4)DatabaseAccess类验证用户关键代码 Class.forName(driverClass); Connection conn=DriverManager.getConnection(url,username,password); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(statement); do{ rs.next(); //判断查询结果是否为1,1表示又且仅有一条记录 if((rs.getString(1)).equals(\"1\")){ rs.close(); conn.close(); return true; }else{ } rs.close(); conn.close(); return false; }while(false); (5)DatabaseAccess类查询方法关键代码 ArrayList returnList=new ArrayList(); try{ Class.forName(driverClass); Connection conn=DriverManager.getConnection(url,username,password); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery(statement); ResultSetMetaData rsmd=rs.getMetaData(); //获取列数 int size=rsmd.getColumnCount(); 40 //数组第一位储存查询结果列数 returnList.add(String.valueOf(size)); int i=0; while(rs.next()){ } rs.close(); conn.close(); //异常处理 for(int j=1;j<=size;j++) //存储数据库组元 returnList.add(rs.getString(j)); }catch(SQLException e){ System.out.println(e); returnList = new ArrayList (); returnList.add(0); }catch(ClassNotFoundException e){ } return returnList; System.out.println(e); returnList = new ArrayList (); returnList.add(0); (6)LineChartFactory类获取时间段价格方法关键代码 //获取查询数据库起始位置和结束位置 int startFlag = 1; int endFlag = 1; if((month+1)%2==1){ startFlag = month*perMonth+1; endFlag = startFlag + 2*perMonth - 1; }else{ startFlag = (month-1)*perMonth+1; 41 } endFlag = startFlag + 2*perMonth - 1; int flag = month*perMonth+(day/(30/perMonth)); System.out.println(\"start:\"+startFlag+\"\\nend:\"+endFlag); //数据库访问 DatabaseAccess db = new DatabaseAccess(); db.defaultConfig(); //获取实际价格的语句 String statement1 = \"select 序列ID,实际价格 from 预测表2 \" + \"where ((年份=\"+(year-1)+\" and 序列ID >=\"+startFlag+\" )or(年份=\"+year+ \" and 序列ID<=\"+endFlag+\")) and (产品 ='\"+produce+\"') and (实际价格 is not null)\"; //获取预测价格的语句 String statement2 = \"select 序列ID,预测价格 from 预测表2 where 年份=\"+year+ \" and 序列ID>=\"+startFlag+\" and 序列ID <=\"+endFlag+\" and 预测价格 is not null\"; (7)LineChartFactory类添加曲线关键代码 XYSeries series = new XYSeries(\"预测日期\"); series.add(a[0], a[1]); series.add(b[0], b[1]); seriesCollection.addSeries(series); return seriesCollection; ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); list1 = db.selectStatement(statement1); list2 = db.selectStatement(statement2); (8)第三方软件接口 42 public boolean certified(String username,String password); public List getList(int year,String produce); public List getList(int year, int month,String produce); public List getList(int year, int month); public List getForecast(String mothy,String produce,Date date); (9)JSP页面显示预测图表关键代码 JFreeChart chart = (JFreeChart)request.getAttribute(\"chart\"); ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); String fileName=ServletUtilities.saveChartAsPNG(chart,600,400,info,session); String url=request.getContextPath()+\"/servlet/DisplayChart?filename=\"+fileName; (10)JSP页面处理查询语句关键代码 String year=(session.getAttribute(\"q-year\")).toString(); String month=(session.getAttribute(\"q-month\")).toString(); String vname=(session.getAttribute(\"q-vname\")).toString(); String statment=\"select 日期,产品,最低价格,最高价格,平均价格,计量单位 from 行情 表 where 年 份='\"+year+\"'\"; if( month.equals(\"选择全部\")==false ){ statment=statment+\"and 月份='\"+month+\"'\"; } if( vname.equals(\"选择全部\")==false ){ statment=statment+\"and 产品='\"+vname+\"'\"; } System.out.print(statment); DatabaseAccess db=new DatabaseAccess(); ArrayList list=new ArrayList(); 43 db.defaultConfig(); try{ list=db.selectStatement(statment); }catch( ClassNotFoundException e){ }catch(SQLException e){} (11) JSP页面数据显示实现分页关键代码 int size=0; //list的尺寸 int column=0; //数据库表列数 int count=0; //总记录数 int perPage=0; //每页显示记录 int pages=0; //总页数 int currentPage=0; size=list.size()-1; column=Integer.parseInt(list.get(0).toString());//list第一为保存数据库表列数 count=size/column; perPage=10; if(count%perPage==0){ pages=count/perPage; }else{ } if(request.getParameter(\"id\")!=null){ currentPage=Integer.parseInt(Mytools.toChinese((request.getParameter pages=count/perPage+1; (\"id\")).toString())); }else{ } currentPage=1; 44 华南农业大学本科专业毕业论文成绩评定表 45 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务