请选择 进入手机版 | 继续访问电脑版
楼主: 心如纸水12
16642 11

[问答] R语言实现ARIMA,能否自动确定模型阶数,并给出预测值 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2016-5-17
最后登录
2016-5-17

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  我是刚刚接触时间序列分析。
  在网上看了些程序和视频,发现都是 用不同的(p,d,q)去测试,根据测试结果  用户判断,选择最佳的(p,d,q).  如下列程序
  1. # ARIMA(1,0,0) or AR(1)
  2. arima(Y, order = c(1,0,0))
复制代码
能否编写一个程序,给定一串数据后,可以自动判断最佳的阶数(p,d,q), 并给出一定时间段内的预测值?
二维码

扫码加我 拉你入群

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

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

关键词:ARIMA R语言 Rim ima 预测值 ARIMA预测 ARIMA模型

十里春风 学生认证  发表于 2016-5-17 20:04:31 |显示全部楼层 |坛友微信交流群
library(forecast)
auto.arima
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 10 热心帮助其他会员
bllhm + 5 + 1 + 1 + 1 精彩帖子

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

使用道具

程123456 发表于 2017-1-19 15:00:23 |显示全部楼层 |坛友微信交流群
install.packages(forecast)
library(forecast)
armamodel=auto.arima()
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

htseng 发表于 2017-12-11 22:24:42 |显示全部楼层 |坛友微信交流群
学习中!

使用道具

meoeoeo 发表于 2017-12-21 19:31:05 |显示全部楼层 |坛友微信交流群
拟合后的结果是这样,看不懂……
> auto.arima(x.dif)
Series: x.dif
ARIMA(0,0,2) with zero mean

Coefficients:
          ma1      ma2
      -0.1099  -0.3618
s.e.   0.0798   0.0781

sigma^2 estimated as 0.02427:  log likelihood=60.29
AIC=-114.57   AICc=-114.39   BIC=-105.85

使用道具

屋檐滴语 发表于 2017-12-22 21:05:59 |显示全部楼层 |坛友微信交流群
十里春风 发表于 2016-5-17 20:04
library(forecast)
auto.arima
这个是最傻瓜但是最实用的了。

使用道具

小白smallhero 发表于 2017-12-23 12:51:21 来自手机 |显示全部楼层 |坛友微信交流群
meoeoeo 发表于 2017-12-21 19:31
拟合后的结果是这样,看不懂……
> auto.arima(x.dif)
Series: x.dif
这个是自动建模,模型是MA(2),系数就是ma1,ma2,下面的s.e应该是标准差最下的是一下评价准则的结果

使用道具

小白smallhero 发表于 2017-12-23 12:51
这个是自动建模,模型是MA(2),系数就是ma1,ma2,下面的s.e应该是标准差最下的是一下评价准则的结果
请问写出来的函数是什么样的

使用道具

genglilin 发表于 2018-4-28 09:47:43 |显示全部楼层 |坛友微信交流群
可以的,有个forecast的包,可以直接确定ARIMA模型的阶数
data <- read.csv("book1.xlsx",sep=",")
data
y <- ts(data$y,start = 1978,frequency = 1)
y
par(mfrow = c(1,1))
plot(data$y)
hist(data$y)
yd <- diff(log(y),1)
yd
plot(yd)
acf(yd,lag = 24)
pacf(yd,lag = 24)
fit <- arima(yd,order = c(1,0,1),method = 'ML')
fit
fit1 <- arima(yd,order = c(1,0,0),method = 'ML')
fit1
tsdiag(fit)
predict(fit,n.ahead = 3)$pred
library(forecast)
data$y
fit <- auto.arima(y)
fit
model <- arima(y,order = c(1,1,1))
accuracy(model)
accuracy(fit)
accuracy(fit1)
accuracy(fit2)
model$aic
fit$aic
forecast(fit,5)
plot(forecast(fit,5))

book1.xlsx

547 Bytes

需要: 20 个论坛币  [购买]

使用道具

> x<-ts(x,start=1988)
> plot(x)
>  for(i in 1:2)
+  {print(Box.test(x,lag=6*i))}

        Box-Pierce test

data:  x
X-squared = 62.543, df = 6, p-value = 1.368e-11


        Box-Pierce test

data:  x
X-squared = 70.871, df = 12, p-value = 2.2e-10

>  x.dif<-diff(x)
>  plot(x.dif)
> acf(x.dif)
> pacf(x.dif)
> y.dif<-diff(x.dif)
> plot(y.dif)
> acf(y.dif)
> pacf(y.dif)
> x.fit<-arima(x,order=c(1,2,2))
> x.fit

Call:
arima(x = x, order = c(1, 2, 2))

Coefficients:
         ar1      ma1     ma2
      0.2088  -1.3440  0.3441
s.e.  1.8221   1.8088  1.8016

sigma^2 estimated as 361.6:  log likelihood = -106.54,  aic = 221.08
> library(forecast)
> x.fore<-forecast(x.fit,h=3)
> x.fore
     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
2014       360.1367 335.2747 384.9986 322.1136 398.1598
2015       357.2889 323.7881 390.7896 306.0538 408.5239
2016       354.6531 314.2735 395.0327 292.8979 416.4084
根据这个程序得到了未来三年的预测值,但是如何得到14年之前的拟合值

使用道具

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

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

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

GMT+8, 2024-4-19 09:31