任何人都有一个简短的简短教育示例,如何使用神经网络(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")
非常感谢
大卫
任何人都有一个简短的简短教育示例,如何使用神经网络(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")
非常感谢
大卫
我认为您可以使用该caret
软件包,特别是该train
功能
This function sets up a grid of tuning parameters for a number of classification and regression routines.
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)
@agstudy 提出的解决方案很有用,但样本内拟合并不是样本外预测准确性的可靠指南。预测准确性测量的黄金标准是使用保持样本。从训练样本中删除最后 5 或 10 或 20 个观察值(取决于时间序列的长度),将模型拟合到其余数据,使用拟合模型预测保留样本并简单地比较保留样本的准确性,使用平均绝对偏差 (MAD) 或加权平均绝对百分比误差 (wMAPE)。因此,要做到这一点,您可以通过以下方式更改上面的代码:
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')
train_set <- dat[c(3:185),]
test_set <- dat[c(186:200),]
#Fit model
model <- train(y ~ x1+x2 ,
train_set,
method='nnet',
linout=TRUE,
trace = FALSE)
ps <- predict(model, test_set)
#Examine results
plot(T,Y,type="l",col = 2)
lines(T[c(186:200)],ps, col=3)
legend(5, 70, c("y", "pred"), cex=1.5, fill=2:3)
最后两行输出模型预测的 wMAPE
sum(abs(ps-test_set["y"]))/sum(test_set)