予測の目的でニューラル ネットワーク ( 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)
この最後の 2 行は、モデルからの予測の wMAPE を出力します。
sum(abs(ps-test_set["y"]))/sum(test_set)