Análise da Série
In [1]:
library(repr)
library(forecast)
options(warn=-1)
options(repr.plot.width=10, repr.plot.height=5)
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
In [2]:
mat <- read.table("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/DataSets/CEMIGMatriz.csv",
header=FALSE, sep=";")
col <- read.table("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/DataSets/CEMIGColunas.csv",
header=FALSE, sep=";")
row <- read.table("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/DataSets/CEMIGLinhas.csv",
header=FALSE, sep=";")
In [18]:
d = dim(row)
linhas = d[1]
colunas = length(col)
#dados <- matrix( c(0,0,0), nrow=linhas*colunas, ncol=3 )
datas <- c()
horas <- c()
valores <- c()
for(k in 1:colunas){
for(i in 1:linhas){
ind <- (k-1)*linhas + i
datas[ind] = paste(col[[k]], row[i,1]) #as.POSIXct(paste(col[[k]], row[i,1]), format="%d/%m/%Y %H:%M")
valores[ind] = mat[i,k]
}
}
dados <- data.frame( datas, valores)
names(dados) <- c("Data","Valor")
#dados$Data <- as.POSIXct(strptime(dados$Data, "%d/%m/%Y %H:%M"), "%d/%m/%Y %H:%M")
#dados
write.table(dados, file="/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/DataSets/CEMIG.csv",
sep=";",row.names = FALSE, col.names = TRUE,)
In [2]:
dados <- read.table("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/DataSets/CEMIG.csv",
header=TRUE, sep=";")
#names(dados) <- c("ID","Data","Valor")
dados$Data <- as.POSIXct(strptime(dados$Data, "%d/%m/%Y %H:%M"), "%d/%m/%Y %H:%M")
#dados
In [3]:
plot(dados, type="h")
dev.copy(png,filename="/home/petronio/Pictures/cemig.jpg");
dev.off ();
Out[3]:
Out[3]:
In [80]:
acf(dados$Valor, lagmax=300)
In [81]:
pacf(dados$Valor, lagmax=300)
In [ ]:
## Partitioning Study - By
In [16]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitChenFTS,dados,1,2,c(30, 40, 50, 70, 80, 90),trimf,NULL,0.5)
Out[16]:
In [17]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitYuFTS,dados,1,2,c(30, 40, 50, 70, 80, 90),trimf,NULL,0.5)
Out[17]:
In [18]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitEfendiFTS,dados,1,2,c(30, 40, 50, 70, 80, 90),trimf,NULL,0.5)
Out[18]:
In [19]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitSadaeiFTS,dados,1,2,c(30, 40, 50, 70, 80, 90),trimf,1.1,0.5)
Out[19]:
In [112]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitHOFTS,dados,1,2,c(30, 40, 50, 70, 80, 90),trimf,15,0.5)
Out[112]:
In [4]:
Ano <- strftime(dados$Data, "%Y")
Hora <- strftime(dados$Data, "%H:%M")
Valor <- dados$Valor
dadosHorario <- data.frame(Ano, Hora, Valor)
In [14]:
dadosHorario <- aggregate(dadosHorario, by=list(dadosHorario$Ano, dadosHorario$Hora), FUN=mean, na.rm=TRUE)
dadosHorario <- data.frame(dadosHorario$Group.1, dadosHorario$Group.2, dadosHorario$Valor)
names(dadosHorario) <- c("Ano","Hora","Valor")
dadosHorario <- dadosHorario[with(dadosHorario, order(Ano, Hora)),]
write.table(dadosHorario, file="/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/DataSets/CEMIGHorario.csv",
sep=";",row.names = FALSE, col.names = TRUE)
In [3]:
dadosHorario <- read.table(file="/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/DataSets/CEMIGHorario.csv",
header=TRUE, sep=";")
#dadosHorario
plot(dadosHorario$Hora, dadosHorario$Valor, type="l")
In [13]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitChenFTS,dadosHorario,2,3,c(30, 40, 50, 70, 80, 90),trimf,NULL,0.5)
Out[13]:
In [14]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitYuFTS,dadosHorario,2,3,c(30, 40, 50, 70, 80, 90),trimf,NULL,0.5)
Out[14]:
In [15]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitEfendiFTS,dadosHorario,2,3,c(30, 40, 50, 70, 80, 90),trimf,NULL,0.5)
Out[15]:
In [25]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitSadaeiFTS,dadosHorario,2,3,c(30, 40, 50, 70, 80, 90),trimf,1.2,0.5)
Out[25]:
In [118]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitHOFTS,dadosHorario,2,3,c(30, 40, 50, 70, 80, 90),trimf,3,0.5)
Out[118]:
In [106]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitSeasonalFTS,dadosHorario,2,3,c(30, 40, 50, 70, 80, 90),trimf,96,0.5)
Out[106]:
In [119]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
fit <- FitHOFTS(dados$Valor[1:4992],70,trimf,30)
hofts <- fit$train()
In [114]:
hofts$forecastAhead(dados$Valor[4977:4992],96)
Out[114]:
In [108]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
fit <- FitSeasonalFTS(dados$Valor[1:4992],90,trimf,96)
sfts <- fit$train()
In [109]:
plot(sfts$forecastAhead(96,96),type="l")
In [117]:
source("/home/petronio/dados/Dropbox/Doutorado/Disciplinas/AdvancedFuzzyTimeSeriesModels/rfts/FTS.r")
explorePartitioning(FitSeasonalFTS,dadosHorario,2,3,c(30, 40, 50, 70, 80, 90),trimf,96,0.5)
Out[117]:
In [ ]: