全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2684 4
2022-06-07
在最后预测的时候提示出错了,请问一下这个错误该怎么办呢!!Error in ts(x) : 'ts' object must have one or more observations
附件列表
NDWC~PS5EFGA)~ZAT2OHL04.png

原图尺寸 19.57 KB

NDWC~PS5EFGA)~ZAT2OHL04.png

代码.txt

大小:1.96 KB

 马上下载

二维码

扫码加我 拉你入群

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

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

全部回复
2022-6-7 19:56:06
######加载程序包
library(readxl)
library(tseries)
library(forecast)
library(TSA)

######预处理
GDP<-read_excel("D:/data/GDP.xlsx")
GDP1<-subset(GDP[1:40,])#预留3个数据
GDP2<-ts(GDP1,start=1978,frequency=1)
plot(GDP2,type="b",lty=1,col="red",
     main="我国1978-2016的国内生产总值(GDP)",xlab="年份",ylab="金额(亿元)")
adf.test(GDP2)#单位根检验
ndiffs(GDP2)#判断需要几阶差分才能转为平稳序列
GDP3<-diff(GDP2)#一次差分
plot(GDP3,type="b",lty=1,col="blue",
     main="一次差分后我国1978-2016的国内生产总值(GDP)",xlab="年份",ylab="金额(亿元)")
adf.test(GDP3)#对一次差分后的数据进行单位根检验
GDP4<-diff(GDP3)#二次差分
plot(GDP4,type="b",lty=1,col="blue",
     main="二次差分后我国1978-2016的国内生产总值(GDP)",xlab="年份",ylab="金额(亿元)")
adf.test(GDP4)#对二次差分后的数据进行单位根检验
for(i in 1:2){
  print(Box.test(GDP4,lag=6*i,type="Ljung-Box"))
}#白噪声检验
print(acf(GDP4,main="样本自相关图"))
print(pacf(GDP4,main="样本偏自相关图"))

######模型拟合
eacf(GDP4,ar.max=5,ma.max=5)
GDP5<-arima(GDP2,order=c(0,2,2),include.mean=T,method="ML")
GDP6<-arima(GDP2,order=c(1,2,3),include.mean=T,method="ML")
GDP7<-arima(GDP2,order=c(2,2,1),include.mean=T,method="ML")

######模型的显著性检验
t1<-(-0.5845)/0.1952
pt(t1,df=96,lower.tail=T)#ar1系数显著性检验
t2<-(-0.4787)/0.1722
pt(t2,df=96,lower.tail=T)#ar2的显著性检验
t3<-0.7810/0.2133
pt(t3,df=96,lower.tail=F)#ma1系数显著性检验
for(i in 1:2){
  print(Box.test(GDP7$residuals,lag=6*i,type="Ljung-Box"))
}#残差白噪声检验
tsdiag(GDP7)#诊断函数

######预测2018-2020
forecast(GDP7,h=3)
plot(forecast,type="b",lty=1,col="purple",
     main="预测我国2017-2020的国内生产总值(GDP)",xlab="年份",ylab="金额(亿元)")

######预测2021-2022
forecast1<-forecast::forecast(GDP7,h=5)
二维码

扫码加我 拉你入群

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

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

2022-6-7 19:56:26
19857994959 发表于 2022-6-7 19:56
######加载程序包
library(readxl)
library(tseries)
这是我的代码
二维码

扫码加我 拉你入群

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

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

2022-6-7 22:57:05
问题出在TSA包加载后,其arima()函数替代了stats包的arima()函数,这两个函数有一些差别。
forecast::forecast()函数,默认处理的是stats::arima()函数的结果,而对TSA::arima()的结果则会出现报错。
解决方案:
1、如果要用forecast(),则前面用stats::arima(),限定stats包。
2、如果用TSA::arima(),则不需要forecast,因为TSA的plot.Arima()可以在作图时用n.ahead参数指定预测期数,直接绘制预测结果。
二维码

扫码加我 拉你入群

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

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

2022-6-12 10:08:53
llb_321 发表于 2022-6-7 22:57
问题出在TSA包加载后,其arima()函数替代了stats包的arima()函数,这两个函数有一些差别。
forecast::for ...
太感谢了!!!已经解决了!!!谢谢谢谢
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群