大家好,我在做一个英美之间汇率的模型,是一个单串数据,如(da是我的数据)
>da<-read.table(file.choose(),header=T)
> head(da)
End_Date USD_GBP
1 07/01/2007 0.5122
2 14/01/2007 0.5152
3 21/01/2007 0.5083
4 28/01/2007 0.5073
5 04/02/2007 0.5094
6 11/02/2007 0.5097
我有391个数据,我想用前381个数据当做原始数据用我的model来fit剩下的10个数据,对比一下看看我的model和我本来的数据差别是不是大,这样就能检测我的model是不是合理。
我做了一个这样的代码,用的是SETAR(4)的model有两个regime.Threshold value是-0.4266.我做前几步都没什么问题,就是到最后话图的时候有问题,请看下面红色字
y <- data.frame(time = seq(as.Date('2007-01-07'), by = 'weeks', length = 392))
#produce a vector that can show the dates of the exchange rates.#
ex<-da[,2]
lex<-log(ex)
par(mfrow=c(2,1))
plot(y,ex,xlab="year",ylab="exchange_rate",type='l')
plot(y,lex,xlab="year",ylab="log_exchange_rate",type='l')
hist(lex)
par(mfrow = c(3, 2))
autopairs(lex, lag = 1, type = "regression")
autopairs(lex, lag = 2, type = "regression")
autopairs(lex, lag = 3, type = "regression")
autopairs(lex, lag = 4, type = "regression")
autopairs(lex, lag = 5, type = "regression")
autopairs(lex, lag = 6, type = "regression")
mod.ar <- linear(lex, m = 4)
mod.ar
mod.setar <- setar(x, m = 4, mL = 4, mH = 4, thDelay = 1)
mod.setar
mod <- list()
mod[["linear"]] <- linear(lex, m = 4)
mod[["setar"]] <- setar(lex, m = 4, thDelay = 1)
mod[["lstar"]] <- lstar(lex, m = 4, thDelay = 1)
mod[["nnetTs"]] <- nnetTs(lex, m = 4, size = 3)
mod[["aar"]] <- aar(lex, m = 4)
sapply(mod, AIC) #compare AIC of SETAR, LSTAR, linear, NNETTS and AAR model#
sapply(mod, MAPE) #compare mean absolute percentage error#
plot(mod[["setar"]])
set.seed(10)
mod.test <- list()
lex.train <- window(lex, end = 380)
lex.test <- window(lex, start = 381)
mod.test[["linear"]] <- linear(lex.train, m = 4)
mod.test[["setar"]] <- setar(lex.train, m = 4, thDelay = 1)
mod.test[["lstar"]] <- lstar(lex.train, m = 4, thDelay = 1, trace = FALSE,control = list(maxit = 1e+05))
mod.test[["nnet"]] <- nnetTs(lex.train, m = 4, size = 3, control = list(maxit = 1e+05))
frc.test <- lapply(mod.test,predict, n.ahead = 10)
plot(lex.test, ylim = range(lex))
for (i in 1:length(frc.test))lines(frc.test[], lty = i +1, col = i + 1)
legend(381,-0.5 , lty =1:(length(frc.test) + 1), col = 1:(length(frc.test) +1), legend =c("observed", names(frc.test)))
我总共有391个数据。这一部分我就是想画一个以前381个数据为原data做一个10步的预测,用这个model预测出来的data+10步预测的data来对比我的这个data事最好的。我这里想画SETAR,LSTAR,LINEAR,NEET这几个model,看图说话来证明我fit的model是最合适的。
在网上看我这最后一步是能画出一个这几个model加上原data在一起的图的,就像我这个链接第20页的那个图http://cran.r-project.org/web/packages/tsDyn/vignettes/tsDyn.pdf但是这里我只能画出几个prediction类似的点
我不太明白。
求高人指点!!!