楼主: Bonnsecret
2065 0

[学习分享] 学习笔记(7):时间序列分析 [推广有奖]

  • 2关注
  • 16粉丝

讲师

35%

还不是VIP/贵宾

-

威望
0
论坛币
5091 个
通用积分
74.5537
学术水平
72 点
热心指数
91 点
信用等级
54 点
经验
9636 点
帖子
282
精华
0
在线时间
513 小时
注册时间
2014-5-28
最后登录
2024-5-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
今天只介绍一些基本的命令,主要是在matlab中定义时间序列数据的结构。
       时间序列数据中的观察值是按照时间顺序依次观察到的,观察的时间间隔通常是整数,如一天、一个星期、一个月或一年。一个时间序列代表了一个总体的动态变化过程。时间序列分析主要关注三个问题。第一个是识别总体变化的趋势,第二个是用模型来表示这个趋势,第三个是根据过去的数据和模型对未来进行预测。

       在matlab中,创建一个时间序列数据要用到timeseries这个命令。就是你要告诉matlab这是个时间序列的数据。

       ts=timeseries(data,time, ‘Name’, tsname)

       其中data是要转化为时间序列的原始数据,time定义了这个时间序列的长度,matlab默认的时间长度是从0:N-1,N为数据的长度。用户也可以自己定义为1:N。’Name’可以给所定义的时间序列数据取一个名字,名字叫做tsname,当然这个可以自己定义。

       举例:

       >>loadcount.dat         %加载数据

       从workspace中可以看出这个数据有24行3列。下面定义三个时间序列变量:

       >>count1=timeseries(count(:,1),1:24, ‘name’, ‘intersection1’);

       >>count2=timeseries(count(:,2),1:24, ‘name’, ‘intersection2’);

       >>count3=timeseries(count(:,3),1:24, ‘name’, ‘intersection3’);

       注意到上述的三个时间序列变量有两个名字,以第一行为例:count1是变量名,intersection1被称作internal object name(可以成为:内部object名称)。当用matlab的内置方程分析时间序列数据时,要用count1;matlab还有一种分析时间序列数据的方法,称为object,这时需要用intersection1这个内部object名称。

       Matlab默认的时间间隔是1秒,当然也可以根据自己的要求修改时间间隔的单位。例如要修改count1的时间间隔:

       >>count1.TimeInfo.Units=’hours’;       %将时间间隔改为小时,因此count1的数据表示一天24小时每个小时所观测的交通流量。

       还可以修改时间序列中数据的单位,我们已经知道count中数据表示的是每个时间点在每个路口观测到的汽车的数量,因此时间序列中每个数据的单位是辆。可以用下面的命令:

       >>count1.DataInfo.Units=’cars’;

       还可以修改数据的差值方法:

       >>count1.DataInfo.Interpolation=tsdata.interpolation(‘zoh’);   

       将数据差值的方法改为zero orderhold (zoh)。

       可以打开所创建的时间序列数据,对数据的结构有个更直观的认识:右键点击workspace中count1,然后选择open in time seris tools.

       在时间序列数据中可以定义Events,换句话说你比较关注哪个时间点上的数据,就定义哪个点为events,例如我们可能比较关注早上8点和晚上18点的交流流量:

       >>e1=tsdata.event(‘AMCommute’,8);       %将第一个event定义在早8点。

       >>e1.Units=’hours’;                     %定义时间单位。

       >>count1=addevent(count1,e1);           %将event添加到count1中。

       >>e2=tsdata.event(‘PMCommute’,18);

       >>e2.Units=’hours’;

       >>count1=addevent(count1,e2);

       想看一下定义了events之后的数据,可以直接

       >>plot(count1)

       图形上对8点和18点的数据进行了加重。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:时间序列分析 学习笔记 时间序列 习笔记 timeseries matlab 动态 模型

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 23:55