# SSA - SINGULAR SPETRUM ANALYSIS setwd("C:/Users/Sérgio/Documents/Dissertações/Tese Ana") data <- read.csv('T Cuiaba.txt',header = TRUE) ndat <- nrow(data) print(ndat) #print(data$X) MEM = as.integer(sqrt(2*ndat)) # Dimensão da matriz de correlação = memória MCorr <- matrix(0.0,nrow=MEM,ncol=MEM) # CALCULO DA MATRIZ DE CORRELAÇÃO: for (i in 1:MEM){ for (j in 1:MEM){ soma <- 0.0 kmax <- ndat - as.integer(abs(i-j)) for(k in 1:kmax){ soma <- soma + data$X[k] * data$X[k + as.integer(abs(i-j))] }#for k MCorr[i,j] <- soma/(ndat - abs(i-j)) }#for j print(i) }#for i # CALCULO DE AUTOVALORES E AUTOVETORES DA MATRIZ DE CORRELAÇÃO Autovalores <- rep(0.0,times=MEM) Autovetores <- matrix(0.0,nrow=MEM,ncol=MEM) eigen(MCorr) Autovalores <- eigen(MCorr)$values Autovetores <- eigen(MCorr)$vectors print(Autovalores) #print(eigen(MCorr)$vectors) plot(Autovetores[,10]) #ORDENA O VALOR ABSOLUTO DOS AUTOVALORES EM ORDEM DECRESCENTE: Autoval_ABS <- rep(0.0,times=MEM) Autoval_LOG <- rep(0.0,times=MEM) for(j in 1:MEM){ Autoval_ABS[j] <- abs(Autovalores[j]) } Autoval_LOG <- sort(Autoval_ABS, decreasing = TRUE) for(j in 1:MEM){ Autoval_LOG[j] <- log10(Autoval_LOG[j]) } plot(Autoval_LOG) # CALCULO DAS COMPONENTES PRINCIPAIS ncomp <- 20 #Calcula 20 componentes principais PC <- matrix(0.0,nrow=ndat,ncol=ncomp) for (k in 1:ncomp){ for (i in 1:ndat){ for (j in 1:MEM){ PC[i,k] <- PC[i,k] + data$X[i+j-1] * Autovetores[j,k] } } } write.table(PC,file = "Componentes Principais", sep=" ", eol="\n") #RECONSTRUÇÃO DA SERIE TEMPORAL: Qcomp <- 5 # quantidade de componentes RSK <- rep(0.0,times=ndat) for(i in 1:(ndat-MEM-1)){ if(i=MEM) { NORMAL <- MEM Lt <- 1 Ut <- MEM } for(k in 1:Qcomp){ for(j in Lt:Ut){ RSK[i] <- RSK[i] + PC[i-j+1,k]*Autovetores[j,k] } # for j } # for k RSK[i] <- RSK[i]/NORMAL } # for i plot(RSK) write.table(RSK,file = "Serie Reconstituida", sep=" ", eol="\n")