# ==================================================================================
# r-script para testar ajuste de modelos PAR(p)
# input: Energias medias mensais historicas para REEs (EAF_NE.csv, ...)
# output: relatorio com ordens PAR(p) escolhida via AIC e BIC
# Ref: Estacionaridade das energias afluentes aos REEs
# ==================================================================================
#
# ***********************************************************************************************
# Clean variables & Set working directory
rm(list=ls()); # limpa vari?veis
# workdir <- "D:/ProjetosONS/Cursos/Alex/R-project/EAFs/2018/"; # diretorio de trabalho
workdir <- file.path("D:", "ProjetosONS", "Cursos", "Alex", "R-project", "EAFs", "2018")
# workdir <- file.path("/home", "joari", "ProjetosONS", "Cursos", "Alex", "R-project", "ENAs", "2018", "readtxt")
setwd(workdir);
# ***********************************************************************************************
source("functions.R")
source("readEAFh.R")
#
# ***********************************************************************************************
#
criterion <- "bic"
for (iREE in 1:totREE) {
# for (iREE in 8:8) {
print(paste0("iREE = ", iREE))
EAF <- EAFh[iREE,,2:13]
arquivo <- paste("EAF-", NameREE[[iREE]], "-", toupper(criterion), sep = "")
saida <- paste(arquivo, ".out", sep = "")
saida_Full <- paste(arquivo, "-Full.out", sep = "")
#
# ***********************************************************************************************
#
# fit parp (pear package), using library("pear")
maxEAF <- 1.05*max(EAF)
savePARp <- list()
cat(paste0("\n ", toupper(criterion), " model order\n", sep=""), file=saida, append=FALSE)
cat(paste0("\n ", toupper(criterion), " model order parameteres\n", sep=""), file=saida_Full, append=FALSE)
title <- paste(" Anoini Anofin Total", paste(formatC(month.abb,format="s",width=6), collapse = " "), sep = "")
cat(title, file=saida, append=TRUE)
cases <- seq(1, 66, by = 5)
# for (inicio in cases){
for (i in 1:length(cases)){
anoini <- anoIni + cases[i] - 1
out <- paste("\n")
out <- paste(out,
formatC(anoini, digits=0, format="f", width=6),
formatC(anoFim, digits=0, format="f", width=6),
formatC(anoFim - anoini + 1, digits=0, format="f", width=7), sep = " ")
cat(out, file=saida, append=TRUE)
cat(out, file=saida_Full, append=TRUE)
tmp <- EAF[cases[i]:totYears,]
plot_EAFh (tmp, maxEAF, anoIni, anoFim, arquivo, anoini)
# padronizando tmp
EAFpad <- scale(tmp)
savePARp[[i]] <- try(ajusta_parp (EAFpad, anoFim, criterion, saida, saida_Full), silent = TRUE)
}
#
aa <- array(0, dim = c(length(cases), 12))
ymed <- array(0, dim = c(length(cases), 12))
ysup <- array(0, dim = c(length(cases), 12))
yinf <- array(0, dim = c(length(cases), 12))
minY <- 1.0
for (mes in 1:12) {
# get identified model order for each month (mes) for every sample size
for (i in seq(1,length(cases))) {
try({
if (is.numeric(savePARp[[i]][[1]][[mes]])) {aa[i, mes] <- savePARp[[i]][[1]][[mes]]}
})
}
cat(paste0("mes ", formatC(mes, digits=NULL,format="d",width=3)))
cat(formatC(aa[, mes], digits=NULL,format="d",width=3), sep="")
cat("\n")
if (all(aa[, mes] == 1, na.rm = TRUE)) {
print(paste0(month.abb[mes], " ordem 1 para todos os casos"))
for (i in seq(1,length(cases))) {
ymed[i, mes] <- savePARp[[i]][[2]][mes,1]
delta <- 1.96*savePARp[[i]][[3]][mes,1]/sqrt(anoFim - anoIni - cases[i] + 2)
ysup[i, mes] <- ymed[i, mes] + delta
yinf[i, mes] <- ymed[i, mes] - delta
minY <- min(minY, yinf[i, mes])
}
}
}
# Barplot for all modes with order == 1 for every month
anoI = (anoIni + cases - 1)
maxY <- 1
for (mes in 1:12) {
if (all(aa[, mes] == 1)) {
png(file=paste(arquivo, " - ", month.abb[mes],".png",sep=""));
phi_barplot <- barplot(ymed[, mes], names.arg = anoI, col=c("blue" , "skyblue") ,
ylim = c(minY, maxY), xlab = "ano inicial", ylab = "Model order",
main = paste(arquivo, " - ", month.abb[mes], sep = ""),
xpd=FALSE)
axis(side = 1,at = phi_barplot, labels = FALSE)
arrows(phi_barplot, ysup[, mes], phi_barplot, yinf[, mes], angle = 90, code = 3, length = 0.1)
abline(h = 1, col = "blue", lwd = 2)
box(bty = "l")
dev.off();
}
}
plot_order(aa, cases, anoI, arquivo)
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎