我是靠谱客的博主 阳光枫叶,最近开发中收集的这篇文章主要介绍R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展
ARIMA模型
ARIMA模型(英语:Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),是时间序列预测分析方法之一。ARIMA(p,d,q)中,AR是“自回归”,p为自回归项数;MA为“滑动平均”,q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数)。“差分”一词虽未出现在ARIMA的英文名称中,却是关键步骤。
题目:
某股票连续若干天的收盘价如表5-13所示,选择适当模型拟合该序列的发展。
数据如下:
实现代码:
# 设置工作目录并读取数据
setwd("D:/bigdata/R语言与数据分析/R语言数据分析实战/第5章/02-习题程序")
data1 <- read.csv("./data/data.csv")
data <- data1[1:100, ]
# 平稳性检验
# 结论: 1.序列并未全部在一个常数内稳定地来回波动 属于非平稳随机序列
# 2.发现数据为非平稳序列 需要做处理
data <- ts(data)
plot(data) # 绘制时序图
acf(data, lag.max = 30) # 数据自相关检验
# 差分运算:使得数据在一个常数附件随机波动
data_t1 <- diff(data)
plot(data_t1) # 绘制时序图
acf(data_t1, lag.max = 30) # 数据自相关检验
# 单位根检验:若p值小于0.05 则该序列为非纯随机序列
library(tseries)
adf.test(data_t1)
# 模型定阶
library(TSA)
res <- armasubsets(y = data_t1, nar = 5, nma = 5) # 差分序列BIC定阶
plot(res)
# 模型残差检验
library(forecast)
for(p in c(0, 3, 5)){
for(q in c(0, 3, 4)){
arima.model <- Arima(data, order = c(p, 1, q))
box.test.result <- Box.test(arima.model$residuals, lag = 1, type = "Ljung-Box")
print(paste('p =', p, '; q =', q , '; 残差P值:',
round(box.test.result$p.value, 4), collapse = ""))
}
}
# 模型评估
for(p in c(0, 3, 5)){
for(q in c(0, 3, 4)){
arima.model <- Arima(data, order = c(p, 1, q))
forecast.data <- forecast(arima.model, h = 7)
pred <- forecast.data$mean
error <- abs(data1[101:107, 1] - pred) / data1[101:107, 1]
print(paste('p =', p, '; q =', q , ';误差:', round(mean(error), 6)))
}
}
# 因此最优模型是ARIMA(3,1,3)
运行截图:
最后
以上就是阳光枫叶为你收集整理的R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展的全部内容,希望文章能够帮你解决R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展R语言与数据分析练习:选择适当模型拟合某股票连续若干天的收盘价序列的发展所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复