请选择 进入手机版 | 继续访问电脑版
楼主: 童小军
15286 9

[问答] 如何用R画出AR(p),MA(q),以及ARMA(p,q)的时序图。 [推广有奖]

  • 1关注
  • 4粉丝

博士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
358 个
通用积分
11.8871
学术水平
32 点
热心指数
31 点
信用等级
19 点
经验
7155 点
帖子
200
精华
0
在线时间
212 小时
注册时间
2012-9-19
最后登录
2024-3-1

童小军 发表于 2013-8-10 21:18:48 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如何用R画出AR(p),MA(q),以及ARMA(p,q)的时序图。
如AR(2):Yt=1+0.5*Yt-1+0.2*Yt-2+Xt
MA(2)  :Yt=1+Xt+0.5*Xt-1+0.3*Xt-2
ARMA:Yt=1+0.5*Yt-1+0.2*Yt-2+Xt+0.5*Xt-1+0.3*Xt-2
其中Xt服从均值为0方差为1的正态分布。假设观察值有100个。

二维码

扫码加我 拉你入群

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

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

关键词:如何用 时序图 ARMA 正态分布 RMA 正态分布 如何

已有 1 人评分学术水平 收起 理由
耕耘使者 + 1 鼓励学术交流

总评分: 学术水平 + 1   查看全部评分

求证1加1 发表于 2013-8-11 11:26:28 |显示全部楼层 |坛友微信交流群
最简单直接的方法是生成数据后,用一下plot,当然也可以利用timeSeries、xts、zoo这些包来画。
希望对lz有用。
个人主页,欢迎订阅http://chenangliu.info/

使用道具

童小军 发表于 2013-8-11 20:08:42 |显示全部楼层 |坛友微信交流群
求证1加1 发表于 2013-8-11 11:26
最简单直接的方法是生成数据后,用一下plot,当然也可以利用timeSeries、xts、zoo这些包来画。
希望对lz有 ...
  1. AR<-function(con,b1,b2,n=100){
  2. #AR自回归型时间序列的模拟
  3.     x<-rnorm(n,0,1)#模拟白噪声
  4.     y<-0
  5.     y[1]<-con+x[1]
  6.     y[2]<-con+b1*y[1]+x[2]
  7. for(t in 3:n){
  8.     y[t]<-con+b1*y[t-1]+b2*y[t-2]+x[t]
  9. }#构造一个ar型时间序列
  10. plot.ts(y,main=paste("y[t]=",con,"+",b1,"*y[t-1]+",b2,"*y[t-2]","+x[t]"))
  11. y
  12. }
  13. y<-AR(1,0.5,0.2)
复制代码

AR

AR

这是用循环编写的。

使用道具

童小军 发表于 2013-8-11 20:11:06 |显示全部楼层 |坛友微信交流群
  1. MA<-function(con,a1,a2,n=100){
  2. #MA滑动平均时间序列的模拟
  3.     x<-rnorm(n,0,1)#模拟白噪声,均值=0
  4.     y<-0
  5.     y[1]<-con+x[1]
  6.     y[2]<-con+x[2]+a1*x[1]  
  7. for(t in 3:n){
  8. y[t]<-con+x[t]+a1*x[t-1]+a2*x[t-2]
  9. }#构造一个ma型时间序列
  10. plot.ts(y,main=paste("y[t]=",con,"+x[t]+",a1,"*x[t-1]+",a2,"*x[t-2]"))
  11. y
  12. }
  13. y<-MA(1,0.5,0.3,500)
复制代码
这是MA
有没有哪个函数,不用自己编写循环函数,可以直接生成ARMA的时间序列图的?这样太麻烦了!

使用道具

童小军 发表于 2013-8-11 20:13:36 |显示全部楼层 |坛友微信交流群
童小军 发表于 2013-8-11 20:11
这是MA
有没有哪个函数,不用自己编写循环函数,可以直接生成ARMA的时间序列图的?这样太麻烦了!
QQ截图20130811201235.png

MA(2)

使用道具

耕耘使者 发表于 2013-8-15 11:37:47 |显示全部楼层 |坛友微信交流群
AR(2)的:
sim.ar<-arima.sim(list(ar=c(0.5,0.2)),n=1000)  #我设的是1000,你可以改成100
plot(sim.ar)
图形:
TT截图未命名.bmp

使用道具

耕耘使者 发表于 2013-8-15 11:44:52 |显示全部楼层 |坛友微信交流群
第二个,MA(2)的:

sim.ma=arima.sim(list(ma=c(0.5,0.3)),n=100)  #两个参数为0.50.3

plot(sim.ma)

TT截图未命名.bmp

使用道具

耕耘使者 发表于 2013-8-15 11:54:48 |显示全部楼层 |坛友微信交流群
第3个,arma(2,2)的:
a=arima.sim(list(order=c(2,0,2),ar=c(0.5,0.2), ma=c(0.5,0.3)),n=100)
plot(a)
图片:
TT截图未命名.bmp

当然,我不明白你在式子中为什么都要加上1.我的图是没有加1的。如果要加1,则plot(a+1)即可。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
童小军 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

童小军 发表于 2013-8-16 08:49:01 |显示全部楼层 |坛友微信交流群
耕耘使者 发表于 2013-8-15 11:54
第3个,arma(2,2)的:
a=arima.sim(list(order=c(2,0,2),ar=c(0.5,0.2), ma=c(0.5,0.3)),n=100)
plot(a)
...
嗯。谢谢。1是常数项。

使用道具

李佳文本 发表于 2018-10-10 14:25:55 |显示全部楼层 |坛友微信交流群
童小军 发表于 2013-8-11 20:11
这是MA
有没有哪个函数,不用自己编写循环函数,可以直接生成ARMA的时间序列图的?这样太麻烦了!
层主写的很好呀,不过R里面有非常简洁的公式,比如AR(1),一个系数为0.8的,可以用y1=arima.sim(n=10000,list(ar=0.8)),这种只能适用于平稳情形,MA(1),系数为0.8的,可以用y2 = arima.sim(n=100,list(ma = 0.8))

使用道具

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

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

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

GMT+8, 2024-4-18 16:55