R中使用神经网络的时间序列预测实例

DKK*_*DKK 9 r time-series neural-network

任何人都有一个简短的教育示例如何使用神经网络(R中的nnet)进行预测?以下是R中的时间序列示例

T = seq(0,20,length=200)
Y = 1 + 3*cos(4*T+2) +.2*T^2 + rnorm(200)
plot(T,Y,type="l")
Run Code Online (Sandbox Code Playgroud)

非常感谢

大卫

ags*_*udy 16

我认为你可以使用caret包,特别是train功能

This function sets up a grid of tuning parameters for a number 
      of classification and regression routines.
Run Code Online (Sandbox Code Playgroud)
require(quantmod) 
require(nnet)
require(caret)
T = seq(0,20,length=200)
y = 1 + 3*cos(4*T+2) +.2*T^2 + rnorm(200)
dat <- data.frame( y, x1=Lag(y,1), x2=Lag(y,2))
names(dat) <- c('y','x1','x2')
dat <- dat[c(3:200),] #delete first 2 observations
#Fit model
model <- train(y ~ x1+x2 , 
               dat, 
               method='nnet', 
               linout=TRUE, 
               trace = FALSE)
ps <- predict(model, dat)

#Examine results

plot(T,Y,type="l",col = 2)
lines(T[-c(1:2)],ps, col=3)
legend(5, 70, c("y", "pred"), cex=1.5, fill=2:3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @DavidKhireche,尝试`install.packages("caret",dependencies = TRUE)` (4认同)
  • 如果你要预测timne = 30的值,你会怎么做?你怎么选择x1 = Lag(y,1),x2 = Lag(y,2),我的意思是它是否特定于这个时间序列? (3认同)
  • 为什么痛苦?只有2个包!`caret`和`nnet`!`quantomod`为滞后! (2认同)
  • 关于包依赖,你肯定会考虑RStudio.它确保了加载所需的依赖关系变得非常简单 (2认同)