学号:2013310200629姓名:王丹学院:理学院专业:信息与计算科学成绩:日期:年月日基于工业机器人能否准确完成操作的时间序列分析摘要:时间序列分析是预测领域研究的重要工具之一,它描述历史数据随时间变化的规律,并用于预测数据。本文首先介绍了一些常用的时间序列模型,包括建模前对数据的预处理、模型的识别以及模型的预测等。通过多种方法分析所得到的数据,实现准确建模,可以得出正确的结论。关键词:自回归(AR)模型,滑动平均(MA)模型,自回归滑动平均(ARMA)模型,ARMA最优子集一、问题提出,问题分析随着社会日新月异的发展,不断创新的科技为我们的生活带来了越来越多的便利。机器人也逐渐走向了我们的生活,工厂里使用机器人去工作也可以大大减少生产成本,但为了保证产品质量,工厂使用的机器人应该多次测试,确保动作准确无误。现有一批数据,包含了来自工业机器人的时间序列(机器人需要完成一系列的动作,与目标终点的距离以英寸为单位被记录下来,重复324次得到该时间序列),对于这些离散的数据,我们期望从中发掘一些信息,以便对机器人做更好的改进或者确定机器人是否可以投入使用。但我们从中并不能看出什么,需要借助工具做一些处理,对数据进行分析。时间序列分析是通过直观的数据比较或作图观测,去寻找序列中包含的变化规律,这种分析方法称为描述性时序分析。在物理、天文、海洋学等科学领域,这种描述性时序分析方法经常能够使人们发现一些意想不到的规律,操作起来十分简单而且直观有效,因此从史前到现在一直被人们广泛使用,它也是我们进行统计时序分析的第一步。我们将利用自回归(AR)模型、滑动平均(MA)模型以及自回归滑动平均(ARMA)模型去解决遇到的问题。二、数据描述和初步分析下面是我们接收到的数据,数据来源:~kchan/TSA.htm0.00110.00110.00240.0000-0.00180.00550.0055-0.00150.0047-0.00010.00310.00310.00520.00340.00270.00410.00410.00340.00670.00280.00830.00830.00300.00320.00350.00410.00410.00530.00260.00740.00110.0011-0.00010.00080.00040.00000.0000-0.00090.00380.00540.00020.00020.0036-0.00040.00170.00000.00000.00470.00210.00800.00290.00290.00420.00520.00560.00550.00550.00100.00430.00060.00130.00130.00080.00230.00430.00130.00130.00450.00370.00150.00130.00130.00290.0039-0.00180.00160.0016-0.00030.00000.00090.00170.00170.0030-0.00010.0070-0.0008-0.00080.00090.00250.00310.00020.00020.00220.00200.00030.00330.00330.0044-0.00100.00480.00190.00190.00310.00200.00170.00140.00140.00390.00520.00200.00120.00120.00310.00220.00400.00380.00380.00070.00160.00240.00030.00030.00570.00060.00090.00400.00400.00350.00320.00680.00280.00280.00480.00350.0042-0.0020-0.00200.0023-0.00110.0062-0.0021-0.00210.0000-0.0019-0.00050.00480.00480.00270.0009-0.00020.00790.00790.00170.00340.00300.00250.00250.00040.00310.0057-0.0003-0.00030.00060.00180.00220.00420.00420.0055-0.0005-0.00530.00280.00280.00050.00360.0017-0.0043-0.00430.0066-0.00160.0055-0.0011-0.0011-0.00490.00470.00560.00570.0057-0.00020.00560.00370.00120.00120.0018-0.0025-0.00110.00270.00270.00390.00580.00030.00400.00400.00420.00000.0056-0.0029-0.0029-0.00260.00160.00190.00150.00150.00070.0007-0.0044-0.0030-0.00300.00130.0029-0.00100.00090.0009-0.00160.00000.00000.00140.0014-0.00030.0009-0.00680.00030.0003-0.00120.0037-0.00190.00230.0023-0.0033-0.0002-0.00100.00210.00210.0026-0.00020.00110.00280.0028-0.00040.0026-0.00150.00020.00020.0018-0.00050.0004-0.0008-0.00080.00180.00190.0029-0.0022-0.00220.0010-0.00330.00200.00000.00000.00030.0007-0.0009-0.0035-0.00350.00100.00070.0028-0.0008-0.0008-0.0034-0.0010-0.0018-0.0021-0.0021-0.0006-0.0018-0.0046-0.0017-0.0017-0.0001-0.00290.0020-0.0049-0.0049-0.0021-0.0027-0.0018-0.0015-0.00150.0051-0.00020.0000-0.0006-0.0006-0.00120.00120.00000.00210.0021-0.00010.00220.0055-0.0010-0.00100.00480.00060.00260.00040.00040.00000.00000.00080.00440.00440.00020.0036这一群数目庞大的数据,以我们直观的判断,它们错综复杂,且毫无规律可言,根本不能从中得到有用的消息。三、模型建立1.数据的平稳性检验设Y{t}为工业机器人动作的数据序列,首先我们利用单位根检验方法来检验该时间序列的平稳性。2、ARMA模型的ACF和PACF分析:画出样本的ACF和PACF:AR/MA0123456789101112130xxxxxxxxxoxxxx1xooooooooooooo2xxoooooooooooo3xxoooooooooooo4xxxxooooooooxo5xxxoooooooooxo6xooooxoooooooo7xooxoxxooooooo3、上图表示该模型可能是ARMA(1,1)模型,用最优子集ARMA法为这些数据设定模型:因为具有的BIC值越小,阴影颜色越深的ARMA子集模型越好,经过分析,最上面一行包括观测时间序列1阶滞后、误差过程的3阶和12阶滞后是最好的模型。我们建议用Yt-1来建模。从上述序列图可以看出,序列不是很平稳,由于对数据序列建立AR模型,需要序列是平稳的,所以我们要对原序列Y{t}进行平稳化处理。4、平稳化处理取对数后的时间序列图:对数差分后的时间序列图:从图可以看到经过二阶对数差分后原序列达到平稳。AR(1)序列的时间序列图:散点图:从散点图分析:时间序列不管是一阶滞后,二阶滞后还是三阶滞后都呈现出很强的自相关性。由此可见,AR(1)模型是合理的模型。四、主要的结论或发现经过对多个时间序列图的分析,我们发现数据主要集中在(-0.002,0.002)的范围内,工业机器人每次操作与目标终点的距离很近,大部分在+0.0002之间,偏差不是太大,应该可以投入使用。五、模型评价下图列出了该序列模型及其前置100个数据的预测:从图中我们看出,预测值接近我们估计量所在的水平线,我们得出结论,AR(1)的建立是合理的。附录以下是我使用的R代码:win.graph(width=3.25,height=3,pointsize=8)plot(robot,ylab=expression(y[t]),type='o')win.graph(width=3.25,height=3,pointsize=8)plot(y=robot,x=zlag(robot),ylab=expression(y[t]),xlab=expression(y[t-1]),type='p')win.graph(width=3.25,height=3,pointsize=8)plot(y=robot,x=zlag(robot),ylab=expression(y[t]),xlab=expression(y[t-2]),type='p')win.graph(width=3.25,height=3,pointsize=8)plot(y=robot,x=zlag(robot),ylab=expression(y[t]),xlab=expression(y[t-3]),type='p')data(robot);plot(robot,type='o',ylab='RobotEndPosition')plot(log(robot),type='l',ylab='RobotEndPosition')plot(diff(log(robot)),type='l',ylab='RobotEndPosition')plot(diff(log(robot),difference=2),type='l',ylab='RobotEndPosition')plot(robot,ylab=expression(y[t]),type='o')plot(y=robot,x=zlag(robot),ylab=expression(y[t]),xlab=expression(y[t-1]),type='p')plot(y=robot,x=zlag(robot),ylab=expression(y[t]),xlab=expression(y[t-2]),type='p')plot(y=robot,x=zlag(robot),ylab=expression(y[t]),xlab=expression(y[t-3]),type='p')win.graph(width=3.25,height=3,pointsize=8);acf(robot)win.graph(width=3.25,height=3,pointsize=8);pacf(robot)eacf(robot)plot(armasubsets(y=robot,nar=14,nma=14,y.name='Robot',ar.method='ols'))m1.robot=arima(robot,order=c(1,0,0))plot(m1.robot,n.ahead=25,type='b',xlab='x',ylab='y')plot(m1.robot,n.ahead=5,type='b',xlab='x',ylab='y')plot(m1.robot,n.ahead=100,type='b',xlab='x',ylab='y')abline(h=coef(m1.robo