14
Planejamento e Controle da Produção (PCP)
UFPR
6
Planejamento e Controle da Produção (PCP)
UFPR
7
Planejamento e Controle da Produção
UMG
3
Planejamento e Controle da Produção (PCP)
UNIGRANRIO
2
Planejamento e Controle da Produção (PCP)
UNB
1
Planejamento e Controle da Produção
UNIVESP
2
Planejamento e Controle da Produção (PCP)
UESC
7
Planejamento e Controle da Produção (PCP)
UFPI
4
Planejamento e Controle da Produção
UNIVESP
1
Planejamento e Controle da Produção (PCP)
UTFPR
Texto de pré-visualização
Modelos básicos de previsão Conforme apresentado anteriormente em geral uma série temporal Xt pode ser representado pelo somatório das componentes trend mt seasonal st e remainder et Xt mt st et O valor destas componentes determina o padrão de comportamento da variável de interesse e portanto o modelo de previsão a ser utilizado Existem 3 padrões básicos demanda constante demanda com padrão de crescimento ou de redução demanda com sazonalidade Lembre que um modelo de previsão deve especificar um intervalo de previsão para um valor específico de probabilidade de enquadramento F τ Pvalormínimo valormáximo ou de forma equivalente o valor central do intervalo e a incerteza correspondente F τ Pvalor centralincerteza valormínimovalor centralincerteza valormáximovalorcentralincerteza ou h identificação dos períodos futuros P probabilidade de que o intervalo de previsão contenha o valor que de fato ocorrerá no futuro A família de método Exponential smoothing Os métodos de amortecimento exponencial exponential smoothing foram originalmente propostos nos anos 1950 e 1960 Há métodos apropriados para serem aplicados quando a demanda apresenta padrão constante padrão de crescimento ou de redução e padrão de sazonalidade São métodos que determinam uma média ponderada entre os dados históricos sendo que o peso é variável com a antiguidade do dado quanto mais antigo menos relevante O modelo obtido considera toda a série histórica desde o mais antigo até o mais recente mas a cada período de atualização do modelo apenas o dado mais recente e o modelo obtido na última atualização são utilizados para determinar o novo modelo Para demanda com padrão constante ou seja sem a presença nítida de uma componente trend crescimento ou redução ou seasonal sazonalidade pode ser utilizado o método Simple exponential smoothing No pacote fpp2 para o R está implementado na função ses Para demanda com padrão de crescimento ou de redução pode ser utilizado o método Trend smoothing forecast Holts model No pacote fpp2 para o R está implementado na função holt Para demanda com padrão de sazonalidade podem ser utilizados os métodos Seasonal exponentially smoothing multiplicative model e Seasonal exponentially smoothing additive model Quando a componente sazonal apresenta uma amplitude de variação fixa ao longo de toda a série o método aditivo é o mais apropriado Quando a componente sazonal apresenta uma amplitude de variação com padrão de crescimento ou de redução ao longo da série o método multiplicativo é o mais apropriado No pacote fpp2 para o R está implementado na função hw Para uma melhor compreensão dos métodos de amortecimento exponencial são apresentados outros métodos 1 Demanda constante O valor central do modelo de previsão de demanda é dado por F τ a Esta equação corresponde a equação de uma reta com coeficiente angular nulo y a bx onde b0 O coeficiente a é determinado com base nos valores históricos da variável de interesse yt1 ytT onde T corresponde ao período atual ou mais recente A aplicação deste modelo informa que o valor central da variável de interesse nos períodos futuros terá sempre o mesmo valor independente do horizonte de futuro F τ1F τ2 F τN a Conforme o método aplicado para construir o modelo de previsão podem ser utilizados todos os valores históricos apenas o último uma parcela mais recente dos dados todos os dados com grau de relevância diferenciado determinado pela antiguidade do dado Supondo que hoje a série histórica é yt1 ytT A aplicação de um método para construir o modelo de previsão irá estabelecer um determinado valor para o coeficiente ahoje No período seguinte a série histórica receberá mais um valor yt1 ytT ytT1 pois amanhã será conhecido mais um valor da variável de interesse Observe que yt1 ytT são os valores da série históricas conhecidos até hoje ytT1 é o valor que será recebido no período seguinte Neste momento amanhã a aplicação do mesmo método para construir o modelo de previsão poderá determinar um novo valor para o coeficiente aamanhã Conforme passa o tempo o modelo de previsão o valor do coeficiente ahoje aamanhã pode mudar A incerteza do intervalo de previsão também é determinada com base nos valores históricos Quanto maior a probabilidade de enquadramento e quanto mais distante o horizonte de previsão maior será a incerteza e portanto mais amplo será o intervalo valor mínimovalor máximo A determinação da incerteza é realizada com base nos resíduos erro de previsão referente aos períodos passados e no desvio padrão dos resíduos Há diversos métodos para determinar o valor central do intervalo de previsão A incerteza será determinada sempre através do mesmo procedimento conforme apresentado em Quantificação da incerteza Para cada método de determinação do valor central há um procedimento para determinação do desvio padrão dos resíduos Avaliação da adequação dos dados históricos para realização da previsão de demanda constante Independente do modelo que será utilizado para realizar a previsão é necessário que haja compatibilidade entre os dados históricos e o modelo selecionado A avaliação desta compatibilidade para os modelos de demanda constante pode ser realizada avaliando o coeficiente de variação CV dos dados históricos CV desvio padrão valor médio Na figura abaixo são apresentadas diversas curvas com valores de CV distintos com valor médio igual a 10000 Quanto menor for o valor de CV maior a densidade de dados em torno do valor médio Quanto maior for o valor de CV mais dispersos estarão os dados experimentais Compare CVs from 015 to 2 CV 015 CV 03 CV 05 CV 07 CV 1 CV 15 CV 2 Conforme httpsblogarkievacomdoyouusecoefficientofvariationtodetermine forecastability para CV 03 os dados históricos estão muito concentrados em torno do valor médio o conjunto de dados históricos é apropriado para aplicar métodos de previsão de demanda constante para CV 07 os dados históricos estão muito dispersos o conjunto de dados históricos não é apropriado para aplicar métodos de previsão de demanda constante Os limites 03 e 07 são valores empíricos 11 Método ingênuo naive Utiliza apenas o último dado observado O coeficiente a é igual ao último valor observado da variável de interesse a ytT e t y t F t y t a s t1 N et 2 N1 A incerteza será determinada com base no desvio padrão s dos resíduos et a previsão para os períodos futuros será o mesmo valor independente do período futuro yt valor realizado no último período passado Ft valor previsto para o último período passado et resíduo da previsão para o último período passado s desvio padrão dos resíduos determinado considerando todos os valores de et passados para determinar este valor não é necessário armazenar e processar todos os dados históricos basta armazenar o valor de s determinado no período passado o número de valores considerado até o período passado N e o valor de et determinado para o período em questão 12 Média aritmética simples envolvendo todos os elementos da série histórica horizontal forecast Utiliza todos os dados históricos conhecidos no momento da construção do modelo a 1 N t1 T yt e t y t F t y t a s t1 N et 2 N1 Observe que o procedimento para determinar o coeficiente a é distinto do procedimento empregado no método naive mas o procedimento para determinar o desvio padrão dos resíduos é o mesmo Nas equações anteriores modelo 11 e 12 N especifica a quantidade de observações realizadas ao longo de toda a série histórica a cada período de atualização do modelo o valor de N é incrementado Observe que na construção de uma regressão linear para minimização do somatório do erro quadrático método dos mínimos quadrados y a bx se é especificado que o coeficiente angular é nulo b 0 então o coeficiente linear é igual à média aritmética simples portanto o modelo 12 é equivalente ao método dos mínimos quadrados quando é especificado que b0 13 Média móvel envolvendo apenas os últimos mais recentes N elementos da série temporal horizontal moving average forecast Apenas os N elementos mais recentes dos dados históricos são utilizados a 1 N tT N T yt Na equação anterior N assume um valor constante préestabelecido Se a cada período de atualização do modelo os dados mais antigos forem eliminados da série histórica preservando apenas os N mais recentes e fazendo com que o mais antigo corresponda a t1 e o mais recente corresponda a tT então a equação pode ser reescrita como a 1 N t1 T yt Como a série histórica já considera apenas os últimos N valores então o resíduo et e seu desvio padrão s serão determinados com o mesmo procedimento e t y t F t y t a s t1 N et 2 N1 Start d 0 For τ 1 to N xτ integerfτ d 05 d d fτ xτ next τ End 14 Média móvel ponderada com atribuição de peso proporcional ao período envolvendo apenas os últimos mais recentes K elementos da série temporal horizontal discount forecast Corresponde a uma média ponderada tal que o peso atribuído aos dados históricos sofre uma redução proporcional à antiguidade do período Quanto mais antigo o valor do dado histórico menor sua influência na determinação dos valores futuros a t1 N y t wt t1 N wt Observe que na equação anterior a cada período de atualização do modelo os dados mais antigos são eliminados da série histórica preservando apenas os N mais recentes e fazendo com que o mais antigo corresponda a t1 e o mais recente corresponda a tT e t y t F t y t a s t1 N w t et 2 t1 N wt Uma possibilidade de definição do peso pode ser dada por w t β N t Nestas equações N quantidade de períodos que é efetivamente utilizada para determinação da média ponderada wt peso atribuído ao período t coeficiente de redução dos períodos passados discount weight 0 0 Neste modelo é necessário estabelecer o número de períodos N e o coeficiente A figura abaixo apresenta os valores do peso wt para N 10 com 03 figura da esquerda e 09 figura da direita N 10 e 03 N 10 e 09 1 2 3 4 5 6 7 8 9 10 0 01 02 03 04 05 06 07 08 09 1 1 2 3 4 5 6 7 8 9 10 03 04 05 06 07 08 09 1 Para N 10 e 03 no período atual t 10 o peso atribuído à demanda realizada é unitário para a demanda realizada 4 períodos no passado ao atual t6 o peso atribuído é reduzido para 810103 para a demanda realizada 10 períodos no passado t1 o peso atribuído é reduzido para 197105 ou seja praticamente zero o somatório dos pesos é igual a 14286 esta combinação de parâmetros produz uma redução muito brusca do peso atribuído aos períodos passados ver figura abaixo à esquerda Para N 10 e 09 a redução dos pesos é menos abrupta quase linear 15 Amortecimento exponencial horizontal exponential smoothing forecast Corresponde a uma média ponderada que considera a influência de TODOS os elementos da série histórica na determinação da média ponderada A grande vantagem deste método em relação aos métodos anteriores reside no fato de que apenas o último dado histórico ytT e a última previsão de demanda atT1 precisam ser armazenados todos os demais valores da série histórica podem ser descartados mas a influência deles será preservada na determinação dos valores futuros O modelo é determinado por a t α y t 1α a t1 e t y t F t y t a v t α et 21α vt1 svt onde coeficiente de amortecimento 0 1 tipicamente 01 O coeficiente de amortecimento estabelece a importância relativa que é estabelecida à demanda realizada nos períodos mais recentes em relação à demanda realizada nos períodos anteriores para 1 a previsão de demanda é realizada considerando apenas a demanda realizada no último período e ignorando os dados históricos isto corresponde ao modelo naive para 0 a previsão de demanda atribui menor importância para o realizado nos períodos mais recentes e considera o efeito de períodos mais antigos Observe que et é determinado considerando apenas o valor de et obtido entre o último valor observado da variável de interesse ytT e a previsão correspondente atT Seja a equação de uma reta y a bx onde a coeficiente linear ponto no eixo y onde a reta intercepta o eixo vertical b coeficiente angular da reta Se for considerado que a demanda é constante o coeficiente angular da reta deve ser nulo Este modelo corresponde a equação de uma reta com coeficiente angular nulo reta horizontal É aplicado se a demanda é considerada constante ou seja sem padrão de crescimento ou redução trend e sem padrão de sazonalidade A equação abaixo corresponde ao coeficiente linear da reta que está sendo determinada pelo modelo de previsão Este coeficiente possui duas componentes a t α y t 1α a t1 A componente yt corresponde à demanda realizada no período t ponderada pelo coeficiente A componente 1 at1 corresponde à previsão de demanda realizada ao final do período t1 ponderada pelo coeficiente 1 Esta ponderação e 1 estabelece a importância que é estabelecida para o valor mais recente da demanda ytT em relação aos valores anteriores Seja tT o momento atual mais recente Para atualizar o modelo ao final do período tT ou seja determinar atT é necessário conhecer a demanda vendas efetivamente realizada no período tT ytT bem como a previsão de demanda realizada ao final do período anterior atT1 A demanda efetivamente realizada nos períodos anteriores ao período tT está incorporada no valor da previsão de demanda realizada ao final do período anterior atT1 Supondo que você ainda não utiliza este modelo e que o momento atual é t1 Neste momento você conhece yt1 mas não conhece at0 pois você ainda não utiliza o modelo Uma possibilidade é assumir que a previsão de demanda que teria sido realizada ao final do período t0 é igual a demanda efetivamente realizada no período t1 ou seja at0 yt1 Isto resulta em uma imprecisão do método mas em poucos períodos após t1 o peso atribuído a at0 será desprezível Para minimizar esta imprecisão é possível adotar nos períodos iniciais um valor do coeficiente alfa determinado pela equação α tmaximoα 1 t Exemplo de quantificação da imprecisão causada por assumir at0 yt1 a t10α y t10 1α a t9 a t9α y t91αat8 a t2α y t21α at1 a t1α y t11αat0 comaaproximação sugerida a t1α y t11α yt1 Realizando a substituição de at1 na equação de at2 de at2 na equação de at3 e assim sucessivamente resulta at10 10 yt10 11 yt9 12 yt8 19 yt1 110at1 para n elevado 1n 0 e portanto a estimativa inicial de at0 é irrelevante Considere o caso em que 03 e n10 o peso 1n atribuído a cada valor de demanda yt10 a yt1 e à previsão de demanda at1 são dados pelos pontos representados na figura abaixo at10 10 yt10 11 yt9 12 yt8 19 yt1 110at1 Algoritmo para arredondamento do erro acumulado cumulativerounding algorithm Nos diversos modelos de previsão o valor da previsão raw forecast pode ser um valor real 1 2 3 4 5 6 7 8 9 10 período t 0 005 01 015 02 025 03 peso do período Para o caso em que o número de vendas é um valor inteiro é recomendável realizar o arredondamento da previsão de demanda integer forecast Quando a previsão de demanda deve ser realizada para diversos períodos futuros em relação ao período t ou seja para os períodos t1 t2 t3 t tN deve ser utilizado o algoritmo abaixo onde período futuro ao período t em cujo final foi realizada a determinação da previsão da demanda f valor da previsão de demanda para o período obtido com o modelo de previsão de demanda x valor arredondado para inteiro conforme a equação apresentada no algoritmos Supondo que a previsão para os períodos futuros raw forecast é f 875 a aplicação do algoritmo acima resulta nos seguintes valores de previsão de demanda integer forecast Tracking signal Tracking signal é utilizado para monitorar a qualidade do resultado obtido com a aplicação do método de previsão de demanda se o valor de tracking signal é superior a 07 então o usuário pode ter 95 de certeza na hipótese de que o processo de previsão de demanda está fora de controle inconsistente devido a uma elevação atípica da demanda possivelmente causado por algum dos fatores abaixo fornecedor concorrente não conseguir suprir sua cota de participação no mercado resultando em incremento de vendas dos demais concorrentes alta nas vendas do produto causado por uma fator imprevisto por exemplo pane no sistema elétrico resulta em maior consumo de baterias produto similar saiu do mercado ou deixou de ser atrativo a empresa do produto concorrente foi denunciada por uso de mão de obra escrava se o valor de tracking signal é inferior a 07 então o usuário pode ter 95 de certeza na hipótese de que o processo de previsão de demanda está fora de controle inconsistente devido a uma redução atípica da demanda possivelmente causada pela entrada de um novo produto similar ou de um novo fornecedor no mercado Tracking signal é determinado pela razão entre o somatório do erro acumulado e o mean absolute deviation MAD Com a aplicação do amortecimento exponencial os valores dos períodos anteriores de demanda Di e previsão de demanda Fi não precisam ser armazenados São armazenados apenas os valores do período mais recente Neste caso pode ser utilizada a relação entre o erro amortecido e o MAD amortecido Em geral o parâmetro é igual ao parâmetro também costuma ser utilizado 02 independentemente do valor de e t y t Ft e tα e t 1α et1 MAD t α e t 1α MADt1 TS et MAD t onde et erro para o período t yt demanda que de fato ocorreu no período t1 Ft previsão de demanda realiada ao final do período t1 para o período t et erro amortecido no período t MADt MADmean absolute deviation amortecido para o período t como função do erro para o período t e do MAD amortecido determinado ao final do período t1 para o período t TS tracking signal 2 Demanda com padrão de crescimento ou redução O valor central do modelo de previsão de demanda é dado pela equação de uma reta com coeficiente linear a e coeficiente angular b F τ abτ onde período no futuro ao instante atual 21 Trend regression forecast Este método estabelece a equação da reta aplicando o método dos mínimos quadrados para os últimos N períodos de demanda realizada atribuindo o mesmo peso a cada um dos períodos passados Da mesma forma que nos modelos Média móvel envolvendo apenas os últimos mais recentes N elementos da série temporal horizontal moving average forecast e Média móvel ponderada com atribuição de peso proporcional ao período envolvendo apenas os últimos mais recentes K elementos da série temporal horizontal discount forecast a cada período de atualização do modelo os dados mais antigos são eliminados da série histórica preservando apenas os N mais recentes e fazendo com que o mais antigo corresponda a t1 e o mais recente corresponda a tT A cada período de previsão é obtida uma nova equação de reta que minimiza o erro quadrático do conjunto de N períodos considerados b t1 N y t t1 N tN t1 N y t t t1 N t 2 N t1 N t 2 a t1 N y t b t1 N t N e t y t F t y t abt s t1 N et 2 Observe que no período tT é determinado o modelo de previsão para o futuro ou seja os coeficientes a e b Com estes coeficientes é possível determinar o valor central da previsão para os períodos futuros A incerteza do intervalo determinada no período tT para os períodos futuros é realizada com os N valores de et obtidos com os N valores passados de yt e o valor Ft a bt que o modelo obtido neste período teria previsto como o valor de demanda para estes N períodos passados O resíduo et e o desvio padrão do resíduo st são utilizados na determinação da incerteza conforme apresentado em Quantificação da incerteza 21 Trend discount forecast Este método é similar ao anterior porém é atribuído um peso wt ao erro de previsão et realizado a cada período e o objetivo é minimizar o somatório do erro quadrático método dos mínimos quadrados b t1 N y t w t t1 N t wt t1 N wt t1 N y t t wt t1 N t wt 2 t1 N w t t1 N t 2wt a t1 N y t wt b t1 N t wt t1 N wt e t y t F t y t abt s t1 N w t et 2 23 Trend smoothing forecast Holts model Para demanda com padrão de crescimento ou redução o valor central do modelo de previsão de demanda é dado pela equação de uma reta com coeficiente linear a e coeficiente angular b F τ abτ Conforme discutido na apresentação do método Amortecimento exponencial horizontal exponential smoothing forecast aplicável para o caso em que a demanda é considerada constante sem padrão de crescimento ou de redução a equação da reta que realiza a previsão de demanda possui coeficiente angular nulo e o coeficiente linear é dado por a t α y t 1α a t1 Para o caso em que a demanda apresenta um comportamento de crescimento ou redução o coeficiente linear at e o coeficiente angular bt são determinados a cada período por a t α y t 1α at1bt1 b t β a tat11β bt1 De forma similar ao realizado no modelo Trend regression forecast no período tT é determinado o modelo de previsão para o futuro ou seja os coeficientes a e b Com estes coeficientes é possível determinar o valor central da previsão para os períodos futuros com a equação F τ abτ A incerteza do intervalo determinada no período tT para os períodos futuros é calculada empregando os coeficientes at1 e bt1 determinados no período anterior e o valor atual yt Com estas informações são calculados o resíduo et e o desvio padrão do resíduo st A determinação da incerteza é realizada conforme apresentado em Quantificação da incerteza e t y t F t1 y ta t1b t1 s t α et 21α st1 2 Interpretação geométrica do modelo Considerando a previsão para períodos futuros o período atual t pode ser considerado como 0 desta forma t período em que está sendo realizada a determinação do modelo portanto 0 at coeficiente linear da reta nível em 0 ou estimativa do nível no período t bt coeficiente angular da reta inclinação em 0 ou estimativa da inclinação no período t at1 estimativa do nível realizada ao final do período t1 bt1 estimativa da inclinação realizada ao final do período t1 yt demanda realizada no período t Este método requer dois coeficientes de amortecimento coeficiente de amortecimento do nível level coeficiente de amortecimento da inclinação slope Exemplo Interpretação geométrica do modelo Denominemos o período atual como t10 e portanto o período anterior como t9 Supondo que no período anterior foi atualizado o modelo de previsão determinando os coeficientes at9 3 bt9 5 Naquele momento quanto t9 foi obtido o modelo de previsão para os períodos futuros F a b 3 5 Então foi possível realizar a previsão para um período para frente 1 ou seja foi possível realizar a previsão para o período atual F1 Ft10 3 5 8 Mas o que de fato acontece no momento atual yt10 pode ser diferente do previsto O valor efetivamente obtido para yt10 e os valores dos coeficientes e irão determinar o o modelo que será obtido no momento atual para realizar as previsões para o futuro Agora serão analisados dois casos Caso 1 O valor dos coeficientes e são elevados privilegiando o último valor observado em detrimento dos valores históricos Assumindo que 09 09 11 O valor observado de yt10 é maior do que o valor previsto pelo modelo Assumindo que yt10 10 12 O valor observado de yt10 é menor do que o valor previsto pelo modelo Assumindo que yt10 6 Caso 2 O valor dos coeficientes e são reduzidos privilegiando os valores históricos em detrimento do último valor observado 01 01 21 O valor observado de yt10 é maior do que o valor previsto pelo modelo Assumindo que yt10 10 22 O valor observado de yt10 é menor do que o valor previsto pelo modelo Assumindo que yt10 6 Nas figuras abaixo linha azul contínua modelo determinado no período anterior at1 bt1 este modelo tem validade de aplicação até que um novo modelo seja determinado linha azul tracejada modelo determinado no período anterior at1 bt1 como já foi determinado o novo modelo então ele não tem mais validade de aplicação sua apresentação é apenas para comparação gráfica linha verde contínua modelo determinado no período atual at bt este passa a ser o modelo válido a partir do momento atual linha verde tracejada modelo determinado no período atual at bt no período anterior este modelo ainda não havia sido determinado sua apresentação é apenas para comparação gráfica círculo vermelho em 0 valor real observado da variável no período atual yt10 asterisco vermelho em 0 valor previsto para a variável no período atual pelo modelo determinado no período anterior Ft10 losango preto em 1 coeficiente linear do modelo determinado no período anterior at 1 losango preto em 0 coeficiente linear do modelo determinado no período atual at caso 11 09 09 yt10 10 caso 21 01 01 yt10 10 caso 12 09 09 yt10 6 caso 22 01 01 yt10 6 Para o caso 1 o coeficiente linear do modelo determinado no período atual at está muito próximo do valor yt10 o que demonstra que o valor atual foi privilegiado em detrimento da informação histórica Para o caso 2 o coeficiente linear do modelo determinado no período atual at está muito próximo do valor previsto pelo modelo determinado no período anterior Ft10 o que demonstra que a informação histórica armazenada no modelo determinado no período anterior foi privilegiada em detrimento do valor atual O coeficiente angular de uma reta é determinado pela razão entre a variação no eixo vertical e a variação no eixo horizontal Entre o período anterior e o período atual a variação no eixo horizontal é igual a unidade A variação no eixo vertical corresponde à diferença atat1 Para o caso 2 observase que a inclinação do novo modelo linha contínua verde é praticamente igual à inclinação do modelo anterior linha tracejada azul o que demonstra que a informação histórica armazenada no modelo determinado no período anterior foi privilegiada em detrimento do valor atual Para o caso 1 observase que a inclinação do novo modelo linha contínua verde é praticamente igual à inclinação entre at1 e at o que demonstra que o valor atual foi privilegiado em detrimento da informação histórica fim do exemplo Assim como no modelo amortecimento exponencial aplicável para demanda constante nos primeiros períodos de aplicação deste método é necessário realizar a inicialização dos parâmetros do modelo Desta forma para o primeiro período de previsão são adotados a1 x1 b1 0 e1 y1 s1 α e12 Além disto o parâmetro alfa pode ser corrigido como α max α 1t desta forma α1 1 α2 05 α3 0333 a redução do parâmetro α período a período é realizada até que α 1t quando o parâmetro assume um valor constante para os demais períodos αt α Exemplo ausair pacote fpp2 Total annual air passengers in millions including domestic and international aircraft passengers of air carriers registered in Australia 19702016 como pode ser observado na figura ao lado o número total de passageiros apresenta um padrão de crescimento esta série temporal pode ser avaliada com o modelo hol ao digitar o comando que realiza a chamada à função holt são apresentados os argumentos da função os argumentos e exemplo de utilização também podem ser obtidos digitando holt o valor dos coeficientes alfa e beta podem ser especificados manualmente mas esta função permite que seja realizada uma estimativa otimizada dos mesmos e que minimize os resíduos para tanto é possível estabelecer o valor optimal ao argumento de entrada initial conforme abaixo ModeloHolt holtausairinitial optimal com este procedimento os coeficientes alfa e beta foram estabelecidos em 08476 e 00969 respectivamente observe que alfa 08476 privilegia o valor mais recente coef linear em detrimento dos valores históricos enquanto que beta00969 privilegia os valores históricos em detrimento do valor mais recente coef angular adotando os valores otimizados para alfa e beta é obtido o resultado apresentado na figura ao lado o qual foi obtido com o comando autoplotholtausairinitial optimal nesta figura a linha azul escuro representa o valor central o intervalo azul escuro especifica o intervalo de predição para 80 e o intervalo azul claro especifica o intervalo de predição para 95 ainda adotando os valores otimizados para alfa e beta o valor central e os valores superior e inferior dos intervalos de previsão para 80 e 95 são obtidos com o comando holtausairinitial optimal valores distintos de alfa e beta podem ser especificados por exemplo 05 para cada um deles com isto a previsão resulta conforme a tabela ao lado holtausair alpha 05 beta 05 observe que para alpha 05 beta 05 o valor central em 2017 é igual a 7238 enquanto que adotando os valores otimizados de alfa e beta o valor central em 2017 é igual a 7474 para holtausair alpha 05 beta 05 FT2017 7238440 FT2018 7336431 com isto e possível determinar os coeficientes a b do modelo FT2017 a b FT2018 2 b2 b 0979910 a 71404490 com estes valores é possível confirmar que FT2021 F5 a 5b 76304040 observe que o último valor para ausair ocorre em 2016 e yt20167259770 observe que FT2016 F0 a 0b 71404490 que é diferente de yt2016 7259770 3 Demanda com sazonalidade Para representar a sazonalidade os modelos adotam um coeficiente de sazonalidade rt cuja amplitude varia aumentando e diminuindo adequadamente No modelo aditivo o coeficiente de sazonalidade é adicionado à equação de uma reta F τ abτ rt τ No modelo multiplicativo o coeficiente de sazonalidade é multiplicado à equação de uma reta F τ abτ r tτ Para cada modelo os coeficientes a b r são determinados com equações próprias 31 Seasonal exponentially smoothing multiplicative model HoltWinters model Neste modelo a previsão de demanda para períodos futuros é determinada por F τ abτ r tτ Onde t período atual de revisão do modelo de previsão de demanda períodos futuros para previsão de demanda a nível level no período atual b inclinação slope no período atual a b padrão de crescimento trend equação da reta que permite determinar o valor de demanda para períodos futuros sem considerar a sazonalidade modelo de Holt trend smoothing forecast conforme apresentado anteriormente rt índice de sazonalidade seasonal ratio para o período futuro especifica como a demanda varia período a período em relação ao valor determinado pelo padrão de crescimento Se é identificada uma sazonalidade mensal então haverão doze valores de rt sendo um valor específico para cada mês do ano ou seja rjaneiro rfevereiro O conjunto de todos os valores de rt terá um valor médio unitário Se não for considerada a existência de sazonalidade então o modelo de Holt trend smoothing forecast determina que o valor central do intervalo de confiança para todos os períodos futuros terá o mesmo valor determinado por a b Ao considerar a existência de sazonalidade o modelo de HoltWinter determina valores diferenciados do valor central do intervalo de confiança para cada um dos períodos futuros se rt 1 então a demanda para o período futuro terá o mesmo valor que o determinado pela componente a b se rt 1 então a demanda para o período futuro terá um valor superior ao determinado pela componente a b se rt 1 então a demanda para o período futuro terá o um valor inferior ao determinado pela componente a b Para aplicar o modelo é necessário realizar a inicialização dos parâmetros conforme apresentado na figura abaixo a qual considera que a sazonalidade é mensal e que há 24 períodos de dados históricos armazenados por isto os valores numéricos 12 e 24 Se a sazonalidade tiver outro período trimestral quadrimestral semestral e outra quantidade de períodos armazenados o procedimento deve ser devidamente ajustado obs Neste documento a demanda tem sido representada por yt no quadro abaixo a demanda está sendo representada por xt desta forma x1 x12 representam a demanda que até então está sendo representada por y1 y12 1 X1 valor médio de demanda ao longo dos primeiros 12 períodos meses 2 X2 valor médio de demanda ao longo dos últimos 12 períodos 3 b0 estimativa do coeficiente angular da reta para o período t1 a t24 4 a0 estimativa do coeficiente linear da reta para o período t1 a t24 5 at equação que realiza a estimativa da demanda válida para os períodos passados t1 a t24 considerando as estimativas iniciais a0 e b0 determinar a demanda para cada período t1 a t24 substituindo o valor de t na equação 6 rt equação que realiza a estimativa do índice de sazonalidade válida para os períodos passados t1 a t24 determinar o índice de sazonalidade para cada período t1 a t24 substituindo os valores de xt e at na equação 7 rt valor médio estimado do índice de sazonalidade para cada período ao longo dos períodos t1 a t12 obs é recomendável definir o valor desta variável para os períodos t13a t24 como rt12 rt rt1 rt13 rjaneiro rt2 rt14 rfevereiro 8 para aplicar o modelo seria necessário conhecer a equação que realiza a estimativa da demanda item 5 para o período t0 mas para este período não há tal equação então os valores at0 e bt0 são arbitrariamente inicializados 9 nesta etapa são determinadas estimativas amortecidas dos coeficientes at bt rt para cada um dos 24 períodos passados t1 a t24 obs ao invés de utilizar a variável rt12 eu implementei uma variável rt rt12 para t1 a t24 sendo que os valores que serão utilizados para a previsão para períodos futuros são os últimos 12 valores de rt ou seja rt13 a rt24 1 X1 x1 x1212 2 X2 x13 x2412 3 b0 X2 X112 4 a0 X1 65b0 5 at a0 b0t t 1 to 24 6 rt xtat t 1 to 24 7 rt rt rt122 t 1 to 12 8 a0 a0 and b0 b0 9 Do the following for t 1 to 24 at α xtrt 1αat1bt1 bt β at at1 1βbt1 rt12 γ xtat 1γrt Após a execução do procedimento de inicialização serão determinados e armazenados os valores de at24 bt24 e os últimos 12 valores do índice de sazonalidade rt13 a rt24 os demais valores podem ser descartados a previsão para períodos futuros é realizada empregando f at24 bt24 r t 12 para realizar a previsão para o primeiro período após t24 temse que 1 então f1 at24 bt241 r t 121 observe que será utilizado rt13 segundo período após t24 temse que 2 então f2 at24 bt242 r t 122 observe que será utilizado rt14 terceiro período após t24 temse que 3 então f3 at24 bt243 r t 123 observe que será utilizado rt15 f at24 bt24 r t 12 na equação acima a componente at24 bt24 corresponde a equação de uma reta que especifica o comportamento de crescimento ou redução da demanda r t 12 corresponde a um multiplicador cujo valor varia período a período e que corrige o valor obtido com a equação da reta Após a inicialização do modelo conforme apresentado acima a cada período ocorre um novo valor de demanda e os coeficientes a b r devem ser atualizados com as equações abaixo observe que ao final do período t25 serão determinados e armazenados os valores de at25 bt25 rt25 os valor de rt13 será descartado e os valores rt14 a rt25 são os valores que deverão ser armazenados para realizar a previsão para períodos futuros No modelo multiplicativo os coeficientes a b r são determinados por a t α yt rt 1α a t1bt1 b t β a t at11β bt1 r t12 γ yt at 1γrt Referências e leitura recomendada Thomopoulos NT Demand Forecasting for Inventory Control Springer Athanasopoulos G Hyndman RJ Forecasting Principles and Practice Nau R Review of basic statistics and the mean model for forecasting Dados essenciais para aplicação dos modelos de previsão de demanda N número de períodos meses de dados históricos demanda armazenados t 1 T identificação dos períodos armazenados passados yt ou Dt valor da demanda real venda de fato realizada que ocorreu no período t passado para determinado produto ou família de produtos yt1 valor de demanda do período mais antigo armazenado ytT valor de demanda do período mais recente armazenado Resultado obtido com a aplicação dos modelos de previsão de demanda Um modelo de previsão de demanda fornece uma expectativa de valor futuro de uma variável de interesse Até que o instante no futuro seja alcançado esta é uma variável aleatória que obedece uma determinada distribuição de probabilidades Quanto mais distante for o instante futuro maior será a incerteza sobre o valor que esta variável pode assumir A expectativa de valor futuro que o modelo de previsão de demanda fornece pode ser especificado através de um intervalo de previsão prediction interval que especifica o intervalo de valores que a variável pode assumir com uma determinada probabilidade O valor futuro também pode ser especificado através do valor central do intervalo de previsão e da incerteza correspondente yT hT F τ Pvalormínimo valormáximo F τ Pvalor centralincerteza valormínimovalor centralincerteza valormáximovalorcentralincerteza ou h identificação dos períodos futuros P probabilidade de que o intervalo de previsão contenha o valor que de fato ocorrerá no futuro F previsão forecast de demanda para um período futuro ao período atual com 1 2 3 neste caso 0 corresponde ao período atual de previsão de demando que é o período em que foi determinado o modelo F ATENÇÃO a informação do valor central sem a especificação da incerteza e da probabilidade correspondente é inconsistente e sem significado útil Quantificação da incerteza da previsão incertezac σ h onde σ h estimativa do desvio padrão da distribuição de probabilidade da previsão de demanda c multiplicador associado à probabilidade P P 60 80 95 99 c 084 128 196 258 Observe que no instante em que uma previsão é realizada estamos em tT ou 0 a previsão para um período no futuro é representado por F1 one step ahead a previsão para 5 períodos no futuro é representado por F5 e1 y1 F1 erro da previsão para um período futuro e5 y5 F5 erro da previsão para cinco períodos futuros No momento em que a previsão está sendo realizada 0 o erro da previsão e o desvio padrão da distribuição de probabilidade da previsão de demanda não são conhecidos Estas duas informações só serão conhecidas quando este período futuro for alcançado Estas informações podem ser estimadas através da análise dos dados históricos da variável de interesse e da análise de resíduos erros no passado Considere que já são conhecidos os valores históricos de yt1 a ytT então é possível construir um modelo de previsão Este modelo será utilizado para prever valores do futuro F1 F2 Mas este modelo também pode ser utilizado para prever valores do passado Ft1 FtT lembre que t é utilizado para período passado e para período futuro Os resíduos erros no passado correspondem à diferença entre o valor real da variável yt e o valor previsto pelo modelo Ft e t y t Ft A análise de resíduos permite realizar a estimativa do erro da previsão e do desvio padrão da distribuição de probabilidade da previsão de demanda para determinar a incerteza da previsão para períodos futuros A análise de resíduos também permite avaliar se o modelo de previsão é adequado Um bom modelo requer o coeficiente de autocorrelação dos resíduos é reduzido idealmente nulo a média dos resíduos é nula a variância dos resíduos é constante os resíduos apresentam distribuição normal caso 1 Determinação da incerteza para o caso em que o erro da previsão erros no futuro segue uma distribuição normal A satisfação desta condição pode ser avaliada verificando se os resíduos erros no passado seguem uma distribuição normal Para a previsão de um período no futuro 1 o desvio padrão da distribuição de probabilidade da previsão de demanda é quase igual ao desvio padrão dos resíduos Para previsões para futuros mais distantes 5 10 100 o desvio padrão dos resíduos pode ser utilizado para estimar o desvio padrão da distribuição de probabilidade da previsão de demanda desde que não haja autocorrelação dos dados caso 2 Determinação da incerteza para o caso em que não é possível aceitar que o erro da previsão segue uma distribuição normal a incerteza pode ser estimada através de uma técnica denominada bootstrap pulling ourselves up by our bootstraps Esta técnica permite estimar a incerteza futura com base nos dados históricos Segue uma descrição simplificada desta técnica O erro da previsão é definido por e τ y τ Fτ Esta equação pode ser reescrita como y τ F τ e τ Lembre que nestas equações especifica um instante no futuro e que os dados históricos correspondem aos valores em t1 tT No instante presente tT e 0 para uma previsão em um período no futuro utilizase 1 para uma previsão em cinco períodos no futuro utilizase 5 No instante presente tT ou 0 a equação anterior pode ser instanciada para um período no futuro como y τ1F τ1e τ1 onde F1 Previsão valor médio obtido com o modelo de previsão construído com os valores de yt1 a ytT e1 Erro de previsão que irá ocorrer no instante futuro 1 no instante presente quando 0 O erro ainda é desconhecido mas é possível assumir que os erros futuros serão similares aos erros passados resíduos então e1 pode receber o valor determinado pelos resíduos o resíduo em tT ou o valor médio dos resíduos entre t1 a tT y1 Estimativa do valor que a variável de interesse irá apresentar em 1 observe que este não é o valor obtido com o modelo de previsão também não é um valor real da variável y O valor da estimativa y1 pode ser incluído no conjunto de valores históricos da variável yt1 a ytT Com isto é possível atualizar o modelo de previsão que considera os valores de yt1 a ytT e y1 Com o modelo de previsão devidamente atualizado é possível realizar a previsão para mais um período para frente Considerando o instante presente 0 isto corresponde ao instante 2 a previsão é F2 porém como o modelo foi atualizado com a inclusão de y1 a previsão será realizada considerando um período para frente de 1 Observe que para obter F2 é utilizado o modelo de previsão que considera os valores de yt1 a ytT incluindo y1 Isto é diferente de obter F2 com o modelo que considera apenas yt1 a ytT É possível realizar uma estimativa para o erro futuro e2 com base nos valores de resíduo entre t1 a tT incluindo 1 Com isto é possível realizar uma estimativa de y2 Aplicando este procedimento é possível realizar a estimativa de y para valores no futuro e portanto os erros futuros Se os valores futuros de y são estimados então é possível estimar o desvio padrão da estimativa dos valores futuros de y e com isto determinar a incerteza para os valores futuros Determinação da precisão do modelo de previsão Como mencionado o resultado fornecido por um modelo de previsão inclui o valor central do intervalo de previsão e a amplitude do intervalo A amplitude do intervalo é igual ao dobro da incerteza da previsão Determinar a precisão do modelo consiste em quantificar o quanto o valor central de uma previsão para o futuro difere do valor observado que de fato ocorre quando este futuro é alcançado Não é possível esperar o futuro chegar para determinar se o modelo de previsão é apropriado ou não A escolha do modelo precisa ser realizada no presente com base nos dados do passado dados históricos Os dados históricos podem ser divididos em dois segmentos O segmento inicial yt1 a ytT e o segmento final ytT1 a ytTn Neste caso o instante atual corresponde a tTN O segmento inicial é utilizado para construir o modelo de previsão e o segmento final é utilizado para determinar a precisão do modelo O segmento final pode ser considerado como um segmento futuro ao segmento inicial Desta forma é possível conhecer o futuro relativo ao instante T Com este conjunto de dados é possível determinar diversas estatísticas que permitem quantificar a precisão do modelo e eventualmente comparar diferentes modelos para selecionar o mais apropriado Conforme definido anteriormente o erro da previsão é definido por e τ y τ Fτ Nesta equação o erro e será determinado para cada elemento do segmento final ytT1 a ytTN então teremos 1 corresponde a tT1 2 corresponde a tT2 n corresponde a tTn Para tanto será necessário determinar F1 a Fn utilizando o modelo obtido com os dados do segmento inicial yt1 a ytT A seguir são relacionadas algumas das estatísticas mais utilizadas na determinação da precisão de modelos MAEmeane τ RSMEmean MAD1 n τ 1 n eτ MAPEmean 100eτ yτ MASEmeanqτ parasérie semsazonalidade 1qτ e τ 1 T1 t2 T y t y t1 2qτ e τ 1 Tm tm1 T y t y tm MAE mean absolute error RSME root mean squared error MAD mean absolute deviation MAPE mean absolute percentage error MASE mean absolute scaled error e forecast error q scaled error para série sem sazonalidade utiliza 1 para série com sazonalidade 2 As estatísticas MAE RSME MAD são fornecidas na unidade física da variável de interesse então não permitem comparar previsões realizadas para variáveis físicas distintas As estatísticas MAPE e MASE s são adimensionais e portanto permitem realizar a comparação de variáveis físicas distintas por exemplo previsão de vendas unitárias de um determinado modelo com a previsão de faturamento total A escolha do modelo a ser utilizado deve considerar a precisão fornecida pelo mesmo Realizada a escolha de um modelo de previsão é recomendável determinar o erro alcançado para cada previsão realizada com o mesmo quando o futuro correspondente é alcançado e comparar o erro obtido com o erro determinado quando o modelo foi selecionado Caso haja diferença consistente e persistente significa que houve mudança no padrão de comportamento da variável para a qual está sendo realizada previsão e que é necessário selecionar outro modelo mais apropriado Exemplo goog200 pacote fpp2 Closing stock prices of GOOG from the NASDAQ exchange for 1000 consecutive trading days between 25 February 2013 and 13 February 2017 Adjusted for splits goog200 contains the first 200 observations from goog For stock market prices and indexes the best forecasting method is often the naïve method insira o código abaixo em um RScript e realize a execução linha a linha acompanhe os comentários que são realizados com relação aos resultados obtidos carregar o pacote fpp2 libraryfpp2 realizar a representação gráfica dos dados autoplotgoog200 realizar a previsão utilizando o modelo naive com intervalo de previsão determinado assumindo distribuição normal do erro caso 1 naivegoog200 análise de resíduos carrega o pacote tsbox librarytsbox conversao de formato de variáveis goog200df tsdfgoog200 y goog200dfvalue determinação manual dos resíduos para o modelo naive residuo yt yt1 residuo seqnrow 199 ncol 1 soma 0 fori in 2200 residuoi yiyi1 soma soma residuoi MediaResiduo soma199 plotresiduo determinação automática de residuos res residualsnaivegoog200 representação gráfica dos resíduos plotres determinação e representação gráfica do coeficiente de correlação dos resíduos ggAcfres ggtitleACF of residuals determinação do valor médio dos resíduos MediaRes meanres determina o histograma dos residuos gghistogramres ggtitleHistogram of residuals determina resíduos avalia autocorrelação e representa o histograma dos resíduos checkresidualsnaivegoog200 realizar a previsão utilizando o modelo naive com intervalo de previsão determinado com a técnica bootstrap caso 2 ModeloNaiveBootStrap naivegoog200 bootstrapTRUE determina resíduos avalia autocorrelação e representa o histograma dos resíduos ModeloNaiveBootStrap checkresidualsnaivegoog200 bootstrapTRUE realiza previsão utilizando o modelo simple exponential smoothing SES modeloSES sesgoog200 realiza previsão utilizando o modelo Holts linear trend method holt modeloHolt holtgoog200 realiza a representação gráfica da previsão utilizando diferentes métodos com identificação do valor central e do limite de incerteza autoplotnaivegoog200 autoplotsesgoog200 autoplotholtgoog200 determina a precisão dos modelos aos dados utilizados especifica o segmento inicial e final de goog200 SegmentoInicial windowgoog200start 1 end 180 SegmentoFinal windowgoog200start 181 end 200 realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo naive PrevisaoNaive naiveSegmentoInicialh20 PrevisãoNaive é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoNaiveTS PrevisaoNaivemean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoNaivedf tsdfPrevisaoNaiveTS ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoNaivedftime y PrevisaoNaivedfvalue colorredlinetype1 labstitle Determinação da precisão do modelo naive realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo ses PrevisaoSES sesSegmentoInicialh20 PrevisãoSES é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoSESTS PrevisaoSESmean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoSESdf tsdfPrevisaoSESTS ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoSESdftime y PrevisaoSESdfvalue colorredlinetype1 labstitle Determinação da precisão do modelo ses realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo holt PrevisaoHolt holtSegmentoInicialh20 PrevisaoHolt é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoHoltTS PrevisaoHoltmean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoHoltDF tsdfPrevisaoHoltTS seleciona o valor superior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValSupHoltTS PrevisaoHoltupper ValSupHoltDF tsdfValSupHoltTS seleciona o valor inferior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValInfHoltTS PrevisaoHoltlower ValInfHoltDF tsdfValInfHoltTS realiza a representação gráfica da realização da previsao realizada com o modelo determinado com o segmento inicial ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoHoltDFtime y PrevisaoHoltDFvalue colorredlinetype1 geompathmappingaesx ValSupHoltDFtime y ValSupHoltDFvalue colorgreenlinetype1 geompathmappingaesx ValInfHoltDFtime y ValInfHoltDFvalue colorgreenlinetype1 labstitle Determinação da precisão do modelo Holt determina a precisão dos modelos PrecisaoNaive accuracyPrevisaoNaiveSegmentoFinal PrecisaoSES accuracyPrevisaoSESSegmentoFinal PrecisaoHolt accuracyPrevisaoHoltSegmentoFinal COMENTÁRIOS carregar o pacote fpp2 libraryfpp2 realizar a representação gráfica dos dados autoplotgoog200 realizar a previsão utilizando o modelo naive naivegoog200 observe o comportamento dos dados goog200 é uma série temporal com 200 valores armazenados Time Series Start 1 End 200 Frequency 1 realizar a previsão utilizando o modelo naive com intervalo de previsão determinado assumindo distribuição normal do erro caso 1 naivegoog200 naive é a implementação de um modelo de previsão em que F1 ytT esta função recebeu a serie temporal goog200 e realizou a previsão para 10 períodos para frente 1 a 10 para este modelo o valor da previsão para qualquer período de futuro será igual ao último valor observado t201 corresponde a 1 para este período o valor central do intervalo de previsão point forecast é 5314783 para P80 valor inferior do intervalo de previsão Lo 80 é 5235222 valor superior do intervalo de previsão Hi 80 é 5394343 a incerteza do intervalo de previsão é 159121 para P95 a incerteza da previsão é 243355 Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 201 5314783 5235222 5394343 5193105 5436460 202 5314783 5202267 5427298 5142705 5486861 203 5314783 5176980 5452586 5104031 5525534 204 5314783 5155661 5473904 5071428 5558138 205 5314783 5136880 5492686 5042704 5586862 206 5314783 5119900 5509666 5016735 5612830 207 5314783 5104285 5525280 4992854 5636711 208 5314783 5089751 5539814 4970627 5658939 209 5314783 5076101 5553465 4949750 5679815 210 5314783 5063190 5566375 4930005 5699561 quanto maior a probabilidade maior a incerteza ou seja mais amplo será o intervalo de previsão resíduos determinados manualmente através da estrutura de repetição fori in 1199 residuoi yi1yi resíduos determinados com a função residuals res residualsnaivegoog200 gráfico dos coeficientes de autocorrelação como todos os valores estão dentro do intervalo definido pelas linhas tracejadas azuis então o módulo dos coeficientes é desprezível o valor médio dos resíduos é bastante reduzido 0696 isto indica que a previsão com a aplicação deste método será satisfatória como o histograma dos resíduos é assimétrico com a cauda da direita mais longa do que a cauda da esquerda então os resíduos não possuem distribuição normal isto significa que o intervalo de previsão obtido assumindo distribuição normal do erro caso 1 não será satisfatório determina resíduos avalia autocorrelação e representa o histograma dos resíduos checkresidualsnaivegoog200 este comando realiza a avaliação de resíduos automaticamente observe a diferença entre o histograma dos resíduos e a normal aproximada para representar os valores de resíduos observe também que a cauda da direita se estende até o valor 60 devido ao outlier realizar a previsão utilizando o modelo naive com intervalo de previsão determinado com a técnica bootstrap caso 2 ModeloNaiveBootStrap naivegoog200 bootstrapTRUE observe que resultados da aplicação do modelo são atribuídos à variável ModeloNaiveBootStrap t201 corresponde a 1 para este período o valor central do intervalo de previsão point forecast é 5314783 como era esperado o valor central não foi modificado pois o modelo de previsão é o mesmo o que mudou foi o procedimento para determinar a incerteza e portanto houve alteração no valor da incerteza e do valor inferior e superior do intervalo para P80 valor inferior do intervalo de previsão Lo 80 é 5259331 valor superior do intervalo de previsão Hi 80 é 5377562 a incerteza do intervalo de previsão é 118231 Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 201 5314783 5259331 5377562 5232307 5410597 202 5314783 5232119 5395781 5200187 5463789 203 5314783 5211666 5414578 5169556 5500054 204 5314783 5194483 5431699 5146362 5548496 205 5314783 5177748 5446942 5121114 5645142 206 5314783 5161528 5460233 5095435 5780855 207 5314783 5144047 5474551 5079642 5802491 208 5314783 5136194 5488971 5059696 5836484 209 5314783 5122195 5503370 5041713 5856096 210 5314783 5110255 5519397 5024611 5868351 selecione o nome da variável ModeloNaiveBootStrap para visualizar seu conteúdo a variável possui diversos campos passando o mouse sobre os campos aparece um ícone no canto direito selecionando este ícone é insira uma linha na janela inferior esquerda com referência a este campo por exemplo ModeloNaiveBootStrapmean dando Enter o conteúdo deste campo é apresentado dando Enter no comando ModeloNaiveBootStrapmean é possível verificar o valor central do intervalo de previsão obtido como o modelo de previsão naive explore o conteúdo dos demais campos da variável ModeloNaiveBootStrap determina resíduos avalia autocorrelação e representa o histograma dos resíduos ModeloNaiveBootStrap checkresidualsnaivegoog200 bootstrapTRUE resultados da aplicação do modelo naive com a determinação da incerteza com a opção bootstrap o pacote fpp2 disponibiliza diversos modelos de previsão de demanda entre eles os modelos que serão apresentados em breve com mais detalhes simple exponential smoothing SES que corresponde ao amortecimento exponencial horizontal exponential smoothing forecast Holts linear trend method que corresponde ao simple trend smoothing forecast Holts model realiza previsão utilizando o modelo simple exponential smoothing SES modeloSES sesgoog200 realiza previsão utilizando o modelo Holts linear trend method holt modeloHolt holtgoog200 compare o valor central da previsão determinado pelos modelos naive ses holt observe que o valor central fornecido pelos modelos naive e ses são constantes para todos os períodos futuros mas são distintos entre os dois modelos o valor central fornecido pelo modelo holt obedece uma reta com inclinação nãonula isto pode ser verificado selecionando o campo mean para das variáveis ModeloNaiveBootStrap modeloSES modeloHolt no caso da figura ao lado foi selecionado modeloHoltmean isto também pode ser verificado através da representação gráfica obtida para os diferentes modelos nas figuras abaixo é possível realizar a representação gráfica dos dados históricos com os dados obtidos com a previsão realiza a representação gráfica da previsão utilizando diferentes métodos com identificação do valor central e do limite de incerteza autoplotnaivegoog200 autoplotsesgoog200 autoplotholtgoog200 ATENÇÃO observe que em modeloHolt holtgoog200 e autoplotholtgoog200 está sendo utilizada a totalidade dos dados históricos em goog200 ou seja todos os 200 valores e está sendo realizada a previsão para os períodos futuros a t200 nos procedimentos a seguir será realizada a determinação dos modelos para isto os dados históricos serão divididos em um segmento inicial para determinar o modelo de previsão e um segmento final para comparar os valores existentes com os valores obtidos com o modelo obtido e com isto determinar a precisão do modelo determina a precisão dos modelos aos dados utilizados especifica o segmento inicial e final de goog200 SegmentoInicial windowgoog200start 1 end 180 SegmentoFinal windowgoog200start 181 end 200 realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo holt PrevisaoHolt holtSegmentoInicialh20 PrevisaoHolt é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoHoltTS PrevisaoHoltmean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoHoltDF tsdfPrevisaoHoltTS seleciona o valor superior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValSupHoltTS PrevisaoHoltupper ValSupHoltDF tsdfValSupHoltTS seleciona o valor inferior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValInfHoltTS PrevisaoHoltlower ValInfHoltDF tsdfValInfHoltTS realiza a representação gráfica da realização da previsao realizada com o modelo determinado com o segmento inicial ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoHoltDFtime y PrevisaoHoltDFvalue colorredlinetype1 geompathmappingaesx ValSupHoltDFtime y ValSupHoltDFvalue colorgreenlinetype1 geompathmappingaesx ValInfHoltDFtime y ValInfHoltDFvalue colorgreenlinetype1 labstitle Determinação da precisão do modelo Holt na figura ao lado é apresentado em azul todos os dados armazenados em goog200 em vermelho o valor central da previsão obtida com o modelo holt em verde os limites superior e inferior do intervalo de previsão para 80 e 95 determina a precisão dos modelos PrecisaoNaive accuracyPrevisaoNaiveSegmentoFinal PrecisaoSES accuracyPrevisaoSESSegmentoFinal PrecisaoHolt accuracyPrevisaoHoltSegmentoFinal nestas variáveis são armazenados os valores utilizados para determinara a precisão dos modelos podese ser observado que para os segmentos inicial e final selecionados da série goog200 o modelo Holt resultou nos menores erros então este é o modelo mais apropriado para ser utilizado Previsão de demanda com R Referência Forecasting Principles and Practice 2nd ed Rob J Hyndman and George Athanasopoulos Monash University Australia httpsotextscomfpp2 Forecasting Principles and Practice 3rd ed Rob J Hyndman and George Athanasopoulos Monash University Australia httpsotextscomfpp3 Instalação da ferramenta computacional 1 Instalar o software R e o RStudio conforme as instruções em Appendix Using R Download and install R httpscranrprojectorg Download and install RStudio httpswwwrstudiocomproductsrstudiodownloaddownload 2 Instalar o pacote fpp3 utilizado na 3ª edição do livro de referência Forecasting Principles and Practice No RStudio selecionar Tools Instal Packages especificar o nome do pacote fpp3 confirmar que o campo Install Dependencies está selecionado Também pode ser instalado o pacote fpp2 que é utilizado na 2ª edição do livro de referência atualização 01junho2025 Atualmente prefiro utilizar o pacote fpp2 ao invés do fpp3 instale o fpp2 Neste documento e nos demais documentos sobre previsão de demanda com R sempre que houver referência ao pacote fpp3 estará sendo realizada referência ao fpp2 ATENÇÃO Em 08nov2023 o procedimento acima não foi executado com sucesso sendo necessário realizar a instalação com linha de comando no console installpackagesfpp2 dependencies TRUE Veja nas capturas de tela abaixo a inserção da linha de comando e o resultado da instalação com sucesso do pacote fpp2 Esperar a conclusão do processo de instalação No meu caso visualizei as informações apresentadas nas figuras abaixo No meu computador já havia sido instalado uma versão anterior do software R e do RStudio Também já havia sido instalado o pacote fpp2 que é utilizado na 2ª edição do livro Todos estes foram desinstaladas antes de realizar esta instalação trying URL httpscranrstudiocombinwindowscontrib41fpp3040zip Content type applicationzip length 421718 bytes 411 KB downloaded 411 KB package colorspace successfully unpacked and MD5 sums checked package utf8 successfully unpacked and MD5 sums checked package numDeriv successfully unpacked and MD5 sums checked package farver successfully unpacked and MD5 sums checked package labeling successfully unpacked and MD5 sums checked package munsell successfully unpacked and MD5 sums checked package RColorBrewer successfully unpacked and MD5 sums checked package viridisLite successfully unpacked and MD5 sums checked package warp successfully unpacked and MD5 sums checked package bh successfully unpacked and MD5 sums checked package glue successfully unpacked and MD5 sums checked package ellipsis successfully unpacked and MD5 sums checked package generics successfully unpacked and MD5 sums checked package lifecycle successfully unpacked and MD5 sums checked package R6 successfully unpacked and MD5 sums checked package rlang successfully unpacked and MD5 sums checked package tidyselect successfully unpacked and MD5 sums checked package vctrs successfully unpacked and MD5 sums checked package pillar successfully unpacked and MD5 sums checked package Rcpp successfully unpacked and MD5 sums checked package digest successfully unpacked and MD5 sums checked package progress successfully unpacked and MD5 sums checked package scales successfully unpacked and MD5 sums checked package slider successfully unpacked and MD5 sums checked package digest successfully unpacked and MD5 sums checked package tqgate successfully unpacked and MD5 sums checked package isoband successfully unpacked and MD5 sums checked package withr successfully unpacked and MD5 sums checked package fansi successfully unpacked and MD5 sums checked package pkgconfig successfully unpacked and MD5 sums checked package anytime successfully unpacked and MD5 sums checked package cli successfully unpacked and MD5 sums checked package crayon successfully unpacked and MD5 sums checked package dplyr successfully unpacked and MD5 sums checked package fable successfully unpacked and MD5 sums checked package tsibble successfully unpacked and MD5 sums checked package tidyr successfully unpacked and MD5 sums checked copying figures building package indices installing vignettes testing if installed package can be loaded from temporary location arch i386 arch x64 testing if installed package can be loaded from final location arch i386 arch x64 testing if installed package keeps a record of temporary installation path DONE ggplot2 The downloaded source packages are in CUsersagne1AppDataLocalTempRtmpGUVVNRdownloadedpackages Após realizar a instalação realize a limpeza do console tela do ambiente de trabalho Confirmação da instalação e carregamento do pacote fpp3 Uma vez que um pacote tenha sido instalado ele permanecerá instalado Mas toda vez que o RStudio for iniciado o pacote deve ser carregado Selecione Packages janela inferior esquerda para verificar os pacotes instalados Observe que o pacote fpp3 já está instalado Na figura abaixo foi digitado na 1ª linha ausretail isto é o nome de uma variável que contém uma série temporal que acompanha o pacote fpp3 Como resposta o RStudio informou a ocorrência do erro Error object ausretail not found Este erro ocorreu porque o pacote fpp3 ainda não foi carregado Para carregar o pacote foi digitado o comando libraryfpp3 Atualização 2024 Se estiver utilizando o pacote fpp2 carregue o pacote fpp2 e os dados ausair eou a10 libraryfpp2 Ao digitar novamente ausretail foi informado o conteúdo desta variável Para utilizar os exemplos e ferramentas referenciadas no livro Forecasting Principles and Practice será necessário carregar o pacote fpp3 toda vez que iniciar o RStudio Atualização 2024 Se estiver utilizando o pacote fpp2 carregue o pacote fpp2 e os dados ausair eou a10 ausair Time Series Start 1970 End 2016 Frequency 1 1 731870 732660 779560 938460 1066470 1105510 1086430 1130650 1212230 1302250 1364880 1321950 13 1318790 1260150 1323680 1441210 1549730 1688020 1881630 1511430 1755340 2186010 2388660 2692930 25 2688850 2883140 3007510 3095350 3018570 3157970 3257757 3347740 3902158 4138643 4159655 4465732 37 4695177 4872884 5148843 5002697 6064091 6336031 6635527 6819795 6812324 6977935 7259770 plotausair 1993 5093841 7179962 1994 5773742 6204593 1995 6088473 7416598 1996 6649078 8606937 1997 7398101 10096233 1998 8596156 10558939 1999 9933136 11532974 2000 11340151 12079132 2001 13674466 12965735 2002 13287640 15134918 2003 13669382 16503966 2004 17636728 18869325 2005 19347265 20031291 2006 23575517 23334206 2007 25250030 25806090 2008 plota10 manufacturer model displ year cyl trans drv cty hwy 1 audi a4 18 1999 4 autol5 f 18 2 audi a4 18 1999 4 manualm5 f 21 3 audi a4 20 2008 4 manualm5 f 20 4 audi a4 20 2008 4 autoav f 21 5 audi a4 28 1999 6 autol5 f 16 6 audi a4 28 1999 6 manualm5 f 18 7 audi a4 31 2008 6 autoav f 18 8 audi a4 quattro 18 1999 4 manualm5 4 18 Showing 1 to 9 of 234 entries 11 total columns Conceitos essenciais sobre o R classes e pacotes Para quem está tendo o primeiro contato com o R a apostila elaborada pela Profa Mariana Kleina é uma excelente opção A apostila está disponível em PROGRAMAÇÃO EM R EPRO7021 httpsdocsufprbrmarianakleinaApostilaEPRO7021pdf Realize a leitura rápida dos capítulos 2 3 4 e 15 para saber sobre o assunto Neste momento não é necessário dominar a fundo todas estas informações No RStudio para obter ajuda sobre algum elemento função tipo de dado classe digite o nome do elemento precedido do símbolo Na figura abaixo foi digitado ts Você também pode obter ajuda selecionando a janela Help canto inferior esquerdo da figura abaixo e digitando o nome do elemento no caso ts Para saber os argumentos de uma função digite args e o nome da função entre os parênteses Na figura abaixo foi digitado argsts Para realizar a Previsão de demanda os dados históricos estarão armazenados em séries temporais time series Leia as informações sobre a classe ts time series e o exemplo de utilização Neste momento basta saber que existe esta classe Uma visão mais detalhada sobre esta classe é apresentada em CRAN Task View Time Series Analysis Rob J Hyndma httpscranrprojectorgwebviewsTimeSerieshtml Nesta página são mencionados diversos pacotes para Forecasting and Univariate Modeling Dentre eles estão o pacote fable e o pacote forecast A 3ª edição do livro de referência adota o pacote fable enquanto que a 2ª edição do livro adota o pacote forecast Também são mencionados os pacotes Exponential smoothing e prophet dentre muitos outros São mencionadas as classes e pacotes tidverts e tsibble Novamente neste momento basta saber que existem tais pacotes e classes Se desejarmos conhecer com detalhes cada classe e cada pacote não será possível evoluir no objetivo que é realizar previsão de demanda Maiores informações podem ser obtidas digitando tsibble no RStudio Contudo é importante compreender a justificativa para uso destes pacotes e classes Eles fornecem as ferramentas necessárias para realizar o devido tratamento dos dados que serão utilizados na previsão de demanda Conforme apresentado no prefácio da 3ª edição do livro de referência quando o autor relaciona os pacotes que serão utilizados These include several tidyverse packages and packages to handle time series and forecasting in a tidy framework Para compreender esta frase é necessário compreender o conceito de tidy adotado pelo autor O livro R for Data Science Garrett Grolemund and Hadley Wickham httpsr4dshadconz define o procedimento geral para trabalhar com dados experimentais o qual pode ser representado através da figura abaixo R for Data Science Grolemund G Wickham H Este procedimento consiste das etapas Importação import de dados para o R dados estes que estavam disponíveis em arquivo banco de dados ou em aplicação web Organização tidy dos dados de forma consistente com o significado dos mesmos Em geral cada coluna fica associada a uma variável e cada linha corresponde a uma observação Transformação transform dos dados A transformação pode ser realizada para limitação do conjunto de dados à parcela de interesse determinação de novas variáveis como função das já existentes determinação de estatísticas de interesse máximo mínimo média desvio padrão coeficiente de variação exclusão ou inclusão de novos valores Visualização visualise gráfica Isto permite a compreensão de comportamentos não esperados também permite a elaboração de questionamentos sobre os dados Construção de modelos matemáticos model que permitam a representaçãodescrição dos dados Divulgação communicate dos achados para outras pessoas A representação gráfica dos dados é muito importante pois permite a identificação de características como padrão de crescimento ou de decréscimo trend sazonalidade seazon e variação cíclica ciclic Também permite a identificação de valores discrepantes outlieers do comportamento global a falta de dados ao longo do período de variação da série e a correlação entre variáveis Estas características precisam ser levadas em consideração na seleção dos métodos para transformação dos dados e para realização da previsão de futuro No âmbito da organização e transformação dos dados o livro de referência adota as classes e pacotes tsibble e tidyverts Veja maiores informações em httpstidyvertsorg Primeiros passos com séries temporais no R Uma série temporal time series é um conjunto de valores uniformemente espaçados de valores numéricos O espaçamento entre os valores corresponde a um intervalo de tempo hora dia ano Os valores estão associados a uma variável de interesse por exemplo quantidade de produtos vendidos Considere a tabela que relaciona a quantidade anual de vendas ocorridas nos anos de 2015 a 2019 Estas informações correspondem a uma série temporal Uma série temporal pode ser introduzida manualmente no R O livro adota as classes ts e tsibble para este propósito Para criar uma variável com esta série digite o comando y tsibble Year 20152019 Observation c123 39 78 52 110 index Year Neste comando o símbolo é equivalente ao símbolo ou seja a variável y recebe o conteúdo que está delimitado pelos parênteses A variável y está sendo criada e será um objeto da classe tsibble desta forma será possível utilizar os recursos desta classe A variável y tem dois campos ou variáveis O campo Year recebe o conjunto de valores que inicia em 2015 e vai até 2019 com uma variação unitária entre valores O campo Observation recebe os valores que estão entre parênteses O comando index Year especifica que a série temporal é indexada pela variável que está no campo Year obs veja a apostila da professora Mariana Kleina sobre 22 Atribuição de Variáveis e 3 VETORES para compreender os comandos anteriores O conteúdo da variável y pode ser apresentado no Console do RStudio digitando o nome da variável O conteúdo da variável pode ser representado graficamente através do comando autoploty Uma série temporal deve incluir um campo que realiza a indexação dos demais campo e que corresponde ao tempo Um objetivo tsibble pode pode incluir diversos campos cada qual associado a observações de uma determinada variável No exemplo abaixo a empresa registrou a quantidade de vendas de dois produtos distintos ao longo dos anos entre 2015 e 2019 vendas tsibble Year 20152019 ProdA c123 39 78 52 110 ProdB c250 265 295 310 330 index Year O conteúdo da variável vendas pode ser apresentado no Console do RStudio digitando o nome da variável O conteúdo da variável pode ser representado graficamente através do comando autoplotvendas O comando para representação gráfica pode especificar qual campo deve ser representado também pode especificar informações para título da representação gráfica e legenda nos eixos autoplotvendas ProdB labstitle Vendas anuais da empresa subtitle período 2015 a 2019 y Produto B unidade x ano fiscal O pacote fpp3 disponibiliza diversas variáveis que podem ser utilizadas para aplicar as técnicas de previsão de demanda Selecione Packages fpp3 para verificar quais são as variáveis Verifique que existe a variável prices Digite o nome desta variável no RStudio para verificar seu conteúdo E No RStudio dauigite o nome desta variável no RStudio para verificar seu conteúdo Esta variável contém 198 linhas cada qual associda a um ano e 7 colunas A primeira coluna armazena o valor da variável que indexa a série tempora year e as demais 6 colunas armazenam o valor das vendas de produtos eggs chicken copper nails oil wheat A variável PBS é uma variável que acompanha um dos pacotes que estão sendo utilizados Digite o nome desta variável e avalie seu conteúdo Observe que ela não é incluída na janela Enviroment canto superior direito Você pode atribuir o conteúdo de PBS para uma variável xPBS com o comando x PBS PBS é um objeto tsibble com 67596 linhas e 9 colunas A variável que realiza a indexação é Month e está na primeira coluna na forma ano mês Selecionando com o mouse o nome da variável xPBS na janela Environment é aberta automaticamente uma nova janela canto superior esquerdo que permite visualizar o valor individual de cada variável linha e coluna da variável xPBS Observe que a variável coluna ATC2 possui valores como A01 A12 z Role a barra da janela com os valores de xPBS para visualizar seus possíveis valores PBS contains monthly data on Medicare Australia prescription data from July 1991 to June 2008 These are classified according to various concession types and Anatomical Therapeutic Chemical ATC indexes Um objeto tsibble pode ser organizado tidy com funções como mutate filter select summarise A função filter pode ser utilizada para selecionar as linhas de um objeto tsibble em que uma determinada variável possui um valor específico Por exemplo pode ser utilizada para selecionar as linhas em que a variável ATC2 possui o valor A10 e atribuir este conteúdo para a variável xPBSATCA10 xPBSATC2A10 PBS filter ATC2 A10 Observe na figura abaixo que com esta operação a variável xPBSATC2A10 é um objeto tsibble com 816 linhas Observe também que todas as linhas da variável apresentam o valor A10 na coluna da variável ATC2 A função select pode ser utilizada para selecionar uma determinada coluna de um objeto tsibble Por exemplo pode ser utilizada para selecionar as colunas Month e Cost na variável objeto tsibble xPBSATC2A10 e atribuir este conteúdo para a variável xPBSATC2A10Cost Observe que no objeto PBS as colunas Concession Type ATC1 ATC2 são classificadas como Key então estas colunas também são selecionadas Isto é confirmado com o comando keyPBS xPBSATC2A10Cost xPBSATC2A10 select Month Cost keyPBS Nos exemplos anteriores a variável objeto tsibble foi obtida através de duas transformações consecutivas usando a função filter e usando a função select O mesmo resultado seria obtido usando as duas transformações de uma única vez Observe que o operador é utilizado 2 vezes x PBS filter ATC2 A10 select Month Cost Como a variável PBS utiliza 4 variáveis como Keys Concession Type ATC1 ATC2 para cada uma destas variáveis pode haver um custo correspondente A função summarise permite determinar o valor total para cada período Na figura abaixo estão apresentados os valores da variável xPBSATC2A10Cost que tem o mesmo conteúdo da variável x porém os dados foram organizados por mês Esta organização é realizada selecionando com o mouse a coluna Month Observe que na figura abaixo o mês 1991 jul aparece quatro vezes uma linha para cada combinação das variáveis key Na figura anterior na mesma variável o mês 1991 jul aparece uma única vez Desta forma como a variável xPBSATC2A10Cost possui 816 linhas a variável xTotalCost terá 8164 204 linhas xTotalCost xPBSATC2A10Cost summariseTotalCost sumCost A função summarise permite determinar diversas estatísticas a partir de variáveis já existentes Por exemplo pode ser determinado para cada mês o custo total o custo médio a variância do custo o coeficiente de variação do custo Cada uma destas estatísticas é determinada considerando as possíveis combinações das variáveis key para cada mês Como exercício determine manualmente estes valores para o mês 1991 jul e compare com o resultado determinado com a execução da função xx x summarise CustoTotal sumCost CustoMedio meanCost CustoVariancia varCost CustoCV sqrtCustoVariancia CustoMedio A função mutate permite determinar novas variáveis a partir de variáveis já existentes Por exemplo o custo total pode sofrer uma conversão de unidade conversão monetária multiplicando por um novo valor Observe que na variável xx recém determinada com a função summarise existem as 4 variáveis CustoTotal CustoMedio CustoVariancia CustoCV Com a função mutate a variável CustoReais foi incluída às variáveis recém mencionadas xxx xx mutateCustoReais CustoTotal 525 Agora é possível realizar a análise dos dados realizando a representação gráfica dos mesmos O capítulo Data Visualization do livro R for Data Science disponível em httpsr4dshadconzdatavisualisationhtml é uma boa referência sobre a representação gráfica ggplotdata xxx geompointmapping aesx Month y CustoTotal color blue shape 0 geompointmapping aesx Month y CustoMedio color red shape 1 geompointmapping aesx Month y CustoCV color green shape 2 labstitle Custos y Custo x ano mês obs geompoint usa marcadores em cada valor shape especifica o tipo de marcador ggplotdata xxx geompathmapping aesx Month y CustoTotal color blue linetype 1 geomlinemapping aesx Month y CustoTotal color red linetype 2 geomsmoothmapping aesx Month y CustoTotal color green linetype 3 labstitle Custos y Custo x ano mês obs obs geomsmooth cria uma a smooth line fitted to the data it aids the eye in seeing patterns in the presence of overplotting geompath connects the observations in the order in which they appear in the data geomline connects them in order of the variable on the x axis geomstep creates a stairstep plot highlighting exactly when changes occur linetype especifica o tipo de linha 0 blank 1 solid 2 dashed 3 dotted 4 dotdash 5 longdash 6 twodash ggplotdata xxx geomsmoothmapping aesx Month y CustoTotal color blue linetype 1 geomsmoothmapping aesx Month y CustoTotal color blue linetype 0 geompointmapping aesx Month y CustoTotal color blue shape 0 geomsmoothmapping aesx Month y CustoMedio color red linetype 2 geomsmoothmapping aesx Month y CustoMedio color red linetype 0 geompointmapping aesx Month y CustoMedio color red shape 1 geomsmoothmapping aesx Month y CustoCV color green linetype 3 geompointmapping aesx Month y CustoCV color green shape 2 labstitle Custos y Custo x ano mês Para saber mais sobre as diferentes formas de realizar a representação gráfica utilizando o pacote ggplot2 selecione Help ggplot2 e depois a função desejada Há muitas funções a serem exploradas RStudio File Edit Code View Plots Session Build Debug Profile Tools Help xPRSATC2A10 xPRSATC2A10Costxlsx Go to filefunction Addins Project None Filter manufacturer model displ year cyl trans drv cty hwy 1 audi a4 18 1999 4 autol5 f 18 2 audi a4 18 1999 4 manualm5 f 21 3 audi a4 20 2008 4 manualm5 f 20 4 audi a4 20 2008 4 autoav f 21 5 audi a4 28 1999 6 autol5 f 16 6 audi a4 28 1999 6 manualm5 f 18 7 audi a4 31 2008 6 autoav f 18 8 audi a4 quattro 18 1999 4 manualm5 4 18 Showing 1 to 9 of 234 entries 11 total columns Console Terminal Jobs R 410 Global Environment History Connections Tutorial Import Dataset 407 MB List mes es 204 obs of 1 variable Files Plots Packages Help Viewer Refresh Help Topic R Create Elegant Data Visualisations Using the Grammar of Graphics Find in Topic facetgrid Lay out panels in a grid facetwrap Wrap a 1d ribbon of panels into 2d faithful 2d density estimate of Old Faithful data fill Colour related aesthetics colour fill and alpha formatggproto Format or print a ggproto object fortify Fortify a model with data G GeomSf Visualise sf objects geomabline Reference lines horizontal vertical and diagonal geomarea Ribbons and area plots geombar Bar charts geombin2d Heatmap of 2d bin counts geombin2d Heatmap of 2d bin counts geomblank Draw nothing geomboxplot A box and whiskers plot in the style of Tukey geomcol Bar charts geomcontour 2D contours of a 3D surface geomcontourfilled 2D contours of a 3D surface geomcount Count overlapping points geomcrossbar Vertical intervals lines crossbars errorbars geomcurve Line segments and curves geomdensity Smoothed density estimates geomdensity2d Contours of a 2D density estimate geomdensity2dfilled Contours of a 2D density estimate geomdensity2d Contours of a 2D density estimate geomdensity2dfilled Contours of a 2D density estimate geomdotplot Dot plot geomerrorbar Vertical intervals lines crossbars errorbars geomerrorbarh Horizontal error bars geomfreqpoly Histograms and frequency polygons geomfunction Draw a function as a continuous curve geomhex Hexagonal heatmap of 2d bin counts Projeto Planejamento da Produção Objetivo Utilização da função Exponential smoothing forecasts disponível no pacote forecast do RStudio com a série temporal ausair disponível no pacote fpp2 do software RStudio Data da proposição 15jun2025 Data da entrega 22jun2025 Apresentação oral em sala de aula 23 e 25 de junho 2025 Cada equipe deve encaminhar por email arquivo word e excel com o relatório da execução do projeto Do email de entrega endereço de destino agnelovieiraufprbr assunto Projeto TEP25 Entrega no corpo do email devem estar relacionados em ordem alfabética todos os integrantes do grupo e respectivos GRR Descrição da atividade 1 Localizar a função holt no pacote forecast e identificar o significado dos argumentos de entrada e de saída desta função Comparar as informações apresentadas sobre a função holt com o modelo 23 Trend smoothing forecast Holts model apresentado no arquivo 104 Previsao de demanda com R parte 4 bdocx e com o conteúdo apresentado no livro referenciado na interface de ajuda desta função Seção 72 Trend methods Holts linear trend method Apresentar o comparativo na forma de tabela 2 Com relação à série de dados temporais ausair qual o intervalo dos dados dados armazenados nesta série Qual a data do dado mais antigo e do dado mais recente Qual o número de dados armazenado nesta série Apresente a representação gráfica desta série Para esta série temporal realizar a previsão com a função holt na sua forma mais básica especificando apenas os argumentos de entrada que não são opcionais Interpretar o resultado obtido Apresentar os valores de previsão obtidos na forma numérica e na forma gráfica Apresentar o valor dos coeficientes α alevel btrend determinados pela função holt Especificar o significado dos coeficientes α com relação à relevância do dado mais recente em relação ao modelo obtido na execução anterior da função holt Especificar o significado geométrico dos coeficientes alevel btrend Apresente na forma de tabela onde cada linha está associada à data dos dados armazenados nesta série temporal as seguintes informações associadas à cada coluna da tabela faça isto no Excel data valor real observado estimativa realizada pelo modelo fit fitted erro entre o valor real observado e a estimativa realizada pela função fit residuals coeficientes alevel btrend fit states desvio padrão do erro acredito que a função holt não apresenta esta informação precisa ser calculado erro amortecido acredito que a função holt não apresenta esta informação precisa ser calculado MAD mean absolute deviation amortecido tracking signal amplitude do intervalo de previsão para 80 e 95 de confidência ver arquivo 103 Previsao de demanda com R parte 3 bdocx valor máximo valor mínimo do intervalo de previsão para 80 e 95 de confidência 3 Selecione uma janela window da série temporal com início em 1970 e fim em FINAL Realize a previsão com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Para cada item 31 a 36 abaixo apresente A representação gráfica da seleção da seleção da série temporal O modelo obtido coeficientes alevel btrend e a equação a ser utilizada para realizar a previsão manual utilizando estes coeficientes Na forma de tabela valor mínimo valor central valor máximo para 80 de confidência e para 95 de confidência determinados pela função holt para 5 períodos futuros a FINAL o valor central do intervalo de previsão determinado manualmente para 5 períodos futuros a FINAL o valor real observado armazenado na série temporal ausair para 5 períodos futuros a FINAL Cada linha da tabela deve estar associada a uma data e cada coluna a uma das informações acima 31 FINAL 1986 32 FINAL 1987 33 FINAL 1988 34 FINAL 1989 35 FINAL 1990 36 FINAL 1991 4 Selecione uma janela window da série temporal com início em 1970 e fim em FINAL Realizar a previsão com a função holt especificando o valor dos coeficientes α initial a α 1 1 initial csimple b α 09 09 initial csimple c α 05 05 initial csimple d α 01 01 initial csimple e α 0 0 initial csimple Para cada item 41 a 46 abaixo apresente O modelo obtido coeficientes alevel btrend e a equação a ser utilizada para realizar a previsão manual utilizando estes coeficientes Na forma de tabela o valor real observado na série ausair iniciando em 1986 e terminando em 19865 o valor central do intervalo de previsão iniciando em 19861 e terminando em 19865 obtido com os coeficientes especificados nos itens 1 e Cada linha da tabela deve estar associada a uma data e cada coluna aos dados especificados acima 41 FINAL 1986 42 FINAL 1987 43 FINAL 1988 44 FINAL 1989 45 FINAL 1990 46 FINAL 1991 Apresente suas conclusões sobre a influência dos coeficientes α 5 Realize a previsão com a série temporal ausair com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Determine o tracking signal TS da série conforme realizado no item 2 para cada período ao longo de toda a série Copie a série temporal ausair para a variável ausairAUX Identifique a data correspondente ao dado na posição 31 da série ausair Modifique os valores de ausairAUX segundo o padrão abaixo ausairAUX31 105 ausair31 ausairAUX32 11 ausair32 ausairAUX33 115 ausair33 ausairAUX34 120 ausair34 item de iteração a Selecione a janela de ausAIR com início em 1970 e término em FINAL Realize a previsão com esta seleção com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Determine o valor central do intervalo de previsão para 1 período futuro e o tracking signal TS conforme realizado no item 2 repetição repita o item de iteração a de tal forma que final assume os valores 2000 2001 2002 até que TS 07 Modifique os valores de ausairAUX segundo o padrão abaixo ausairAUX31 095 ausair31 ausairAUX32 09 ausair32 ausairAUX33 085 ausair33 ausairAUX34 08 ausair34 item de iteração b Selecione a janela de ausAIR com início em 1970 e término em FINAL Realize a previsão com esta seleção com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Determine o valor central do intervalo de previsão para 1 período futuro e o tracking signal TS conforme realizado no item 2 repetição repita o item de iteração bde tal forma que final assume os valores 2000 2001 2002 até que TS 07 Apresente os resultados na forma de tabela Cada linha deve estar associada a uma data As colunas devem estar associadas a TS da série ausair TS da série ausairAUX com incremento do valor observado com FINAL 2000 TS da série ausairAUX com incremento do valor observado com FINAL 2001 TS da série ausairAUX com incremento do valor observado com FINAL 2002 TS da série ausairAUX com decremento do valor observado com FINAL 2000 TS da série ausairAUX com decremento do valor observado com FINAL 2001 TS da série ausairAUX com decremento do valor observado com FINAL 2002 Apresente suas conclusões sobre o TS Previsão de demanda Para o setor produtivo a previsão de demanda é realizada para elaborar o plano agregado de produção com o objetivo de estabelecer a quantidade que será vendida Os produtos podem ser classificados como tendo demanda independente eou demanda dependente Produtos com demanda independente são os produtos finais comercializados pela empresa a demanda destes produtos independe de qualquer outro produto ou componente comercializado pela empresa Produtos de demanda dependente são os componentes utilizados para compor os produtos finais estes produtos não são comercializados diretamente pela empresa Há produtos que possuem demanda independente e demanda dependente são os os componentes utilizados para compor os produtos finais demanda dependente e que também são fornecidos ao mercado como itens de reposição demanda independente Para o comércio a previsão de demanda é realizada para determinar os pedidos de compra dos produtos que serão comercializados neste caso o número de itens SKU stock keeping unit pode ser muito elevado Métodos qualitativos Predição de demanda Estimativa da demanda aplicando considerações subjetivas usualmente aplicado para novos produtos que ainda não possuam um histórico de demanda realizado Os resultados dependem do julgamento da opnião das conficções políticas e sociais das pessoas envolvidas no processo Estes métodos estão fora do escopo desta disciplina Métodos quantitativos Previsão de demanda Estimativa da demanda aplicando métodos quantitativos numéricos para determinar a demanda futura baseado na demanda que ocorreu no passado Os dados históricos são organizados na forma de séries temporais Componentes de séries temporais Em geral uma série temporal que armazena os dados históricos que serão utilizados para realizar a previsão de futuro possui diversas componentes Constante ou nível level A série temporal não apresenta um padrão de crescimento nem de redução nem de variação cíclica Há uma tendência dos valores variarem em torno de um valor médio constante ao longo de toda a série com uma certa variância Inclinação de crescimento ou redução trend slope A série temporal apresenta um padrão contínuo e constante de crescimento ou de redução Sazonalidade seasonal A série temporal apresenta um padrão de oscilação crescimento e redução que se repete como uma função do calendário anual mensal semanal estações climáticas Estas variações possuem um período ou frequência de variação contante Cíclica cyclic A série temporal apresenta um padrão de oscilação crescimento e redução que não pode ser relacionado diretamente ao calendário Estas variações não possuem um período ou frequência de variação constante Aleatória random remainder A série temporal apresenta um padrão de variação aleatória Uma estação ou período de variação corresponde a um intervalo do calendário pode corresponder a uma semana um mês um trimestre um semestre um ano uma década Há uma proporcionalidade entre a duração da estação e um período de referência do calendário Em um ciclo ocorre uma variação que se repete de tempos em tempos mas esta duração não está naturalmente relacionada com um período de referência do calendário ou não é constante Uma série temporal Xt pode ser representado pelo somatório eou o produto de componentes trend mt seasonal st e remainder et Série temporal com componentes aditivas Xt mt st et Série temporal com componentes multiplicativas Xt mt st et Exemplo Verifique os pacotes já instalados Caso ainda não estejam relacionados instale os pacotes fpp3 e ffp2 Carregue os pacotes fpp2 e ffp3 libraryfpp2 libraryfpp3 Realize a representação gráfica do conteúdo armazenado nas seguintes séries temporais autoplotgoog comentários pacote fpp2 goog Daily closing stock prices of Google Inc é possível observar comportamento de crescimento trend não identifico nem comportamento sazonal nem comportamento cíclico autoplotqauselec comentários pacote fpp2 qauselec Quarterly Australian Electricity production é possível observar comportamento de crescimento e sazonal não identifico comportamento cíclico autoplothsales comentários disponível no pacote fma The monthly housing sales show strong seasonality within each year as well as some strong cyclic behaviour with a period of about 610 years There is no apparent trend in the data over this period O autor do livro informa que há comportamento sazonal com período anual e comportamento cíclico com período aproximado entre 6 a 10 anos estes comportamentos não são facilmente identificáveis não há comportamento de crescimento ou de redução fim do exemplo Exemplo Representação gráfica de série temporal que armazena dados de diversas estações Há casos em que uma série temporal com comportamento sazonal armazena dados de diversas estações Para facilitar a identificação do comportamento em cada estação e para permitir a comparação do comportamento entre as diversas estações pode ser conveniente realizar a representação gráfica de cada estação de forma independente a10 Monthly antidiabetic drug subsidy in Australia from 1991 to 2008 disponível no pacote fpp2 conforme o autor do livro há um comportamento de crescimento trend que não é constante ou seja a inclinação aumenta com o transcurso do tempo há um comportamento sazonal que aumenta de amplitude com o transcurso do tempo há um queda brusca no valor no início de cada ano causado por subsídios governamentais a representação dos dados como função do tempo autoplota10 permite identificar parte destas características mas a representação dos dados como função do tempo separado por temporadas ou estações seazon ggseasonplota10 permite identificar com mais facilidade que a inclinação das curvas é crescente em 1991 a curva tem menor inclinação do que em 2005 a queda no início de cada ano é facilmente identificada em todos os anos sendo que o mês em que ocorre o menor número de vendas é fevereiro há um crescimento praticamente constante de fevereiro a dezembro de cada ano o ano de 2008 está representado apenas até o mês de junho e que no mês de março há uma redução mais significativa do que nos demais anos provavelmente porque os dados não foram integralmente fornecidos autoplota10 ggseasonplota10 yearlabelsTRUE yearlabelsleftTRUE ylab million ggtitleSeasonal plot antidiabetic drug sales ggseasonplota10 polarTRUE ylab million ggtitlePolar seasonal plot antidiabetic drug sales para obter este gráfico foi estabelecido polar True fim do exemplo Formatos de armazenamento de séries temporais As bases de dados e os exemplos disponíveis nos pacotes de previsão de demanda armazenam o conteúdo de séries temporais em diversos formatos e estruturas Ferramentas disponíveis em um pacote podem ser compatíveis com um formato de armazenamento e incompatíveis com outros formatos É conveniente dominar ferramentas de conversão de séries temporais entre formatos distintos O pacote tsbox permite a conversão entre diversos formatos de armazenamento de séries temporais Introduction to tsbox httpscranrprojectorgwebpackagestsboxvignettestsboxhtml The R ecosystem knows a vast number of time series standards Instead of creating the ultimate 15th time series class tsbox provides a set of tools that are agnostic towards the existing standards The tools also allow you to handle time series as plain data frames thus making it easy to deal with time series in a dplyr or datatable workflow tsbox is built around a set of converters which convert time series stored as ts xts dataframe datatable tibble zoo tsibble tibbletime or timeSeries to each other Because this works reliably we can easily write functions that work for all classes So whether we want to smooth scale differentiate chain forecast regularize or seasonally adjust a time series we can use the same commands to whatever time series class at hand And most conveniently we get a time series plot function that works for all classes and frequencies tsbox can convert time series stored as ts xts dataframe datatable tibble zoo tsibble tibbletime or timeSeries to each other nas funções abaixo o nome da função está na forma tsXXX onde o sufixo XXX especifica o formato para o qual a série temporal será transformada o conteúdo entre parênteses YYY especifica o nome da variável que armazena uma série temporal em qualquer dos formatos compatíveis o nome à esquerda do símbolo especifica o nome da variável que irá armazenar o conteúdo da série temporal no formato especificado pelo nome da função Exemplo Conversão entre diferentes formatos de armazenamento de dados Considere a série temporal elecdemand disponível no pacote fpp2 e o objeto tsibble vicelec Observe que são duas series temporais armazenadas em formatos distintos a elecdemand is a halfhourly time series matrix with three columns Demand Total electricity demand in GW for Victoria Australia every halfhour during 2014 WorkDay taking value 1 on work days and 0 otherwise Temperature halfhourly temperatures for Melbourne BOM site 086071 Format Multiple time series of class mts b vicelec is a halfhourly tsibble with three values Demand Total electricity demand in MW Temperature Temperature of Melbourne BOM site 086071 Holiday Indicator for if that day is a public holiday Format Time series of class tsibble Instale e carregue o pacote tsbox installpackagestsbox librarytsbox realize a representação gráfica das variáveis armazenadas na série temporal mts autoplotelecdemand cDemand Temperature facets TRUE usando o mesmo procedimento para realizar a representação gráfica das variáveis armazenadas na série temporal tsibble ocorre erro a função autoplot não pode ser utilizada com este tipo de dado autoplot vicelec cDemand Temperature facets TRUE Error Objects of type tbldftbldataframe not supported by autoplot realize a representação gráfica da série temporal vicelec ggplotdata vicelec geompathmapping aesx Time y Temperature color red linetype 1 geompathmapping aesx Time y Demand color blue linetype 1 obs ainda não consegui utilizar facets para representar em segmentos separados cada variável como a amplitude de Temperature e Demand são muito distintos o gráfico não permite uma boa representação a solução é realizar dois gráficos separados como nas duas linhas abaixo ggplotdata vicelec geompathmapping aesx Time y Temperature color red linetype 1 ggplotdata vicelec geompathmapping aesx Time y Demand color blue linetype 1 é possível converter um série temporal armazenada em um formato para outro formato crie a série temporal realizando a conversão de tsibble para mts vicelecAsTS tstsvicelec realize a representação gráfica das variáveis armazenadas na série temporal mts autoplotvicelecAsTS cDemand Temperature facets TRUE crie a série temporal realizando a conversão mts para de tsibble elecdemandAsTsibble tstsibbleelecdemand digite o nome das variáveis e verifique o formato de armazenamento para elecdemand vicelecAsTS vicelec elecdemandAsTsibble elecdemand e vicelecAsTS estão armazenadas no formato mts multiple time series é possível converter as variáveis Demand e Temperature nestas séries temporais para vetores XDemanda asnumeric vicelecAsTS Demand XTemperatura asnumericvicelecAsTS Temperature agora já é possível converter de um formato de armazenamento para outro e utilizar as diversas funções fim do exemplo Referências complementares Applied Time Series Analysis for Fisheries and Environmental Sciences E E Holmes M D Scheuerell and E J Ward httpsnwfsctimeseriesgithubioatsalabs 44 Correlation within and among time series httpsnwfsctimeseriesgithubioatsalabssectslabcorrelationwithinandamongtimeserieshtml Applied Time Series Analysis with R Stéphane Guerrier Roberto Molinari Haotian Xu and Yuming Zhang August 21 2019 httpssmacgroupgithubiots Chapter 3 Fundamental Properties of Time Series httpssmacgroupgithubiotsfundtimeserieshtml Identificação dos componentes das séries temporais O método quantitativo a ser utilizado para realizar uma previsão de futuro baseado em dados históricos previsão de demanda é determinado pelas componentes presentes na série temporal Desta forma é importante identificar a presença de tais componentes A identificação da componente trend pode ser realizada filtrando os dados Um filtro simples é o da média móvel A equação para um termo obtido através da média móvel de a unidades é mt 1 2a1 ia a xti Exemplo Seja Xt x11 x12 x13 x14 x15 x16 uma série temporal Seja a série temporal XM1 xm11 xm12 xm13 xm14 xm15 xm16 obtida através da aplicação média móvel de 1 unidade Nesta série xm14 x13 x14 x153 xm15 x14 x13 x163 Seja a série temporal XM3 xm11 xm12 xm13 xm14 xm15 xm16 obtida através da aplicação média móvel de 3 unidades Nesta série xm14 x11 x12 x13 x14 x15 x16 x177 fim do exemplo Exemplo Identificar e remover a componente trend de série temporal a10 usando filtro média móvel com procedimento manual Conforme mencionado em exemplo anterior a10 Monthly antidiabetic drug subsidy in Australia from 1991 to 2008 disponível no pacote fpp2 conforme o autor do livro há um comportamento de crescimento trend que não é constante ou seja a inclinação aumenta com o transcurso do tempo há um comportamento sazonal que aumenta de amplitude com o transcurso do tempo há um queda brusca no valor no início de cada ano causado por subsídios governamentais a representação dos dados como função do tempo autoplota10 permite identificar parte destas características mas a representação dos dados como função do tempo separado por temporadas ou estações seazon ggseasonplota10 permite identificar com mais facilidade que a inclinação das curvas é crescente em 1991 a curva tem menor inclinação do que em 2005 a queda no início de cada ano é facilmente identificada em todos os anos sendo que o mês em que ocorre o menor número de vendas é fevereiro há um crescimento praticamente constante de fevereiro a dezembro de cada ano o ano de 2008 está representado apenas até o mês de junho e que no mês de março há uma redução mais significativa do que nos demais anos provavelmente porque os dados não foram integralmente fornecidos abra um arquivo RScript e insira o código determina a média móvel MA1a10 maa101 MA3a10 maa103 MA9a10 maa109 MA21a10 maa1021 converte TS para data frame para poder utilizar ggplot a10DF tsdfa10 MA1a10DF tsdfMA1a10 MA3a10DF tsdfMA3a10 MA9a10DF tsdfMA9a10 MA21a10DF tsdfMA21a10 número de observaçoes na série temporal n lengtha10DFtime realiza a representação gráfica das séries temporais filtradas armazenadas no formato DF com a aplicação do filtro média móvel os primeiros a e os últimos a elementos da série filtrada não recebem valor então é realizada a representação gráfica sem tais valores ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA1a10DF2n2time y MA1a10DF2n2value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 1 ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA3a10DF4n4time y MA3a10DF4n4value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 3 ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA9a10DF10n10time y MA9a10DF10n10value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 9 ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA21a10DF22n22time y MA9a10DF22n22value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 21 determina a série temporal sem a componente trend determinada com a média móvel com a 9 inspecionando os gráfico a21 não produz um amortecimento mais significativo do que a9 mas com a21 uma parcela maior de dados é descartada do que para a9 a10SemTrendDF a10DF a10SemTrendDFvalue a10DFvalue MA9a10DFvalue exclui os últimos e os primeiros 10 elementos a10SemTrendDF a10SemTrendDFn10n a10SemTrendDF a10SemTrendDF110 ggplot geompathmapping aes x a10SemTrendDFtime y a10SemTrendDFvalue linetype 1 color red posicione o mouse no início do código e selecione Run para executar a linha correspondente o mouse avança automaticamente para a linha seguinte execute o código linha a linha e observe o resultado obtido alternativamente selecione todo o código botão direito do mouse Select All e execute Run a execução com sucesso vai gerar 5 figuras na área Plot lembre que é necessário carregar as bibliotecas com as funções e dados libraryfpp2 librarytsbox compare as curvas determinadas para filtragem do sinal a10 com média móvel com a1 a3 a9 a9 a21 com a1 o sinal filtrado azul é praticamente idêntico ao sinal não filtrado vermelho com a3 já é possível perceber um amortecimento ou redução da amplitude das variações com a9 a diferença entre o sinal filtrado e o não filtrado já é bastante nítida com a21 parece não haver ganho significativo em relação ao caso em que a9 mas o descarte de dados iniciais e finais é maior será adotado a9 com o uso deste filtro não foi possível obter uma curva sem oscilações mas é possível confirmar a presença da componente trend e que ela possui um comportamento não linear pois a inclinação da reta aumenta com o transcurso do tempo isto sugere que a componente trend possa ser aproximada por uma polinomial de 2º grau Série temporal filtrada com média móvel a 9 Série temporal filtrada com média móvel a 21 Série temporal sem a componente trend determinada com média móvel a 9 leia com atenção o código e identifique a aplicação do filtro sobre a série original para obter a componente trend a subtração da componente trend da série original para obter série com apenas as componentes sazonal e aleatória fim do exemplo Exemplo Identificar as componentes da série temporal a10 usando a função decompose O R disponibiliza funções que realizam a decomposição de séries temporais abra um arquivo RScript e insira o código abaixo decompõe a série temporal a10 utilizando a função decompose a variável obtida é uma estrutura com diversos campos a10Decomposed decomposea10 seleciona cada componente de a10 cada componente está no formato TS a10Trend a10Decomposedtrend a10Seasonal a10Decomposedseasonal a10Random a10Decomposedrandom converte do formato TS para data frame a10DF tsdfa10 a10TrendDF tsdfa10Trend a10SeasonalDF tsdfa10Seasonal a10RandomDF tsdfa10Random com a aplicação do filtro na função decompose a porção inical e final da componente trend não possui dados relevantes será excluída a porção m final e inicial de cada variável DF n lengtha10TrendDFtime m 10 a10TrendDF a10TrendDFnmn a10TrendDF a10TrendDF1m a10SeasonalDF a10SeasonalDFnmn a10SeasonalDF a10SeasonalDF1m a10RandomDF a10RandomDFnmn a10RandomDF a10RandomDF1m soma todas as componentes para comparar com a série original n lengtha10TrendDFtime inicializa a variável a10Recomposto no formato data frame a10Recomposto setNamesdataframematrixnrow n ncol 2 ctimevalue a10Recompostotime a10TrendDFtime a10Recompostovalue a10TrendDFvalue a10SeasonalDFvalue a10RandomDFvalue realiza a representação gráfica das componentes da série temporal ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10TrendDFtime y a10TrendDFvalue linetype 2 color blue labstitle Componente trend ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10SeasonalDFtime y a10SeasonalDFvalue linetype 2 color blue labstitle Componente Seasonal ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10RandomDFtime y a10RandomDFvalue linetype 2 color blue labstitle Componente Random ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10Recompostotime y a10Recompostovalue linetype 2 color blue labstitle Componente Recomposta selecione todo o código botão direito do mouse Select All e execute Run a execução com sucesso vai gerar 4 figuras na área Plot pode ser verificado que a componente trend possui um comportamento com menos oscilações do que a componente trend determinada no exemplo anterior com o filtro média móvel com a9 isto ocorre porque foi utilizado outro filtro pode ser observado que a série obtida com a adição das 3 componentes a10Recomposto reproduziu de forma bastante satisfatória a série original a10 demonstrando que não houve adulteração dos dados após executar o código você terá na janela Environment superior direita a relação de variáveis criadas selecione a10Decomposed para obter os detalhes dela na janela superior esquerda a10Decomposed é uma Lista de comprimento 6 com seis campos os campos x seasonal trend random são do tipo time series ts e contém os dados originais da variável a10 e suas componentes foi utilizada uma decomposição considerando que as componentes estão no formato aditivo type additive fim do exemplo Correlação entre variáveis O coeficiente de correlação entre duas variáveis conjunto de dados séries temporais distintas expressa a relação linear entre elas terá valor limitado ao intervalo 1 1 O valor deste coeficiente é determinado apenas pela relação linear entre as variáveis não é influenciado por relações nãolineares Se as variáveis estão perfeitamente relacionadas então r1 e a representação destas variáveis em um gráfico que representa a variável 1 no eixo horizontal e a variável 2 no eixo vertical terá todos os valores posicionados sobre uma reta que parte da origem com inclinação de 45 Para r1 significa que as variáveis estão em perfeita oposição quando a variável 1 aumenta a variável 2 diminui nesta representação os valores estarão posicionados sobre uma reta com inclinação 45 Para r0 significa que não há relação entre as variáveis neste caso haverá um grande espalhamento dos valores na representação gráfica Se duas variáveis apresentarem uma correlação forte então se for possível prever o valor de uma delas para um instante no futuro será possível estimar o valor da outra variável No exemplo abaixo temperatura ambiente e consumo de energia elétrica como no exemplo abaixo apresentaram uma relação fraca coeficiente de correlação igual a 025 então não é possível estimar o consumo de energia elétrica com base na temperatura ambiente do futuro Caso fosse identificada uma correlação forte seria possível realizar uma previsão indireta do consumo de energia elétrica com base na previsão da temperatura ambiente Exemplo Determinação do coeficiente de correlação entre variáveis e representação gráfica da relação entre as variáveis Temperatura e Demanda de energia elétrica em vicelec realize a representação gráfica das variáveis Demand e Temperatura disponíveis na série temporal vicelec utilize a variável armazenada em formato time series para poder utilizar autoplot com dois gráficos indenpendentes autoplotvicelecAsTS cDemand Temperature facets TRUE color red converta a variável vicelec do formato tsibble para o formato time series e determine os vetores XDemanda e XTemperatura determine a correlação entre Demand e Temperature utilizando as variáveis do tipo vetor vicelecAsTS tstsvicelec XDemanda asnumeric vicelecAsTS Demand XTemperatura asnumericvicelecAsTS Temperature corXDemanda XTemperatura o resultado é 02594956 há uma correlação fraca entre estas variáveis o significado de forte ou fraco depende da natureza das variáveis e do contexto realize a representação gráfica entre estas variáveis ggplotdata vicelec geompathmapping aesx Temperature y Demand color blue linetype 1 observe que há um grande espalhamento de pontos isto demonstra que não há correlação forte entre as variáveis determine a correlação de uma variável com ela mesma use a variável XDemanda corXDemanda XDemanda o resultado obtido é 1 ou seja há uma relação perfeitamente linear entre a variável e ela mesma é o resultado esperado realize a representação gráfica desta variável com ela mesma ggplotdata vicelec geompathmapping aesx Demand y Demand color blue linetype 1 como esperado os pontos estão todos dispostos sobre a diagonal a 45 pois há uma relação linear perfeita forte entre a variável e ela mesma observe que no comando para realizar a representação gráfica foi informado que os dados estão na variável vicelec e no eixo horizontal foram representados os valores na coluna Demand de vicelec e no eixo vertical também foram representados os valores na coluna Demand de vicelec nesta representação gráfica não foram utilizados os vetores XDemanda e XTemperatura o mesmo gráfico seria obtido com ggplot geompathmapping aesx XDemanda y XDemanda color blue linetype 1 mas nesta última representação gráfica os valores que foram representados nos eixos horizontal e vertical são os armazenados no vetor XDemanda determine a correlação de uma variável com o valor dela multiplicado por 1 use a variável XDemanda corXDemanda XDemanda o resultado obtido é 1 ou seja há uma relação perfeitamente linear entre a variável e ela mesma este é o resultado esperado realize a representação gráfica desta variável com o valor dela multiplicado por 1 ggplotdata vicelec geompathmapping aesx Demand y Demand color blue linetype 1 como esperado os pontos estão todos dispostos sobre a diagonal a 45 pois há uma relação linear perfeita forte mas negativa entre a variável e uma cópia dela multiplicada por 1 fim do exemplo A autocorrelação de uma variável corresponde a determinar a correlação desta variável com uma cópia dela mesma quando os valores desta cópia são deslocados defasados no tempo em relação à variável original Se a variável é Xt então uma cópia desta variável com deslocamento no tempo corresponte a Xtt Esta análise é util para determinar a sazonalidade da variável A autocorrelação pode ser avaliada com as funções acf e gglagplot Exemplo Análise de sazonalidade em função senoidal Uma senóide é um sinal periódico perfeito ótimo para utilizar como referência de análise insira o código abaixo em um arquivo R Script execute o código linha a linha posicione o mouse na primeira linha do código e selecione Run será executa apenas a linha correspondente o cursor do mouse pula para a próxima linha continue selecionando Run até atingir o final do código se preferir o executar todo o código sem avaliar o resultado individual de cada linha selecione todo o código botão direito do mouse Select All e execute o código Run inicialização de parâmetros da função senoidal Var1 T período f frequência deltat diferença entre dois valores consecutivos de t t vetor com valores de tempo n quantidade de valores no vetor t T 10 f 1T deltat 025 t seq010Tdeltatbydeltat Var1 sin2pift Var1medio meanVar1 n lengthVar1 inicialização de vetores m número desejado de coeficientes de correlação e autocorrelação m 300 RelCoefA rep0 times m RelCoefB rep0 times m RelCoefAutoCor rep0 times m Deltat rep0 times m Lag rep0times m denominador do coeficiente de autocorrelação c0 autocovariancia para defasagem nula SomaDenominador 0 for j in 1n SomaDenominador SomaDenominador Var1j Var1medio2 c0 SomaDenominador estrutura para determinar manualmente a autocorrelação da variável var 1 esta determinação é realizada mais facilmente através da função acf foi realizada desta forma para compreender a definição e auxiliar a interpretar os resultados obtidos com a função acf for k in 1m determinação de Var2 corresponde a Var1 deslocada no tempo delta tk Var2 sin2pift delta Var2medio meanVar2 coeficiente de correlação entre Var1 e Var2 determinados através de procedimentos diferentes CoefCorA corVar1 Var2 CoefCorB sumVar1Var2 n1sqrtvarVar1sqrtvarVar2 coeficiente de autocorrelação para Var1 ck autocovariancia para defasagem k SomaNumerador 0 for j in k1n SomaNumerador SomaNumerador Var1jVar1medioVar2jVar1medio ck SomaNumerador rk coeficiente de autocorrelação CoefAutoCor ckc0 RelCoefAk CoefCorA RelCoefBk CoefCorB RelCoefAutoCork CoefAutoCor Deltatk delta Lagk k determina automaticamente a autocorrelação da variável Var1 usando a função acf coefACF acfVar1 lagmax m realiza a representação gráfica da variável Var1 ggplot geompathmapping aesx t y Var1 labstitle Var1 sin2 pi f t realiza a representação gráfica dos coeficientes de correlação e autocorrelação o eixo horizontal é representado pelo valor da defasagem de tempo plotDeltat RelCoefA pch 0 col blue ylab Coef correlação xlab Tempo de defasagem s main Coef de Correlação e Autocorrelação pointsDeltat RelCoefB pch 6 col red pointsDeltat RelCoefAutoCor pch 8 col cyan realiza a representação gráfica dos coeficientes de correlação e autocorrelação o eixo horizontal é representado pelo número da componente da defasagem de tempo plotLag RelCoefA pch 0 col blue ylab Coef correlação xlab Numero da componente main Coef de Correlação e Autocorrelação pointsLag RelCoefB pch 6 col red pointsLag RelCoefAutoCor pch 8 col cyan realiza a representação gráfica do coeficiente de autocorrelação de Var1 obtido com o procedimento manual e através da função acf plotLag RelCoefAutoCor pch 8 col cyan xlab Numero da componente main Coef de autocorrelação determinado manualmente e com a função acf pointscoefACFacf realiza a representação gráfica da relação entre o número da componente e a defasagem correspondente plotLagDeltat col blue xlab Numero da componente ylab Tempo de defasagem realiza a análise de autocorrelação da função Var1 com a função gglagplo NumDadosEmUmPeríodo Tdeltat define variáveis e constroi gráfico de autocorrelação NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 20 NumLagsDesejados 20 LagsDesejados seq0NumDeLagsEmUmPeriodoNumLagsDesejados byNumDeLagsEmUmPeriodo gglagplotVar1 setlags LagsDesejados defasagem deltatLagsDesejados RelLagDefasagem matrixcLagsDesejadosdefasagemnrowlengthLagsDesejadosncol2 exclui variáveis rmNumLagsDesejados rmLagsDesejados rmdefasagem rmRelLagDefasagem define variáveis e constroi gráfico de autocorrelação NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 10 NumLagsDesejados 20 LagsDesejados seq0NumDeLagsEmUmPeriodoNumLagsDesejados byNumDeLagsEmUmPeriodo gglagplotVar1 setlags LagsDesejados defasagem deltatLagsDesejados RelLagDefasagem matrixcLagsDesejadosdefasagemnrowlengthLagsDesejadosncol2 Análise dos resultados a variável Var1 é uma senoide em vermelho CoefCorB e azul CoefCorA estão representados os coeficientes de correlação da variável Var1 em relação à variável Var2 determinados para diferentes defasagens com os dois procedimentos observe que Var1 sin2 f t e Var1 sin2 f tt onde t é a defasagem que está sendo avaliada quando a defasagem é igual a um múltiplo inteiro do período T10 então para t igual a 10 20 30 40 Var1 Var2 e o coeficiente de correlação é igual a 1 quando a defasagem é igual a um múltiplo da metade do período T10 então para t igual a 5 15 25 Var1 Var2 e o coeficiente de correlação é igual a 1 observe que o coeficiente de autocorrelação de uma variável senoidal ciano também é uma variável senoidal porém a amplitude é decrescente linearmente com o aumento da defasagem ou seja CoefAutoCorrel Amplitude sin2 f t tal que Amplitude a x b onde o coeficiente angular a é negativo obs o coeficiente de autocorrelação de uma variável linear y axb também decresce linearmente com o aumento da defasagem neste gráfico o eixo horizontal representa o número da componente enquanto que no gráfico anterior o eixo horizontal estava associado à desagem este gráfico representa o coeficiente de autocorrelação obtido com o procedimento manual e com a função acf o resultado obtido com os dois procedimentos é idêntico foram realizados os dois procedimentos para auxiliar na compreensão dos resultados disponibilizados pela função acf e na definição do procedimento relação entre o número da componente de defasagem e o tempo da defasagem resultados obtidos com a função gglagplot com NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 20 observe que para lag 0 a defasagem é nula então há uma correlação perfeitamente linear entre a variável Var1 e sua cópia defasada por t0 todos os pontos estão posicionados perfeitamente sobre a reta a 45 conforme aumenta a defasagem lag2 até lag10 aumenta o espalhamento dos dados ou seja o coeficiente de correlação entre Var1 e Var2 vai diminuindo para lag10 a representação é um círculo situação obtida para uma defasagem igual a T4 a correlação entre Var1 e Var2 é igual a zero para lag12 até lag20 o espalhamento vai sendo reduzido o coeficiente de correlação entre Var1 e Var2 vai aumentando em módulo mas com valor negativo para lag0 até lag8 a inclinação está para a reta a 45 para lag12 até lag20 a inclinação está para a reta a 45 para lag20 todos os pontos estão posicionados sobre uma reta a 45 demonstrando uma correlação linear perfeita em oposição ou seja Var1Var2 esta situação é obtida para defasagem igual a T2 para lag22 até lag30 o espalhamento vai aumentando e depois volta a diminuir para lag32 até lag40 para lag40 todos os pontos estão posicionados sobre a reta a 45 esta situação ocorre para tT relação entre o número do lag e a defasagem temporal correspondente observe que para lag10 defasagem 25 este par ocorre na linha 6 da matriz RelLagDefasagem 1 2 1 0 00 2 2 05 3 4 10 4 6 15 5 8 20 6 10 25 7 12 30 8 14 35 9 16 40 10 18 45 11 20 50 12 22 55 13 24 60 14 26 65 15 28 70 16 30 75 17 32 80 18 34 85 19 36 90 20 38 95 21 40 100 resultados obtidos com a função gglagplot com NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 10 observe que para lag0 40 80 120 160 todos os pontos estão posicionados sobre a reta a 45 isto corresponde a t 0 T 2T 3T 4T fim do exemplo Exemplo Avaliar a existência de sazonalidade na variável a10 gglagplota10 c024 observe que para lag 12 os pontos estão muito concentrados sobre a diagonal a 45 ou seja há uma relação forte da variável com uma cópia dela que esteja deslocada de 12 unidades de lag a figura indica que cada unidade de lag corresponde a 1 mês ou seja o comportamento da variável apresenta uma repetição sazonalidade a cada 12 meses para os demais valores de lag há um maior espalhamento de dados e portanto uma relação mais fraca da variável com sua cópia deslocada no tempo o comando gglagplot pode receber mais parâmetros de entrada por exemplo é possível especificar um vetor com os valores de defasagem lag gglagplota10 setlags c024 observe que para lag0 lag12 lag24 há maior concentração sobre a diagonal a 45 fim do exemplo Exemplo Análise de sazonalidade na Temperatura e Demanda de energia elétrica em vicelec insira o código abaixo em um arquivo R Script vicelec armazena dados de temperatura e demanda de energia elétrica coletados de 30 em 30 minutos nos anos de desejamos identificar se há sazonalidade na temperatura e na demanda para realizar esta análise foi determinada da temperatura média e a demanda média diárias acredito que há ferramenta específica para determinar esta informação em variável no formato tsibble mas não identifiquei tal ferramenta então determinei as médias diárias através do código abaixo para esta implementação temperatura e demanda devem estar no formato de vetor então realizei a conversão tsibble para data frame e de data frame para vetor converte vicelec do formato tsiblle para data frame com a conversao vicelecDF ficou organizada em 3 colunas id Time value as primeiras n linhas são de demanda e as últimas n linhas são de temperatura n é determinado com o procedimento abaixo vicelecDF tsdfvicelec n lengthvicelecDF 1 n n2 vicelecTS tstsvicelec determina os vetores com temperatura demanda e tempo anomesdia horaminseg XTempo vicelecDF1nTime XDemanda vicelecDF1nvalue XTemperatura vicelecDFn12nvalue inicializa vetores TempMedia seqnrow n ncol 1 DemandaMedia seqnrow n ncol 1 DataCalendario seqnrow n ncol 1 inicializa variáveis Dia asDateXTempo1 SomaTemperatura 0 SomaDemanda 0 NumDias 0 dia 0 estrutura para determinar temperatura e demanda média diárias fori in 1n if asDateXTempoi Dia SomaTemperatura SomaTemperatura XTemperaturai SomaDemanda SomaDemanda XDemandai NumDias NumDias 1 else dia dia 1 Dia asDateXTempoi TempMediadia SomaTemperatura NumDias DemandaMediadia SomaDemanda NumDias DataCalendariodia asDateXTempoi SomaTemperatura XTemperaturai SomaDemanda XDemandai NumDias 0 filtra os dados com média móvel a15 desta forma a temperatura no dia X será a soma da temperatura dos 7 dias que antecedem X mais a soma da temperatura dos 7 dias que sucedem X mais a temperatura do dia X tudo divido por 15 TempMediafiltrado maTempMedia15 DemandaMediafiltrado maDemandaMedia15 realiza a representação gráfica da temperatura conforme armazenados em vicelec ggplotdata vicelec geompathmapping aesx Time y Temperature color blue linetype 1 ggplotdata vicelec geompathmapping aesx Time y Demand color blue linetype 1 realiza a representação gráfica dos 100 primeiros valores de temperatura e demanda ggplotdata vicelec0100 geompointmapping aesx Time y Temperature color blue linetype 1 ggplotdata vicelec0100 geompointmapping aesx Time y Demand color blue linetype 1 realiza a representação gráfica da temperatura e demanda média diárias ggplot geompathmapping aesx DataCalendario y TempMedia color red linetype 1 geompathmapping aesx DataCalendario y TempMediafiltrado color blue linetype 1 labstitle Temperatura ggplot geompathmapping aesx DataCalendario y DemandaMedia color red linetype 1 geompathmapping aesx DataCalendario y DemandaMediafiltrado color blue linetype 1 labstitle Demanda realiza a representação gráfica da autocorrelação da temperatura e demanda média diária para identificar sazonalidade durante um período de 36 meses inicialmente é realizada a análise para os dados que foram filtrados NumDiasMes 30 NumMeses 36 LagsDesejados seq0NumDiasMesNumMeses by NumDiasMes deltat 1 defasagem deltatLagsDesejados RelLagDefasagem matrixcLagsDesejadosdefasagemnrowlengthLagsDesejadosncol2 gglagplotTempMediafiltrado setlags LagsDesejados labstitle Temperatura Media Filtrado vetor gglagplotDemandaMediafiltrado setlags LagsDesejados labstitle Demanda Media Filtrado vetor na autocorrelação da temperatura média diária é possível observar que para defasagem lag de 6 meses 30dias6meses lag 180 os dados estão dispostos ao longo da diagonal 45 o que representa uma autocorrelação negativa quanto mais concentrados sobre esta diagonal mais forte será esta autocorrelação este padrão se repete para 18 meses lag 540 30 meses lag 900 para defasagem de 12 meses 30dias12meses lag 360 os dados estão dispostos ao longo da diagonal 45 o que representa uma autocorrelação positiva quanto mais concentrados sobre esta diagonal mais forte será esta autocorrelação este padrão se repete para 24 meses lag isto demonstra a sazonalidade da temperatura média diária com período de variação anual na autocorrelação da demanda média diária com a defasagem mensal não foi possível identificar a concentração de dados sobre a diagonal 45 nem sobre a diagonal 45 isto demonstra que não há sazonalidade anual para esta variável poderiam ser avaliados outros padrões de defasagem diferentes do utilizado para tentar identificar sazonalidade com período diferente do anual realiza a representação gráfica da autocorrelação da temperatura e demanda média diária para identificar sazonalidade durante um período de 36 meses agora o procedimento é repetido para os dados que não foram filtrados gglagplotTempMedia setlags LagsDesejados labstitle Temperatura Media Não filtrado vetor como os dados não foram filtrados há uma maior variação da temperatura entre os dias consecutivos o gráfico de autocorrelação indica um grande espalhamento a análise da autocorreção conduz à conclusão de inexistência de sazonalidade para a temperatura média diária NÂO Filtrado gglagplotDemandaMedia setlags LagsDesejados labstitle Demanda Media Não filtrado vetor se para a demanda média filtrada o espalhamento dos dados já foi grande então para a demanda média NÃO Filtrada o espalhamento é ainda maior e leva à conclusão da inexistência de sazonalidade só por curiosidade converti os dados para o formato data frame e repeti a análise foram construidos duas variáveis uma com os dados filtrados e outra sem a filtragem as duas variáveis tem as médias diárias a visualização não ficou tão clara quanto a que foi obtida com os dados no formato vetor não incluir na versão para os alunos TempDemandaDF dataframeDataCalendarioTempMediaDemandaMedia TempDemandaFiltradoDF dataframeDataCalendarioTempMediafiltradoDemandaMediafiltrado gglagplotTempDemandaDFTempMedia setlags LagsDesejados labels TRUE labstitle Temperatura Media data frame gglagplotTempDemandaFiltradoDFTempMediafiltrado setlags LagsDesejados labels TRUE labstitle Temperatura Media Filtrado data frame gglagplotTempDemandaDFTempMedia setlags LagsDesejados labels TRUE labstitle Temperatura Media data frame gglagplotTempDemandaFiltradoDFDemandaMedia setlags LagsDesejados labels TRUE labstitle Demanda Media data frame gglagplotTempDemandaFiltradoDFDemandaMediafiltrado setlags LagsDesejados labels TRUE labstitle Demanda Media Filtrado data frame fim do segmento opcional gglagplotXTemperatura setlags LagsDesejados labstitle Temperatura a cada 30 minutos execute o código linha a linha posicione o mouse na primeira linha do código e selecione Run será executa apenas a linha correspondente o cursor do mouse pula para a próxima linha continue selecionando Run até atingir o final do código em vicelec estão armazenados os valores de Temperatura e Demanda elétrica coletados diariamente a cada 30 minutos a figura ao lado apresenta os 100 primeiros valores de temperatura ou seja os valores de temperatura dos dias 01 a 03 de dezembro de 2012 em vicelec há 105216 valores armazenados como pode ser observado há variação de temperatura ao longo do dia o que desejamos neste momento é identificar a sazonalidade anual ou seja o padrão de repetição entre 2012 2013 2014 este padrão pode ser observado na figura ao lado o que precisamos neste momento é a temperatura média diária como eu não identifiquei função específica no R para determinar a média diária de uma variável no caso temperatura e demanda elétrica em uma variável tsibble então foi implementado código que realiza esta ação na figura ao lado há a representação da temperatura média diária em vermelho obtida com o referido código podese perceber que há muita variação de temperatura de um dia para o outro para poder identificar o padrão de repetição foi realizada a filtragem da temperatura média diária em azul com um filtro média móvel a15 experimentei outros valores de a e este parece ter produzido o melhor resultado reduzindo a o efeito da filtragem desaparece e aumentando a compromete a reprodução do padrão e resulta em mais valores no início e no final da série que serão perdidos esta figura sugere que existe um padrão de repetição sazonalidade na temperatura média a figura ao lado apresenta a demanda média diária em vermelho e a demanda média diária filtrada em azul com o filtro média móvel a15 observando esta figura não é possível identificar a existência de um padrão de repetição sazonalidade esta figura apresenta o resultado da análise de autocorrelação da temperatura média diária filtrada TMDF para esta variável há um valor para cada dia então para cada mês há trinta valores desta forma lag0 lag30 lag60 corresponde a uma defasagem mensal na temperatura observase que para lag0 os pontos estão todos posicionados sobre a diagonal a 45 ou seja há uma relação linear perfeita da TMDF em relação a ela mesma este é o resultado esperado o coeficiente de correlação da TMDF em relação a ela mesma é igual a 1 conforme aumenta aumenta o espalhamento dos dados para lag90 já está quase um círculo lag90 corresponde a 3 meses ou seja 14 do ano o coeficiente de correlação da TMDF em relação a uma cópia dela defasada de 3 meses produz um coeficiente de correlação quase nulo para lag180 6 meses ou 12 do ano os pontos estão muito concentrados sobre a diagonal a 45 o espalhamento aumenta novamente para lag270 ou 34 do ano o espalhamento é bastante grande quase uma circunferência para lag0 0 ano lag360 1 ano lag720 2 anos lag1080 3 anos os pontos estão concentrados sobre a diagonal a 45 o que corresponde a um coeficiente de correlação da TMDF com uma cópia dela defasada destes períodos muito próximo a 1 para lag180 lag540 lag900 os pontos estão concentrados sobre a diagonal a 45 o que corresponde a um coeficiente de correlação da TMDF com uma cópia dela defasada destes períodos muito próximo a 1 com esta análise está confirmada a sazonalidade da temperatura média diária filtrada esta figura apresenta o resultado da análise de autocorrelação da demanda média diária filtrada DMDF observando os diversos gráficos não é possível identificar em qualquer deles uma concentração de pontos sobre a diagonal 45 ou 45 em todos eles há um espalhamento muito grande dos dados ou seja o coeficiente de correlação da DMDF em relação a uma cópia dela defasada dos diversos valores 30 dias 60 dias sempre resultou em um valor muito baixo então podese descartar a existência de sazonalidade para as defasagens avaliadas o que reforça a conclusão realizada quando foi observado o comportamento da demanda como função do tempo não está descartada a existência de sazonalidade para outros valores de defasagem esta figura apresenta o resultado da análise de autocorrelação da temperatura média diária NÃO filtrada TMDNãoF compare esta figura com a já apresentada Temperatura Media Filtrado analise a figura em que está apresentado o comportamento da temperatura média diária não filtrada em vermelho e filtrada em azul como uma função do tempo observe que sem a filtragem a variação de temperatura entre dias consecutivos é muito grande por outro lado com a filtragem dos dados a variação de temperatura entre os dias consecutivos foi bastante reduzida como a TMDNãoF apresenta uma variação muito grande os pontos sobre as figuras ao lados estão sempre muito dispersos não é possível perceber com clareza a concentração de pontos sobre as diagonais a 45 e 45 podese afirmar que para a temperatura média diária filtrada existe sazonalidade para a temperatura média diária não filtrada a sazonalidade é fraca ou quase inexistênte esta figura apresenta o resultado da análise de autocorrelação da temperatura armazenada a cada 30 minutos como esperado para lag0 os pontos estão todos concentrados sobre a diagonal a 45 mas para todos os demais lags o espalhamento dos dados é muito grande não é possível identificar concentração sobre as diagonais a 45 e 45 a análise destas duas últimas figuras destaca a importância do processamento dos dados no caso a filtragem para viabilizar a análise consistente dos mesmos Athanasopoulos G Hyndman RJ Forecasting Principles and Practice 2nd edition pag 247 Carregar o pacote fpp2 Carregar uma parcela dos dados armazenados em ausair para a variável air e realizar a previsão para 5 períodos futuros utilizando o modelo holt digite window para aprender sobre a função window A interface do RStudio pode ser organizada em 4 paineis Source Environment History Connections Tutorial Console Files Plots Packages Help Viewer Presentation Selecionar fc na janela Environment para inspecionar seu conteúdo na janela Source x armazena a série temporal selecionada basta clicar no final direito da linha e acionar Enterpara apresentar no Console os dados da série informada par armazena o conteúdo lt bt correspondentes ao primeiro período que antecede o primeiro dado da série temporal este resultado é uma estimativa realizada pelo modelo com base nos dados da série temporal selecionada Compare os valores em par com os apresentados na tabela 72 do livro fitted armazena os valores previstos pelo modelo no intervalo em que há dados da série temporal coluna Forecast da figura no livro states armazena os valores dos parâmetros level α lt trend slope bt calculados pelo modelo no intervalo em que há dados da série temporal colunas Level e Slope da figura no livro Notação do livro Notação nas notas de aula F τ abτ Neste caso Levelpara último t 7249956 Slopepara último t 2101740 Para utilizar os parâmetros determinados pelo modelo e realizar manualmente a determinação da previsão para período futuro h realizar Meanh Levelúltimo t h Slopeúltimo t Para realizar a previsão para os próximos 5 períodos futuros h assume os valores em 12345 Com a execução fc holtair 5 foi especificado para realizar a previsão para os próximos 5 períodos futuros mean armazena o valor central da previsão para períodos futuros à última observação registrada o valor nesta variável corresponde ao obtido com a aplicação da equação recém apresentada Meanh Levelúltimo t h Slopeúltimo t upper e lower armazena o limite superior e o limite inferior da previsão para períodos futuros à última observação registrada level armazena o percentual de enquadramento correspondente aos valores upper e lower mean level x upper lower autoplotfc realiza a representação gráfica da série temporal com os dados observados dados reais passados t 1 26 e a previsão para períodos futuros h 1 5
14
Planejamento e Controle da Produção (PCP)
UFPR
6
Planejamento e Controle da Produção (PCP)
UFPR
7
Planejamento e Controle da Produção
UMG
3
Planejamento e Controle da Produção (PCP)
UNIGRANRIO
2
Planejamento e Controle da Produção (PCP)
UNB
1
Planejamento e Controle da Produção
UNIVESP
2
Planejamento e Controle da Produção (PCP)
UESC
7
Planejamento e Controle da Produção (PCP)
UFPI
4
Planejamento e Controle da Produção
UNIVESP
1
Planejamento e Controle da Produção (PCP)
UTFPR
Texto de pré-visualização
Modelos básicos de previsão Conforme apresentado anteriormente em geral uma série temporal Xt pode ser representado pelo somatório das componentes trend mt seasonal st e remainder et Xt mt st et O valor destas componentes determina o padrão de comportamento da variável de interesse e portanto o modelo de previsão a ser utilizado Existem 3 padrões básicos demanda constante demanda com padrão de crescimento ou de redução demanda com sazonalidade Lembre que um modelo de previsão deve especificar um intervalo de previsão para um valor específico de probabilidade de enquadramento F τ Pvalormínimo valormáximo ou de forma equivalente o valor central do intervalo e a incerteza correspondente F τ Pvalor centralincerteza valormínimovalor centralincerteza valormáximovalorcentralincerteza ou h identificação dos períodos futuros P probabilidade de que o intervalo de previsão contenha o valor que de fato ocorrerá no futuro A família de método Exponential smoothing Os métodos de amortecimento exponencial exponential smoothing foram originalmente propostos nos anos 1950 e 1960 Há métodos apropriados para serem aplicados quando a demanda apresenta padrão constante padrão de crescimento ou de redução e padrão de sazonalidade São métodos que determinam uma média ponderada entre os dados históricos sendo que o peso é variável com a antiguidade do dado quanto mais antigo menos relevante O modelo obtido considera toda a série histórica desde o mais antigo até o mais recente mas a cada período de atualização do modelo apenas o dado mais recente e o modelo obtido na última atualização são utilizados para determinar o novo modelo Para demanda com padrão constante ou seja sem a presença nítida de uma componente trend crescimento ou redução ou seasonal sazonalidade pode ser utilizado o método Simple exponential smoothing No pacote fpp2 para o R está implementado na função ses Para demanda com padrão de crescimento ou de redução pode ser utilizado o método Trend smoothing forecast Holts model No pacote fpp2 para o R está implementado na função holt Para demanda com padrão de sazonalidade podem ser utilizados os métodos Seasonal exponentially smoothing multiplicative model e Seasonal exponentially smoothing additive model Quando a componente sazonal apresenta uma amplitude de variação fixa ao longo de toda a série o método aditivo é o mais apropriado Quando a componente sazonal apresenta uma amplitude de variação com padrão de crescimento ou de redução ao longo da série o método multiplicativo é o mais apropriado No pacote fpp2 para o R está implementado na função hw Para uma melhor compreensão dos métodos de amortecimento exponencial são apresentados outros métodos 1 Demanda constante O valor central do modelo de previsão de demanda é dado por F τ a Esta equação corresponde a equação de uma reta com coeficiente angular nulo y a bx onde b0 O coeficiente a é determinado com base nos valores históricos da variável de interesse yt1 ytT onde T corresponde ao período atual ou mais recente A aplicação deste modelo informa que o valor central da variável de interesse nos períodos futuros terá sempre o mesmo valor independente do horizonte de futuro F τ1F τ2 F τN a Conforme o método aplicado para construir o modelo de previsão podem ser utilizados todos os valores históricos apenas o último uma parcela mais recente dos dados todos os dados com grau de relevância diferenciado determinado pela antiguidade do dado Supondo que hoje a série histórica é yt1 ytT A aplicação de um método para construir o modelo de previsão irá estabelecer um determinado valor para o coeficiente ahoje No período seguinte a série histórica receberá mais um valor yt1 ytT ytT1 pois amanhã será conhecido mais um valor da variável de interesse Observe que yt1 ytT são os valores da série históricas conhecidos até hoje ytT1 é o valor que será recebido no período seguinte Neste momento amanhã a aplicação do mesmo método para construir o modelo de previsão poderá determinar um novo valor para o coeficiente aamanhã Conforme passa o tempo o modelo de previsão o valor do coeficiente ahoje aamanhã pode mudar A incerteza do intervalo de previsão também é determinada com base nos valores históricos Quanto maior a probabilidade de enquadramento e quanto mais distante o horizonte de previsão maior será a incerteza e portanto mais amplo será o intervalo valor mínimovalor máximo A determinação da incerteza é realizada com base nos resíduos erro de previsão referente aos períodos passados e no desvio padrão dos resíduos Há diversos métodos para determinar o valor central do intervalo de previsão A incerteza será determinada sempre através do mesmo procedimento conforme apresentado em Quantificação da incerteza Para cada método de determinação do valor central há um procedimento para determinação do desvio padrão dos resíduos Avaliação da adequação dos dados históricos para realização da previsão de demanda constante Independente do modelo que será utilizado para realizar a previsão é necessário que haja compatibilidade entre os dados históricos e o modelo selecionado A avaliação desta compatibilidade para os modelos de demanda constante pode ser realizada avaliando o coeficiente de variação CV dos dados históricos CV desvio padrão valor médio Na figura abaixo são apresentadas diversas curvas com valores de CV distintos com valor médio igual a 10000 Quanto menor for o valor de CV maior a densidade de dados em torno do valor médio Quanto maior for o valor de CV mais dispersos estarão os dados experimentais Compare CVs from 015 to 2 CV 015 CV 03 CV 05 CV 07 CV 1 CV 15 CV 2 Conforme httpsblogarkievacomdoyouusecoefficientofvariationtodetermine forecastability para CV 03 os dados históricos estão muito concentrados em torno do valor médio o conjunto de dados históricos é apropriado para aplicar métodos de previsão de demanda constante para CV 07 os dados históricos estão muito dispersos o conjunto de dados históricos não é apropriado para aplicar métodos de previsão de demanda constante Os limites 03 e 07 são valores empíricos 11 Método ingênuo naive Utiliza apenas o último dado observado O coeficiente a é igual ao último valor observado da variável de interesse a ytT e t y t F t y t a s t1 N et 2 N1 A incerteza será determinada com base no desvio padrão s dos resíduos et a previsão para os períodos futuros será o mesmo valor independente do período futuro yt valor realizado no último período passado Ft valor previsto para o último período passado et resíduo da previsão para o último período passado s desvio padrão dos resíduos determinado considerando todos os valores de et passados para determinar este valor não é necessário armazenar e processar todos os dados históricos basta armazenar o valor de s determinado no período passado o número de valores considerado até o período passado N e o valor de et determinado para o período em questão 12 Média aritmética simples envolvendo todos os elementos da série histórica horizontal forecast Utiliza todos os dados históricos conhecidos no momento da construção do modelo a 1 N t1 T yt e t y t F t y t a s t1 N et 2 N1 Observe que o procedimento para determinar o coeficiente a é distinto do procedimento empregado no método naive mas o procedimento para determinar o desvio padrão dos resíduos é o mesmo Nas equações anteriores modelo 11 e 12 N especifica a quantidade de observações realizadas ao longo de toda a série histórica a cada período de atualização do modelo o valor de N é incrementado Observe que na construção de uma regressão linear para minimização do somatório do erro quadrático método dos mínimos quadrados y a bx se é especificado que o coeficiente angular é nulo b 0 então o coeficiente linear é igual à média aritmética simples portanto o modelo 12 é equivalente ao método dos mínimos quadrados quando é especificado que b0 13 Média móvel envolvendo apenas os últimos mais recentes N elementos da série temporal horizontal moving average forecast Apenas os N elementos mais recentes dos dados históricos são utilizados a 1 N tT N T yt Na equação anterior N assume um valor constante préestabelecido Se a cada período de atualização do modelo os dados mais antigos forem eliminados da série histórica preservando apenas os N mais recentes e fazendo com que o mais antigo corresponda a t1 e o mais recente corresponda a tT então a equação pode ser reescrita como a 1 N t1 T yt Como a série histórica já considera apenas os últimos N valores então o resíduo et e seu desvio padrão s serão determinados com o mesmo procedimento e t y t F t y t a s t1 N et 2 N1 Start d 0 For τ 1 to N xτ integerfτ d 05 d d fτ xτ next τ End 14 Média móvel ponderada com atribuição de peso proporcional ao período envolvendo apenas os últimos mais recentes K elementos da série temporal horizontal discount forecast Corresponde a uma média ponderada tal que o peso atribuído aos dados históricos sofre uma redução proporcional à antiguidade do período Quanto mais antigo o valor do dado histórico menor sua influência na determinação dos valores futuros a t1 N y t wt t1 N wt Observe que na equação anterior a cada período de atualização do modelo os dados mais antigos são eliminados da série histórica preservando apenas os N mais recentes e fazendo com que o mais antigo corresponda a t1 e o mais recente corresponda a tT e t y t F t y t a s t1 N w t et 2 t1 N wt Uma possibilidade de definição do peso pode ser dada por w t β N t Nestas equações N quantidade de períodos que é efetivamente utilizada para determinação da média ponderada wt peso atribuído ao período t coeficiente de redução dos períodos passados discount weight 0 0 Neste modelo é necessário estabelecer o número de períodos N e o coeficiente A figura abaixo apresenta os valores do peso wt para N 10 com 03 figura da esquerda e 09 figura da direita N 10 e 03 N 10 e 09 1 2 3 4 5 6 7 8 9 10 0 01 02 03 04 05 06 07 08 09 1 1 2 3 4 5 6 7 8 9 10 03 04 05 06 07 08 09 1 Para N 10 e 03 no período atual t 10 o peso atribuído à demanda realizada é unitário para a demanda realizada 4 períodos no passado ao atual t6 o peso atribuído é reduzido para 810103 para a demanda realizada 10 períodos no passado t1 o peso atribuído é reduzido para 197105 ou seja praticamente zero o somatório dos pesos é igual a 14286 esta combinação de parâmetros produz uma redução muito brusca do peso atribuído aos períodos passados ver figura abaixo à esquerda Para N 10 e 09 a redução dos pesos é menos abrupta quase linear 15 Amortecimento exponencial horizontal exponential smoothing forecast Corresponde a uma média ponderada que considera a influência de TODOS os elementos da série histórica na determinação da média ponderada A grande vantagem deste método em relação aos métodos anteriores reside no fato de que apenas o último dado histórico ytT e a última previsão de demanda atT1 precisam ser armazenados todos os demais valores da série histórica podem ser descartados mas a influência deles será preservada na determinação dos valores futuros O modelo é determinado por a t α y t 1α a t1 e t y t F t y t a v t α et 21α vt1 svt onde coeficiente de amortecimento 0 1 tipicamente 01 O coeficiente de amortecimento estabelece a importância relativa que é estabelecida à demanda realizada nos períodos mais recentes em relação à demanda realizada nos períodos anteriores para 1 a previsão de demanda é realizada considerando apenas a demanda realizada no último período e ignorando os dados históricos isto corresponde ao modelo naive para 0 a previsão de demanda atribui menor importância para o realizado nos períodos mais recentes e considera o efeito de períodos mais antigos Observe que et é determinado considerando apenas o valor de et obtido entre o último valor observado da variável de interesse ytT e a previsão correspondente atT Seja a equação de uma reta y a bx onde a coeficiente linear ponto no eixo y onde a reta intercepta o eixo vertical b coeficiente angular da reta Se for considerado que a demanda é constante o coeficiente angular da reta deve ser nulo Este modelo corresponde a equação de uma reta com coeficiente angular nulo reta horizontal É aplicado se a demanda é considerada constante ou seja sem padrão de crescimento ou redução trend e sem padrão de sazonalidade A equação abaixo corresponde ao coeficiente linear da reta que está sendo determinada pelo modelo de previsão Este coeficiente possui duas componentes a t α y t 1α a t1 A componente yt corresponde à demanda realizada no período t ponderada pelo coeficiente A componente 1 at1 corresponde à previsão de demanda realizada ao final do período t1 ponderada pelo coeficiente 1 Esta ponderação e 1 estabelece a importância que é estabelecida para o valor mais recente da demanda ytT em relação aos valores anteriores Seja tT o momento atual mais recente Para atualizar o modelo ao final do período tT ou seja determinar atT é necessário conhecer a demanda vendas efetivamente realizada no período tT ytT bem como a previsão de demanda realizada ao final do período anterior atT1 A demanda efetivamente realizada nos períodos anteriores ao período tT está incorporada no valor da previsão de demanda realizada ao final do período anterior atT1 Supondo que você ainda não utiliza este modelo e que o momento atual é t1 Neste momento você conhece yt1 mas não conhece at0 pois você ainda não utiliza o modelo Uma possibilidade é assumir que a previsão de demanda que teria sido realizada ao final do período t0 é igual a demanda efetivamente realizada no período t1 ou seja at0 yt1 Isto resulta em uma imprecisão do método mas em poucos períodos após t1 o peso atribuído a at0 será desprezível Para minimizar esta imprecisão é possível adotar nos períodos iniciais um valor do coeficiente alfa determinado pela equação α tmaximoα 1 t Exemplo de quantificação da imprecisão causada por assumir at0 yt1 a t10α y t10 1α a t9 a t9α y t91αat8 a t2α y t21α at1 a t1α y t11αat0 comaaproximação sugerida a t1α y t11α yt1 Realizando a substituição de at1 na equação de at2 de at2 na equação de at3 e assim sucessivamente resulta at10 10 yt10 11 yt9 12 yt8 19 yt1 110at1 para n elevado 1n 0 e portanto a estimativa inicial de at0 é irrelevante Considere o caso em que 03 e n10 o peso 1n atribuído a cada valor de demanda yt10 a yt1 e à previsão de demanda at1 são dados pelos pontos representados na figura abaixo at10 10 yt10 11 yt9 12 yt8 19 yt1 110at1 Algoritmo para arredondamento do erro acumulado cumulativerounding algorithm Nos diversos modelos de previsão o valor da previsão raw forecast pode ser um valor real 1 2 3 4 5 6 7 8 9 10 período t 0 005 01 015 02 025 03 peso do período Para o caso em que o número de vendas é um valor inteiro é recomendável realizar o arredondamento da previsão de demanda integer forecast Quando a previsão de demanda deve ser realizada para diversos períodos futuros em relação ao período t ou seja para os períodos t1 t2 t3 t tN deve ser utilizado o algoritmo abaixo onde período futuro ao período t em cujo final foi realizada a determinação da previsão da demanda f valor da previsão de demanda para o período obtido com o modelo de previsão de demanda x valor arredondado para inteiro conforme a equação apresentada no algoritmos Supondo que a previsão para os períodos futuros raw forecast é f 875 a aplicação do algoritmo acima resulta nos seguintes valores de previsão de demanda integer forecast Tracking signal Tracking signal é utilizado para monitorar a qualidade do resultado obtido com a aplicação do método de previsão de demanda se o valor de tracking signal é superior a 07 então o usuário pode ter 95 de certeza na hipótese de que o processo de previsão de demanda está fora de controle inconsistente devido a uma elevação atípica da demanda possivelmente causado por algum dos fatores abaixo fornecedor concorrente não conseguir suprir sua cota de participação no mercado resultando em incremento de vendas dos demais concorrentes alta nas vendas do produto causado por uma fator imprevisto por exemplo pane no sistema elétrico resulta em maior consumo de baterias produto similar saiu do mercado ou deixou de ser atrativo a empresa do produto concorrente foi denunciada por uso de mão de obra escrava se o valor de tracking signal é inferior a 07 então o usuário pode ter 95 de certeza na hipótese de que o processo de previsão de demanda está fora de controle inconsistente devido a uma redução atípica da demanda possivelmente causada pela entrada de um novo produto similar ou de um novo fornecedor no mercado Tracking signal é determinado pela razão entre o somatório do erro acumulado e o mean absolute deviation MAD Com a aplicação do amortecimento exponencial os valores dos períodos anteriores de demanda Di e previsão de demanda Fi não precisam ser armazenados São armazenados apenas os valores do período mais recente Neste caso pode ser utilizada a relação entre o erro amortecido e o MAD amortecido Em geral o parâmetro é igual ao parâmetro também costuma ser utilizado 02 independentemente do valor de e t y t Ft e tα e t 1α et1 MAD t α e t 1α MADt1 TS et MAD t onde et erro para o período t yt demanda que de fato ocorreu no período t1 Ft previsão de demanda realiada ao final do período t1 para o período t et erro amortecido no período t MADt MADmean absolute deviation amortecido para o período t como função do erro para o período t e do MAD amortecido determinado ao final do período t1 para o período t TS tracking signal 2 Demanda com padrão de crescimento ou redução O valor central do modelo de previsão de demanda é dado pela equação de uma reta com coeficiente linear a e coeficiente angular b F τ abτ onde período no futuro ao instante atual 21 Trend regression forecast Este método estabelece a equação da reta aplicando o método dos mínimos quadrados para os últimos N períodos de demanda realizada atribuindo o mesmo peso a cada um dos períodos passados Da mesma forma que nos modelos Média móvel envolvendo apenas os últimos mais recentes N elementos da série temporal horizontal moving average forecast e Média móvel ponderada com atribuição de peso proporcional ao período envolvendo apenas os últimos mais recentes K elementos da série temporal horizontal discount forecast a cada período de atualização do modelo os dados mais antigos são eliminados da série histórica preservando apenas os N mais recentes e fazendo com que o mais antigo corresponda a t1 e o mais recente corresponda a tT A cada período de previsão é obtida uma nova equação de reta que minimiza o erro quadrático do conjunto de N períodos considerados b t1 N y t t1 N tN t1 N y t t t1 N t 2 N t1 N t 2 a t1 N y t b t1 N t N e t y t F t y t abt s t1 N et 2 Observe que no período tT é determinado o modelo de previsão para o futuro ou seja os coeficientes a e b Com estes coeficientes é possível determinar o valor central da previsão para os períodos futuros A incerteza do intervalo determinada no período tT para os períodos futuros é realizada com os N valores de et obtidos com os N valores passados de yt e o valor Ft a bt que o modelo obtido neste período teria previsto como o valor de demanda para estes N períodos passados O resíduo et e o desvio padrão do resíduo st são utilizados na determinação da incerteza conforme apresentado em Quantificação da incerteza 21 Trend discount forecast Este método é similar ao anterior porém é atribuído um peso wt ao erro de previsão et realizado a cada período e o objetivo é minimizar o somatório do erro quadrático método dos mínimos quadrados b t1 N y t w t t1 N t wt t1 N wt t1 N y t t wt t1 N t wt 2 t1 N w t t1 N t 2wt a t1 N y t wt b t1 N t wt t1 N wt e t y t F t y t abt s t1 N w t et 2 23 Trend smoothing forecast Holts model Para demanda com padrão de crescimento ou redução o valor central do modelo de previsão de demanda é dado pela equação de uma reta com coeficiente linear a e coeficiente angular b F τ abτ Conforme discutido na apresentação do método Amortecimento exponencial horizontal exponential smoothing forecast aplicável para o caso em que a demanda é considerada constante sem padrão de crescimento ou de redução a equação da reta que realiza a previsão de demanda possui coeficiente angular nulo e o coeficiente linear é dado por a t α y t 1α a t1 Para o caso em que a demanda apresenta um comportamento de crescimento ou redução o coeficiente linear at e o coeficiente angular bt são determinados a cada período por a t α y t 1α at1bt1 b t β a tat11β bt1 De forma similar ao realizado no modelo Trend regression forecast no período tT é determinado o modelo de previsão para o futuro ou seja os coeficientes a e b Com estes coeficientes é possível determinar o valor central da previsão para os períodos futuros com a equação F τ abτ A incerteza do intervalo determinada no período tT para os períodos futuros é calculada empregando os coeficientes at1 e bt1 determinados no período anterior e o valor atual yt Com estas informações são calculados o resíduo et e o desvio padrão do resíduo st A determinação da incerteza é realizada conforme apresentado em Quantificação da incerteza e t y t F t1 y ta t1b t1 s t α et 21α st1 2 Interpretação geométrica do modelo Considerando a previsão para períodos futuros o período atual t pode ser considerado como 0 desta forma t período em que está sendo realizada a determinação do modelo portanto 0 at coeficiente linear da reta nível em 0 ou estimativa do nível no período t bt coeficiente angular da reta inclinação em 0 ou estimativa da inclinação no período t at1 estimativa do nível realizada ao final do período t1 bt1 estimativa da inclinação realizada ao final do período t1 yt demanda realizada no período t Este método requer dois coeficientes de amortecimento coeficiente de amortecimento do nível level coeficiente de amortecimento da inclinação slope Exemplo Interpretação geométrica do modelo Denominemos o período atual como t10 e portanto o período anterior como t9 Supondo que no período anterior foi atualizado o modelo de previsão determinando os coeficientes at9 3 bt9 5 Naquele momento quanto t9 foi obtido o modelo de previsão para os períodos futuros F a b 3 5 Então foi possível realizar a previsão para um período para frente 1 ou seja foi possível realizar a previsão para o período atual F1 Ft10 3 5 8 Mas o que de fato acontece no momento atual yt10 pode ser diferente do previsto O valor efetivamente obtido para yt10 e os valores dos coeficientes e irão determinar o o modelo que será obtido no momento atual para realizar as previsões para o futuro Agora serão analisados dois casos Caso 1 O valor dos coeficientes e são elevados privilegiando o último valor observado em detrimento dos valores históricos Assumindo que 09 09 11 O valor observado de yt10 é maior do que o valor previsto pelo modelo Assumindo que yt10 10 12 O valor observado de yt10 é menor do que o valor previsto pelo modelo Assumindo que yt10 6 Caso 2 O valor dos coeficientes e são reduzidos privilegiando os valores históricos em detrimento do último valor observado 01 01 21 O valor observado de yt10 é maior do que o valor previsto pelo modelo Assumindo que yt10 10 22 O valor observado de yt10 é menor do que o valor previsto pelo modelo Assumindo que yt10 6 Nas figuras abaixo linha azul contínua modelo determinado no período anterior at1 bt1 este modelo tem validade de aplicação até que um novo modelo seja determinado linha azul tracejada modelo determinado no período anterior at1 bt1 como já foi determinado o novo modelo então ele não tem mais validade de aplicação sua apresentação é apenas para comparação gráfica linha verde contínua modelo determinado no período atual at bt este passa a ser o modelo válido a partir do momento atual linha verde tracejada modelo determinado no período atual at bt no período anterior este modelo ainda não havia sido determinado sua apresentação é apenas para comparação gráfica círculo vermelho em 0 valor real observado da variável no período atual yt10 asterisco vermelho em 0 valor previsto para a variável no período atual pelo modelo determinado no período anterior Ft10 losango preto em 1 coeficiente linear do modelo determinado no período anterior at 1 losango preto em 0 coeficiente linear do modelo determinado no período atual at caso 11 09 09 yt10 10 caso 21 01 01 yt10 10 caso 12 09 09 yt10 6 caso 22 01 01 yt10 6 Para o caso 1 o coeficiente linear do modelo determinado no período atual at está muito próximo do valor yt10 o que demonstra que o valor atual foi privilegiado em detrimento da informação histórica Para o caso 2 o coeficiente linear do modelo determinado no período atual at está muito próximo do valor previsto pelo modelo determinado no período anterior Ft10 o que demonstra que a informação histórica armazenada no modelo determinado no período anterior foi privilegiada em detrimento do valor atual O coeficiente angular de uma reta é determinado pela razão entre a variação no eixo vertical e a variação no eixo horizontal Entre o período anterior e o período atual a variação no eixo horizontal é igual a unidade A variação no eixo vertical corresponde à diferença atat1 Para o caso 2 observase que a inclinação do novo modelo linha contínua verde é praticamente igual à inclinação do modelo anterior linha tracejada azul o que demonstra que a informação histórica armazenada no modelo determinado no período anterior foi privilegiada em detrimento do valor atual Para o caso 1 observase que a inclinação do novo modelo linha contínua verde é praticamente igual à inclinação entre at1 e at o que demonstra que o valor atual foi privilegiado em detrimento da informação histórica fim do exemplo Assim como no modelo amortecimento exponencial aplicável para demanda constante nos primeiros períodos de aplicação deste método é necessário realizar a inicialização dos parâmetros do modelo Desta forma para o primeiro período de previsão são adotados a1 x1 b1 0 e1 y1 s1 α e12 Além disto o parâmetro alfa pode ser corrigido como α max α 1t desta forma α1 1 α2 05 α3 0333 a redução do parâmetro α período a período é realizada até que α 1t quando o parâmetro assume um valor constante para os demais períodos αt α Exemplo ausair pacote fpp2 Total annual air passengers in millions including domestic and international aircraft passengers of air carriers registered in Australia 19702016 como pode ser observado na figura ao lado o número total de passageiros apresenta um padrão de crescimento esta série temporal pode ser avaliada com o modelo hol ao digitar o comando que realiza a chamada à função holt são apresentados os argumentos da função os argumentos e exemplo de utilização também podem ser obtidos digitando holt o valor dos coeficientes alfa e beta podem ser especificados manualmente mas esta função permite que seja realizada uma estimativa otimizada dos mesmos e que minimize os resíduos para tanto é possível estabelecer o valor optimal ao argumento de entrada initial conforme abaixo ModeloHolt holtausairinitial optimal com este procedimento os coeficientes alfa e beta foram estabelecidos em 08476 e 00969 respectivamente observe que alfa 08476 privilegia o valor mais recente coef linear em detrimento dos valores históricos enquanto que beta00969 privilegia os valores históricos em detrimento do valor mais recente coef angular adotando os valores otimizados para alfa e beta é obtido o resultado apresentado na figura ao lado o qual foi obtido com o comando autoplotholtausairinitial optimal nesta figura a linha azul escuro representa o valor central o intervalo azul escuro especifica o intervalo de predição para 80 e o intervalo azul claro especifica o intervalo de predição para 95 ainda adotando os valores otimizados para alfa e beta o valor central e os valores superior e inferior dos intervalos de previsão para 80 e 95 são obtidos com o comando holtausairinitial optimal valores distintos de alfa e beta podem ser especificados por exemplo 05 para cada um deles com isto a previsão resulta conforme a tabela ao lado holtausair alpha 05 beta 05 observe que para alpha 05 beta 05 o valor central em 2017 é igual a 7238 enquanto que adotando os valores otimizados de alfa e beta o valor central em 2017 é igual a 7474 para holtausair alpha 05 beta 05 FT2017 7238440 FT2018 7336431 com isto e possível determinar os coeficientes a b do modelo FT2017 a b FT2018 2 b2 b 0979910 a 71404490 com estes valores é possível confirmar que FT2021 F5 a 5b 76304040 observe que o último valor para ausair ocorre em 2016 e yt20167259770 observe que FT2016 F0 a 0b 71404490 que é diferente de yt2016 7259770 3 Demanda com sazonalidade Para representar a sazonalidade os modelos adotam um coeficiente de sazonalidade rt cuja amplitude varia aumentando e diminuindo adequadamente No modelo aditivo o coeficiente de sazonalidade é adicionado à equação de uma reta F τ abτ rt τ No modelo multiplicativo o coeficiente de sazonalidade é multiplicado à equação de uma reta F τ abτ r tτ Para cada modelo os coeficientes a b r são determinados com equações próprias 31 Seasonal exponentially smoothing multiplicative model HoltWinters model Neste modelo a previsão de demanda para períodos futuros é determinada por F τ abτ r tτ Onde t período atual de revisão do modelo de previsão de demanda períodos futuros para previsão de demanda a nível level no período atual b inclinação slope no período atual a b padrão de crescimento trend equação da reta que permite determinar o valor de demanda para períodos futuros sem considerar a sazonalidade modelo de Holt trend smoothing forecast conforme apresentado anteriormente rt índice de sazonalidade seasonal ratio para o período futuro especifica como a demanda varia período a período em relação ao valor determinado pelo padrão de crescimento Se é identificada uma sazonalidade mensal então haverão doze valores de rt sendo um valor específico para cada mês do ano ou seja rjaneiro rfevereiro O conjunto de todos os valores de rt terá um valor médio unitário Se não for considerada a existência de sazonalidade então o modelo de Holt trend smoothing forecast determina que o valor central do intervalo de confiança para todos os períodos futuros terá o mesmo valor determinado por a b Ao considerar a existência de sazonalidade o modelo de HoltWinter determina valores diferenciados do valor central do intervalo de confiança para cada um dos períodos futuros se rt 1 então a demanda para o período futuro terá o mesmo valor que o determinado pela componente a b se rt 1 então a demanda para o período futuro terá um valor superior ao determinado pela componente a b se rt 1 então a demanda para o período futuro terá o um valor inferior ao determinado pela componente a b Para aplicar o modelo é necessário realizar a inicialização dos parâmetros conforme apresentado na figura abaixo a qual considera que a sazonalidade é mensal e que há 24 períodos de dados históricos armazenados por isto os valores numéricos 12 e 24 Se a sazonalidade tiver outro período trimestral quadrimestral semestral e outra quantidade de períodos armazenados o procedimento deve ser devidamente ajustado obs Neste documento a demanda tem sido representada por yt no quadro abaixo a demanda está sendo representada por xt desta forma x1 x12 representam a demanda que até então está sendo representada por y1 y12 1 X1 valor médio de demanda ao longo dos primeiros 12 períodos meses 2 X2 valor médio de demanda ao longo dos últimos 12 períodos 3 b0 estimativa do coeficiente angular da reta para o período t1 a t24 4 a0 estimativa do coeficiente linear da reta para o período t1 a t24 5 at equação que realiza a estimativa da demanda válida para os períodos passados t1 a t24 considerando as estimativas iniciais a0 e b0 determinar a demanda para cada período t1 a t24 substituindo o valor de t na equação 6 rt equação que realiza a estimativa do índice de sazonalidade válida para os períodos passados t1 a t24 determinar o índice de sazonalidade para cada período t1 a t24 substituindo os valores de xt e at na equação 7 rt valor médio estimado do índice de sazonalidade para cada período ao longo dos períodos t1 a t12 obs é recomendável definir o valor desta variável para os períodos t13a t24 como rt12 rt rt1 rt13 rjaneiro rt2 rt14 rfevereiro 8 para aplicar o modelo seria necessário conhecer a equação que realiza a estimativa da demanda item 5 para o período t0 mas para este período não há tal equação então os valores at0 e bt0 são arbitrariamente inicializados 9 nesta etapa são determinadas estimativas amortecidas dos coeficientes at bt rt para cada um dos 24 períodos passados t1 a t24 obs ao invés de utilizar a variável rt12 eu implementei uma variável rt rt12 para t1 a t24 sendo que os valores que serão utilizados para a previsão para períodos futuros são os últimos 12 valores de rt ou seja rt13 a rt24 1 X1 x1 x1212 2 X2 x13 x2412 3 b0 X2 X112 4 a0 X1 65b0 5 at a0 b0t t 1 to 24 6 rt xtat t 1 to 24 7 rt rt rt122 t 1 to 12 8 a0 a0 and b0 b0 9 Do the following for t 1 to 24 at α xtrt 1αat1bt1 bt β at at1 1βbt1 rt12 γ xtat 1γrt Após a execução do procedimento de inicialização serão determinados e armazenados os valores de at24 bt24 e os últimos 12 valores do índice de sazonalidade rt13 a rt24 os demais valores podem ser descartados a previsão para períodos futuros é realizada empregando f at24 bt24 r t 12 para realizar a previsão para o primeiro período após t24 temse que 1 então f1 at24 bt241 r t 121 observe que será utilizado rt13 segundo período após t24 temse que 2 então f2 at24 bt242 r t 122 observe que será utilizado rt14 terceiro período após t24 temse que 3 então f3 at24 bt243 r t 123 observe que será utilizado rt15 f at24 bt24 r t 12 na equação acima a componente at24 bt24 corresponde a equação de uma reta que especifica o comportamento de crescimento ou redução da demanda r t 12 corresponde a um multiplicador cujo valor varia período a período e que corrige o valor obtido com a equação da reta Após a inicialização do modelo conforme apresentado acima a cada período ocorre um novo valor de demanda e os coeficientes a b r devem ser atualizados com as equações abaixo observe que ao final do período t25 serão determinados e armazenados os valores de at25 bt25 rt25 os valor de rt13 será descartado e os valores rt14 a rt25 são os valores que deverão ser armazenados para realizar a previsão para períodos futuros No modelo multiplicativo os coeficientes a b r são determinados por a t α yt rt 1α a t1bt1 b t β a t at11β bt1 r t12 γ yt at 1γrt Referências e leitura recomendada Thomopoulos NT Demand Forecasting for Inventory Control Springer Athanasopoulos G Hyndman RJ Forecasting Principles and Practice Nau R Review of basic statistics and the mean model for forecasting Dados essenciais para aplicação dos modelos de previsão de demanda N número de períodos meses de dados históricos demanda armazenados t 1 T identificação dos períodos armazenados passados yt ou Dt valor da demanda real venda de fato realizada que ocorreu no período t passado para determinado produto ou família de produtos yt1 valor de demanda do período mais antigo armazenado ytT valor de demanda do período mais recente armazenado Resultado obtido com a aplicação dos modelos de previsão de demanda Um modelo de previsão de demanda fornece uma expectativa de valor futuro de uma variável de interesse Até que o instante no futuro seja alcançado esta é uma variável aleatória que obedece uma determinada distribuição de probabilidades Quanto mais distante for o instante futuro maior será a incerteza sobre o valor que esta variável pode assumir A expectativa de valor futuro que o modelo de previsão de demanda fornece pode ser especificado através de um intervalo de previsão prediction interval que especifica o intervalo de valores que a variável pode assumir com uma determinada probabilidade O valor futuro também pode ser especificado através do valor central do intervalo de previsão e da incerteza correspondente yT hT F τ Pvalormínimo valormáximo F τ Pvalor centralincerteza valormínimovalor centralincerteza valormáximovalorcentralincerteza ou h identificação dos períodos futuros P probabilidade de que o intervalo de previsão contenha o valor que de fato ocorrerá no futuro F previsão forecast de demanda para um período futuro ao período atual com 1 2 3 neste caso 0 corresponde ao período atual de previsão de demando que é o período em que foi determinado o modelo F ATENÇÃO a informação do valor central sem a especificação da incerteza e da probabilidade correspondente é inconsistente e sem significado útil Quantificação da incerteza da previsão incertezac σ h onde σ h estimativa do desvio padrão da distribuição de probabilidade da previsão de demanda c multiplicador associado à probabilidade P P 60 80 95 99 c 084 128 196 258 Observe que no instante em que uma previsão é realizada estamos em tT ou 0 a previsão para um período no futuro é representado por F1 one step ahead a previsão para 5 períodos no futuro é representado por F5 e1 y1 F1 erro da previsão para um período futuro e5 y5 F5 erro da previsão para cinco períodos futuros No momento em que a previsão está sendo realizada 0 o erro da previsão e o desvio padrão da distribuição de probabilidade da previsão de demanda não são conhecidos Estas duas informações só serão conhecidas quando este período futuro for alcançado Estas informações podem ser estimadas através da análise dos dados históricos da variável de interesse e da análise de resíduos erros no passado Considere que já são conhecidos os valores históricos de yt1 a ytT então é possível construir um modelo de previsão Este modelo será utilizado para prever valores do futuro F1 F2 Mas este modelo também pode ser utilizado para prever valores do passado Ft1 FtT lembre que t é utilizado para período passado e para período futuro Os resíduos erros no passado correspondem à diferença entre o valor real da variável yt e o valor previsto pelo modelo Ft e t y t Ft A análise de resíduos permite realizar a estimativa do erro da previsão e do desvio padrão da distribuição de probabilidade da previsão de demanda para determinar a incerteza da previsão para períodos futuros A análise de resíduos também permite avaliar se o modelo de previsão é adequado Um bom modelo requer o coeficiente de autocorrelação dos resíduos é reduzido idealmente nulo a média dos resíduos é nula a variância dos resíduos é constante os resíduos apresentam distribuição normal caso 1 Determinação da incerteza para o caso em que o erro da previsão erros no futuro segue uma distribuição normal A satisfação desta condição pode ser avaliada verificando se os resíduos erros no passado seguem uma distribuição normal Para a previsão de um período no futuro 1 o desvio padrão da distribuição de probabilidade da previsão de demanda é quase igual ao desvio padrão dos resíduos Para previsões para futuros mais distantes 5 10 100 o desvio padrão dos resíduos pode ser utilizado para estimar o desvio padrão da distribuição de probabilidade da previsão de demanda desde que não haja autocorrelação dos dados caso 2 Determinação da incerteza para o caso em que não é possível aceitar que o erro da previsão segue uma distribuição normal a incerteza pode ser estimada através de uma técnica denominada bootstrap pulling ourselves up by our bootstraps Esta técnica permite estimar a incerteza futura com base nos dados históricos Segue uma descrição simplificada desta técnica O erro da previsão é definido por e τ y τ Fτ Esta equação pode ser reescrita como y τ F τ e τ Lembre que nestas equações especifica um instante no futuro e que os dados históricos correspondem aos valores em t1 tT No instante presente tT e 0 para uma previsão em um período no futuro utilizase 1 para uma previsão em cinco períodos no futuro utilizase 5 No instante presente tT ou 0 a equação anterior pode ser instanciada para um período no futuro como y τ1F τ1e τ1 onde F1 Previsão valor médio obtido com o modelo de previsão construído com os valores de yt1 a ytT e1 Erro de previsão que irá ocorrer no instante futuro 1 no instante presente quando 0 O erro ainda é desconhecido mas é possível assumir que os erros futuros serão similares aos erros passados resíduos então e1 pode receber o valor determinado pelos resíduos o resíduo em tT ou o valor médio dos resíduos entre t1 a tT y1 Estimativa do valor que a variável de interesse irá apresentar em 1 observe que este não é o valor obtido com o modelo de previsão também não é um valor real da variável y O valor da estimativa y1 pode ser incluído no conjunto de valores históricos da variável yt1 a ytT Com isto é possível atualizar o modelo de previsão que considera os valores de yt1 a ytT e y1 Com o modelo de previsão devidamente atualizado é possível realizar a previsão para mais um período para frente Considerando o instante presente 0 isto corresponde ao instante 2 a previsão é F2 porém como o modelo foi atualizado com a inclusão de y1 a previsão será realizada considerando um período para frente de 1 Observe que para obter F2 é utilizado o modelo de previsão que considera os valores de yt1 a ytT incluindo y1 Isto é diferente de obter F2 com o modelo que considera apenas yt1 a ytT É possível realizar uma estimativa para o erro futuro e2 com base nos valores de resíduo entre t1 a tT incluindo 1 Com isto é possível realizar uma estimativa de y2 Aplicando este procedimento é possível realizar a estimativa de y para valores no futuro e portanto os erros futuros Se os valores futuros de y são estimados então é possível estimar o desvio padrão da estimativa dos valores futuros de y e com isto determinar a incerteza para os valores futuros Determinação da precisão do modelo de previsão Como mencionado o resultado fornecido por um modelo de previsão inclui o valor central do intervalo de previsão e a amplitude do intervalo A amplitude do intervalo é igual ao dobro da incerteza da previsão Determinar a precisão do modelo consiste em quantificar o quanto o valor central de uma previsão para o futuro difere do valor observado que de fato ocorre quando este futuro é alcançado Não é possível esperar o futuro chegar para determinar se o modelo de previsão é apropriado ou não A escolha do modelo precisa ser realizada no presente com base nos dados do passado dados históricos Os dados históricos podem ser divididos em dois segmentos O segmento inicial yt1 a ytT e o segmento final ytT1 a ytTn Neste caso o instante atual corresponde a tTN O segmento inicial é utilizado para construir o modelo de previsão e o segmento final é utilizado para determinar a precisão do modelo O segmento final pode ser considerado como um segmento futuro ao segmento inicial Desta forma é possível conhecer o futuro relativo ao instante T Com este conjunto de dados é possível determinar diversas estatísticas que permitem quantificar a precisão do modelo e eventualmente comparar diferentes modelos para selecionar o mais apropriado Conforme definido anteriormente o erro da previsão é definido por e τ y τ Fτ Nesta equação o erro e será determinado para cada elemento do segmento final ytT1 a ytTN então teremos 1 corresponde a tT1 2 corresponde a tT2 n corresponde a tTn Para tanto será necessário determinar F1 a Fn utilizando o modelo obtido com os dados do segmento inicial yt1 a ytT A seguir são relacionadas algumas das estatísticas mais utilizadas na determinação da precisão de modelos MAEmeane τ RSMEmean MAD1 n τ 1 n eτ MAPEmean 100eτ yτ MASEmeanqτ parasérie semsazonalidade 1qτ e τ 1 T1 t2 T y t y t1 2qτ e τ 1 Tm tm1 T y t y tm MAE mean absolute error RSME root mean squared error MAD mean absolute deviation MAPE mean absolute percentage error MASE mean absolute scaled error e forecast error q scaled error para série sem sazonalidade utiliza 1 para série com sazonalidade 2 As estatísticas MAE RSME MAD são fornecidas na unidade física da variável de interesse então não permitem comparar previsões realizadas para variáveis físicas distintas As estatísticas MAPE e MASE s são adimensionais e portanto permitem realizar a comparação de variáveis físicas distintas por exemplo previsão de vendas unitárias de um determinado modelo com a previsão de faturamento total A escolha do modelo a ser utilizado deve considerar a precisão fornecida pelo mesmo Realizada a escolha de um modelo de previsão é recomendável determinar o erro alcançado para cada previsão realizada com o mesmo quando o futuro correspondente é alcançado e comparar o erro obtido com o erro determinado quando o modelo foi selecionado Caso haja diferença consistente e persistente significa que houve mudança no padrão de comportamento da variável para a qual está sendo realizada previsão e que é necessário selecionar outro modelo mais apropriado Exemplo goog200 pacote fpp2 Closing stock prices of GOOG from the NASDAQ exchange for 1000 consecutive trading days between 25 February 2013 and 13 February 2017 Adjusted for splits goog200 contains the first 200 observations from goog For stock market prices and indexes the best forecasting method is often the naïve method insira o código abaixo em um RScript e realize a execução linha a linha acompanhe os comentários que são realizados com relação aos resultados obtidos carregar o pacote fpp2 libraryfpp2 realizar a representação gráfica dos dados autoplotgoog200 realizar a previsão utilizando o modelo naive com intervalo de previsão determinado assumindo distribuição normal do erro caso 1 naivegoog200 análise de resíduos carrega o pacote tsbox librarytsbox conversao de formato de variáveis goog200df tsdfgoog200 y goog200dfvalue determinação manual dos resíduos para o modelo naive residuo yt yt1 residuo seqnrow 199 ncol 1 soma 0 fori in 2200 residuoi yiyi1 soma soma residuoi MediaResiduo soma199 plotresiduo determinação automática de residuos res residualsnaivegoog200 representação gráfica dos resíduos plotres determinação e representação gráfica do coeficiente de correlação dos resíduos ggAcfres ggtitleACF of residuals determinação do valor médio dos resíduos MediaRes meanres determina o histograma dos residuos gghistogramres ggtitleHistogram of residuals determina resíduos avalia autocorrelação e representa o histograma dos resíduos checkresidualsnaivegoog200 realizar a previsão utilizando o modelo naive com intervalo de previsão determinado com a técnica bootstrap caso 2 ModeloNaiveBootStrap naivegoog200 bootstrapTRUE determina resíduos avalia autocorrelação e representa o histograma dos resíduos ModeloNaiveBootStrap checkresidualsnaivegoog200 bootstrapTRUE realiza previsão utilizando o modelo simple exponential smoothing SES modeloSES sesgoog200 realiza previsão utilizando o modelo Holts linear trend method holt modeloHolt holtgoog200 realiza a representação gráfica da previsão utilizando diferentes métodos com identificação do valor central e do limite de incerteza autoplotnaivegoog200 autoplotsesgoog200 autoplotholtgoog200 determina a precisão dos modelos aos dados utilizados especifica o segmento inicial e final de goog200 SegmentoInicial windowgoog200start 1 end 180 SegmentoFinal windowgoog200start 181 end 200 realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo naive PrevisaoNaive naiveSegmentoInicialh20 PrevisãoNaive é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoNaiveTS PrevisaoNaivemean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoNaivedf tsdfPrevisaoNaiveTS ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoNaivedftime y PrevisaoNaivedfvalue colorredlinetype1 labstitle Determinação da precisão do modelo naive realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo ses PrevisaoSES sesSegmentoInicialh20 PrevisãoSES é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoSESTS PrevisaoSESmean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoSESdf tsdfPrevisaoSESTS ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoSESdftime y PrevisaoSESdfvalue colorredlinetype1 labstitle Determinação da precisão do modelo ses realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo holt PrevisaoHolt holtSegmentoInicialh20 PrevisaoHolt é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoHoltTS PrevisaoHoltmean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoHoltDF tsdfPrevisaoHoltTS seleciona o valor superior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValSupHoltTS PrevisaoHoltupper ValSupHoltDF tsdfValSupHoltTS seleciona o valor inferior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValInfHoltTS PrevisaoHoltlower ValInfHoltDF tsdfValInfHoltTS realiza a representação gráfica da realização da previsao realizada com o modelo determinado com o segmento inicial ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoHoltDFtime y PrevisaoHoltDFvalue colorredlinetype1 geompathmappingaesx ValSupHoltDFtime y ValSupHoltDFvalue colorgreenlinetype1 geompathmappingaesx ValInfHoltDFtime y ValInfHoltDFvalue colorgreenlinetype1 labstitle Determinação da precisão do modelo Holt determina a precisão dos modelos PrecisaoNaive accuracyPrevisaoNaiveSegmentoFinal PrecisaoSES accuracyPrevisaoSESSegmentoFinal PrecisaoHolt accuracyPrevisaoHoltSegmentoFinal COMENTÁRIOS carregar o pacote fpp2 libraryfpp2 realizar a representação gráfica dos dados autoplotgoog200 realizar a previsão utilizando o modelo naive naivegoog200 observe o comportamento dos dados goog200 é uma série temporal com 200 valores armazenados Time Series Start 1 End 200 Frequency 1 realizar a previsão utilizando o modelo naive com intervalo de previsão determinado assumindo distribuição normal do erro caso 1 naivegoog200 naive é a implementação de um modelo de previsão em que F1 ytT esta função recebeu a serie temporal goog200 e realizou a previsão para 10 períodos para frente 1 a 10 para este modelo o valor da previsão para qualquer período de futuro será igual ao último valor observado t201 corresponde a 1 para este período o valor central do intervalo de previsão point forecast é 5314783 para P80 valor inferior do intervalo de previsão Lo 80 é 5235222 valor superior do intervalo de previsão Hi 80 é 5394343 a incerteza do intervalo de previsão é 159121 para P95 a incerteza da previsão é 243355 Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 201 5314783 5235222 5394343 5193105 5436460 202 5314783 5202267 5427298 5142705 5486861 203 5314783 5176980 5452586 5104031 5525534 204 5314783 5155661 5473904 5071428 5558138 205 5314783 5136880 5492686 5042704 5586862 206 5314783 5119900 5509666 5016735 5612830 207 5314783 5104285 5525280 4992854 5636711 208 5314783 5089751 5539814 4970627 5658939 209 5314783 5076101 5553465 4949750 5679815 210 5314783 5063190 5566375 4930005 5699561 quanto maior a probabilidade maior a incerteza ou seja mais amplo será o intervalo de previsão resíduos determinados manualmente através da estrutura de repetição fori in 1199 residuoi yi1yi resíduos determinados com a função residuals res residualsnaivegoog200 gráfico dos coeficientes de autocorrelação como todos os valores estão dentro do intervalo definido pelas linhas tracejadas azuis então o módulo dos coeficientes é desprezível o valor médio dos resíduos é bastante reduzido 0696 isto indica que a previsão com a aplicação deste método será satisfatória como o histograma dos resíduos é assimétrico com a cauda da direita mais longa do que a cauda da esquerda então os resíduos não possuem distribuição normal isto significa que o intervalo de previsão obtido assumindo distribuição normal do erro caso 1 não será satisfatório determina resíduos avalia autocorrelação e representa o histograma dos resíduos checkresidualsnaivegoog200 este comando realiza a avaliação de resíduos automaticamente observe a diferença entre o histograma dos resíduos e a normal aproximada para representar os valores de resíduos observe também que a cauda da direita se estende até o valor 60 devido ao outlier realizar a previsão utilizando o modelo naive com intervalo de previsão determinado com a técnica bootstrap caso 2 ModeloNaiveBootStrap naivegoog200 bootstrapTRUE observe que resultados da aplicação do modelo são atribuídos à variável ModeloNaiveBootStrap t201 corresponde a 1 para este período o valor central do intervalo de previsão point forecast é 5314783 como era esperado o valor central não foi modificado pois o modelo de previsão é o mesmo o que mudou foi o procedimento para determinar a incerteza e portanto houve alteração no valor da incerteza e do valor inferior e superior do intervalo para P80 valor inferior do intervalo de previsão Lo 80 é 5259331 valor superior do intervalo de previsão Hi 80 é 5377562 a incerteza do intervalo de previsão é 118231 Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 201 5314783 5259331 5377562 5232307 5410597 202 5314783 5232119 5395781 5200187 5463789 203 5314783 5211666 5414578 5169556 5500054 204 5314783 5194483 5431699 5146362 5548496 205 5314783 5177748 5446942 5121114 5645142 206 5314783 5161528 5460233 5095435 5780855 207 5314783 5144047 5474551 5079642 5802491 208 5314783 5136194 5488971 5059696 5836484 209 5314783 5122195 5503370 5041713 5856096 210 5314783 5110255 5519397 5024611 5868351 selecione o nome da variável ModeloNaiveBootStrap para visualizar seu conteúdo a variável possui diversos campos passando o mouse sobre os campos aparece um ícone no canto direito selecionando este ícone é insira uma linha na janela inferior esquerda com referência a este campo por exemplo ModeloNaiveBootStrapmean dando Enter o conteúdo deste campo é apresentado dando Enter no comando ModeloNaiveBootStrapmean é possível verificar o valor central do intervalo de previsão obtido como o modelo de previsão naive explore o conteúdo dos demais campos da variável ModeloNaiveBootStrap determina resíduos avalia autocorrelação e representa o histograma dos resíduos ModeloNaiveBootStrap checkresidualsnaivegoog200 bootstrapTRUE resultados da aplicação do modelo naive com a determinação da incerteza com a opção bootstrap o pacote fpp2 disponibiliza diversos modelos de previsão de demanda entre eles os modelos que serão apresentados em breve com mais detalhes simple exponential smoothing SES que corresponde ao amortecimento exponencial horizontal exponential smoothing forecast Holts linear trend method que corresponde ao simple trend smoothing forecast Holts model realiza previsão utilizando o modelo simple exponential smoothing SES modeloSES sesgoog200 realiza previsão utilizando o modelo Holts linear trend method holt modeloHolt holtgoog200 compare o valor central da previsão determinado pelos modelos naive ses holt observe que o valor central fornecido pelos modelos naive e ses são constantes para todos os períodos futuros mas são distintos entre os dois modelos o valor central fornecido pelo modelo holt obedece uma reta com inclinação nãonula isto pode ser verificado selecionando o campo mean para das variáveis ModeloNaiveBootStrap modeloSES modeloHolt no caso da figura ao lado foi selecionado modeloHoltmean isto também pode ser verificado através da representação gráfica obtida para os diferentes modelos nas figuras abaixo é possível realizar a representação gráfica dos dados históricos com os dados obtidos com a previsão realiza a representação gráfica da previsão utilizando diferentes métodos com identificação do valor central e do limite de incerteza autoplotnaivegoog200 autoplotsesgoog200 autoplotholtgoog200 ATENÇÃO observe que em modeloHolt holtgoog200 e autoplotholtgoog200 está sendo utilizada a totalidade dos dados históricos em goog200 ou seja todos os 200 valores e está sendo realizada a previsão para os períodos futuros a t200 nos procedimentos a seguir será realizada a determinação dos modelos para isto os dados históricos serão divididos em um segmento inicial para determinar o modelo de previsão e um segmento final para comparar os valores existentes com os valores obtidos com o modelo obtido e com isto determinar a precisão do modelo determina a precisão dos modelos aos dados utilizados especifica o segmento inicial e final de goog200 SegmentoInicial windowgoog200start 1 end 180 SegmentoFinal windowgoog200start 181 end 200 realiza a previsão para 20 períodos futuros a partir do segmento inicial com o modelo holt PrevisaoHolt holtSegmentoInicialh20 PrevisaoHolt é uma variável com diversos campos seleciona o campo correspondente ao valor central da previsão PrevisaoHoltTS PrevisaoHoltmean converte o valor central da previsão do formato TS para DF para realizar a representação gráfica PrevisaoHoltDF tsdfPrevisaoHoltTS seleciona o valor superior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValSupHoltTS PrevisaoHoltupper ValSupHoltDF tsdfValSupHoltTS seleciona o valor inferior do intervalo de previsão determinado para 80 e 95 e converte de TS para DF ValInfHoltTS PrevisaoHoltlower ValInfHoltDF tsdfValInfHoltTS realiza a representação gráfica da realização da previsao realizada com o modelo determinado com o segmento inicial ggplot geompathmappingaesx goog200dftime y goog200dfvalue colorbluelinetype1 geompathmappingaesx PrevisaoHoltDFtime y PrevisaoHoltDFvalue colorredlinetype1 geompathmappingaesx ValSupHoltDFtime y ValSupHoltDFvalue colorgreenlinetype1 geompathmappingaesx ValInfHoltDFtime y ValInfHoltDFvalue colorgreenlinetype1 labstitle Determinação da precisão do modelo Holt na figura ao lado é apresentado em azul todos os dados armazenados em goog200 em vermelho o valor central da previsão obtida com o modelo holt em verde os limites superior e inferior do intervalo de previsão para 80 e 95 determina a precisão dos modelos PrecisaoNaive accuracyPrevisaoNaiveSegmentoFinal PrecisaoSES accuracyPrevisaoSESSegmentoFinal PrecisaoHolt accuracyPrevisaoHoltSegmentoFinal nestas variáveis são armazenados os valores utilizados para determinara a precisão dos modelos podese ser observado que para os segmentos inicial e final selecionados da série goog200 o modelo Holt resultou nos menores erros então este é o modelo mais apropriado para ser utilizado Previsão de demanda com R Referência Forecasting Principles and Practice 2nd ed Rob J Hyndman and George Athanasopoulos Monash University Australia httpsotextscomfpp2 Forecasting Principles and Practice 3rd ed Rob J Hyndman and George Athanasopoulos Monash University Australia httpsotextscomfpp3 Instalação da ferramenta computacional 1 Instalar o software R e o RStudio conforme as instruções em Appendix Using R Download and install R httpscranrprojectorg Download and install RStudio httpswwwrstudiocomproductsrstudiodownloaddownload 2 Instalar o pacote fpp3 utilizado na 3ª edição do livro de referência Forecasting Principles and Practice No RStudio selecionar Tools Instal Packages especificar o nome do pacote fpp3 confirmar que o campo Install Dependencies está selecionado Também pode ser instalado o pacote fpp2 que é utilizado na 2ª edição do livro de referência atualização 01junho2025 Atualmente prefiro utilizar o pacote fpp2 ao invés do fpp3 instale o fpp2 Neste documento e nos demais documentos sobre previsão de demanda com R sempre que houver referência ao pacote fpp3 estará sendo realizada referência ao fpp2 ATENÇÃO Em 08nov2023 o procedimento acima não foi executado com sucesso sendo necessário realizar a instalação com linha de comando no console installpackagesfpp2 dependencies TRUE Veja nas capturas de tela abaixo a inserção da linha de comando e o resultado da instalação com sucesso do pacote fpp2 Esperar a conclusão do processo de instalação No meu caso visualizei as informações apresentadas nas figuras abaixo No meu computador já havia sido instalado uma versão anterior do software R e do RStudio Também já havia sido instalado o pacote fpp2 que é utilizado na 2ª edição do livro Todos estes foram desinstaladas antes de realizar esta instalação trying URL httpscranrstudiocombinwindowscontrib41fpp3040zip Content type applicationzip length 421718 bytes 411 KB downloaded 411 KB package colorspace successfully unpacked and MD5 sums checked package utf8 successfully unpacked and MD5 sums checked package numDeriv successfully unpacked and MD5 sums checked package farver successfully unpacked and MD5 sums checked package labeling successfully unpacked and MD5 sums checked package munsell successfully unpacked and MD5 sums checked package RColorBrewer successfully unpacked and MD5 sums checked package viridisLite successfully unpacked and MD5 sums checked package warp successfully unpacked and MD5 sums checked package bh successfully unpacked and MD5 sums checked package glue successfully unpacked and MD5 sums checked package ellipsis successfully unpacked and MD5 sums checked package generics successfully unpacked and MD5 sums checked package lifecycle successfully unpacked and MD5 sums checked package R6 successfully unpacked and MD5 sums checked package rlang successfully unpacked and MD5 sums checked package tidyselect successfully unpacked and MD5 sums checked package vctrs successfully unpacked and MD5 sums checked package pillar successfully unpacked and MD5 sums checked package Rcpp successfully unpacked and MD5 sums checked package digest successfully unpacked and MD5 sums checked package progress successfully unpacked and MD5 sums checked package scales successfully unpacked and MD5 sums checked package slider successfully unpacked and MD5 sums checked package digest successfully unpacked and MD5 sums checked package tqgate successfully unpacked and MD5 sums checked package isoband successfully unpacked and MD5 sums checked package withr successfully unpacked and MD5 sums checked package fansi successfully unpacked and MD5 sums checked package pkgconfig successfully unpacked and MD5 sums checked package anytime successfully unpacked and MD5 sums checked package cli successfully unpacked and MD5 sums checked package crayon successfully unpacked and MD5 sums checked package dplyr successfully unpacked and MD5 sums checked package fable successfully unpacked and MD5 sums checked package tsibble successfully unpacked and MD5 sums checked package tidyr successfully unpacked and MD5 sums checked copying figures building package indices installing vignettes testing if installed package can be loaded from temporary location arch i386 arch x64 testing if installed package can be loaded from final location arch i386 arch x64 testing if installed package keeps a record of temporary installation path DONE ggplot2 The downloaded source packages are in CUsersagne1AppDataLocalTempRtmpGUVVNRdownloadedpackages Após realizar a instalação realize a limpeza do console tela do ambiente de trabalho Confirmação da instalação e carregamento do pacote fpp3 Uma vez que um pacote tenha sido instalado ele permanecerá instalado Mas toda vez que o RStudio for iniciado o pacote deve ser carregado Selecione Packages janela inferior esquerda para verificar os pacotes instalados Observe que o pacote fpp3 já está instalado Na figura abaixo foi digitado na 1ª linha ausretail isto é o nome de uma variável que contém uma série temporal que acompanha o pacote fpp3 Como resposta o RStudio informou a ocorrência do erro Error object ausretail not found Este erro ocorreu porque o pacote fpp3 ainda não foi carregado Para carregar o pacote foi digitado o comando libraryfpp3 Atualização 2024 Se estiver utilizando o pacote fpp2 carregue o pacote fpp2 e os dados ausair eou a10 libraryfpp2 Ao digitar novamente ausretail foi informado o conteúdo desta variável Para utilizar os exemplos e ferramentas referenciadas no livro Forecasting Principles and Practice será necessário carregar o pacote fpp3 toda vez que iniciar o RStudio Atualização 2024 Se estiver utilizando o pacote fpp2 carregue o pacote fpp2 e os dados ausair eou a10 ausair Time Series Start 1970 End 2016 Frequency 1 1 731870 732660 779560 938460 1066470 1105510 1086430 1130650 1212230 1302250 1364880 1321950 13 1318790 1260150 1323680 1441210 1549730 1688020 1881630 1511430 1755340 2186010 2388660 2692930 25 2688850 2883140 3007510 3095350 3018570 3157970 3257757 3347740 3902158 4138643 4159655 4465732 37 4695177 4872884 5148843 5002697 6064091 6336031 6635527 6819795 6812324 6977935 7259770 plotausair 1993 5093841 7179962 1994 5773742 6204593 1995 6088473 7416598 1996 6649078 8606937 1997 7398101 10096233 1998 8596156 10558939 1999 9933136 11532974 2000 11340151 12079132 2001 13674466 12965735 2002 13287640 15134918 2003 13669382 16503966 2004 17636728 18869325 2005 19347265 20031291 2006 23575517 23334206 2007 25250030 25806090 2008 plota10 manufacturer model displ year cyl trans drv cty hwy 1 audi a4 18 1999 4 autol5 f 18 2 audi a4 18 1999 4 manualm5 f 21 3 audi a4 20 2008 4 manualm5 f 20 4 audi a4 20 2008 4 autoav f 21 5 audi a4 28 1999 6 autol5 f 16 6 audi a4 28 1999 6 manualm5 f 18 7 audi a4 31 2008 6 autoav f 18 8 audi a4 quattro 18 1999 4 manualm5 4 18 Showing 1 to 9 of 234 entries 11 total columns Conceitos essenciais sobre o R classes e pacotes Para quem está tendo o primeiro contato com o R a apostila elaborada pela Profa Mariana Kleina é uma excelente opção A apostila está disponível em PROGRAMAÇÃO EM R EPRO7021 httpsdocsufprbrmarianakleinaApostilaEPRO7021pdf Realize a leitura rápida dos capítulos 2 3 4 e 15 para saber sobre o assunto Neste momento não é necessário dominar a fundo todas estas informações No RStudio para obter ajuda sobre algum elemento função tipo de dado classe digite o nome do elemento precedido do símbolo Na figura abaixo foi digitado ts Você também pode obter ajuda selecionando a janela Help canto inferior esquerdo da figura abaixo e digitando o nome do elemento no caso ts Para saber os argumentos de uma função digite args e o nome da função entre os parênteses Na figura abaixo foi digitado argsts Para realizar a Previsão de demanda os dados históricos estarão armazenados em séries temporais time series Leia as informações sobre a classe ts time series e o exemplo de utilização Neste momento basta saber que existe esta classe Uma visão mais detalhada sobre esta classe é apresentada em CRAN Task View Time Series Analysis Rob J Hyndma httpscranrprojectorgwebviewsTimeSerieshtml Nesta página são mencionados diversos pacotes para Forecasting and Univariate Modeling Dentre eles estão o pacote fable e o pacote forecast A 3ª edição do livro de referência adota o pacote fable enquanto que a 2ª edição do livro adota o pacote forecast Também são mencionados os pacotes Exponential smoothing e prophet dentre muitos outros São mencionadas as classes e pacotes tidverts e tsibble Novamente neste momento basta saber que existem tais pacotes e classes Se desejarmos conhecer com detalhes cada classe e cada pacote não será possível evoluir no objetivo que é realizar previsão de demanda Maiores informações podem ser obtidas digitando tsibble no RStudio Contudo é importante compreender a justificativa para uso destes pacotes e classes Eles fornecem as ferramentas necessárias para realizar o devido tratamento dos dados que serão utilizados na previsão de demanda Conforme apresentado no prefácio da 3ª edição do livro de referência quando o autor relaciona os pacotes que serão utilizados These include several tidyverse packages and packages to handle time series and forecasting in a tidy framework Para compreender esta frase é necessário compreender o conceito de tidy adotado pelo autor O livro R for Data Science Garrett Grolemund and Hadley Wickham httpsr4dshadconz define o procedimento geral para trabalhar com dados experimentais o qual pode ser representado através da figura abaixo R for Data Science Grolemund G Wickham H Este procedimento consiste das etapas Importação import de dados para o R dados estes que estavam disponíveis em arquivo banco de dados ou em aplicação web Organização tidy dos dados de forma consistente com o significado dos mesmos Em geral cada coluna fica associada a uma variável e cada linha corresponde a uma observação Transformação transform dos dados A transformação pode ser realizada para limitação do conjunto de dados à parcela de interesse determinação de novas variáveis como função das já existentes determinação de estatísticas de interesse máximo mínimo média desvio padrão coeficiente de variação exclusão ou inclusão de novos valores Visualização visualise gráfica Isto permite a compreensão de comportamentos não esperados também permite a elaboração de questionamentos sobre os dados Construção de modelos matemáticos model que permitam a representaçãodescrição dos dados Divulgação communicate dos achados para outras pessoas A representação gráfica dos dados é muito importante pois permite a identificação de características como padrão de crescimento ou de decréscimo trend sazonalidade seazon e variação cíclica ciclic Também permite a identificação de valores discrepantes outlieers do comportamento global a falta de dados ao longo do período de variação da série e a correlação entre variáveis Estas características precisam ser levadas em consideração na seleção dos métodos para transformação dos dados e para realização da previsão de futuro No âmbito da organização e transformação dos dados o livro de referência adota as classes e pacotes tsibble e tidyverts Veja maiores informações em httpstidyvertsorg Primeiros passos com séries temporais no R Uma série temporal time series é um conjunto de valores uniformemente espaçados de valores numéricos O espaçamento entre os valores corresponde a um intervalo de tempo hora dia ano Os valores estão associados a uma variável de interesse por exemplo quantidade de produtos vendidos Considere a tabela que relaciona a quantidade anual de vendas ocorridas nos anos de 2015 a 2019 Estas informações correspondem a uma série temporal Uma série temporal pode ser introduzida manualmente no R O livro adota as classes ts e tsibble para este propósito Para criar uma variável com esta série digite o comando y tsibble Year 20152019 Observation c123 39 78 52 110 index Year Neste comando o símbolo é equivalente ao símbolo ou seja a variável y recebe o conteúdo que está delimitado pelos parênteses A variável y está sendo criada e será um objeto da classe tsibble desta forma será possível utilizar os recursos desta classe A variável y tem dois campos ou variáveis O campo Year recebe o conjunto de valores que inicia em 2015 e vai até 2019 com uma variação unitária entre valores O campo Observation recebe os valores que estão entre parênteses O comando index Year especifica que a série temporal é indexada pela variável que está no campo Year obs veja a apostila da professora Mariana Kleina sobre 22 Atribuição de Variáveis e 3 VETORES para compreender os comandos anteriores O conteúdo da variável y pode ser apresentado no Console do RStudio digitando o nome da variável O conteúdo da variável pode ser representado graficamente através do comando autoploty Uma série temporal deve incluir um campo que realiza a indexação dos demais campo e que corresponde ao tempo Um objetivo tsibble pode pode incluir diversos campos cada qual associado a observações de uma determinada variável No exemplo abaixo a empresa registrou a quantidade de vendas de dois produtos distintos ao longo dos anos entre 2015 e 2019 vendas tsibble Year 20152019 ProdA c123 39 78 52 110 ProdB c250 265 295 310 330 index Year O conteúdo da variável vendas pode ser apresentado no Console do RStudio digitando o nome da variável O conteúdo da variável pode ser representado graficamente através do comando autoplotvendas O comando para representação gráfica pode especificar qual campo deve ser representado também pode especificar informações para título da representação gráfica e legenda nos eixos autoplotvendas ProdB labstitle Vendas anuais da empresa subtitle período 2015 a 2019 y Produto B unidade x ano fiscal O pacote fpp3 disponibiliza diversas variáveis que podem ser utilizadas para aplicar as técnicas de previsão de demanda Selecione Packages fpp3 para verificar quais são as variáveis Verifique que existe a variável prices Digite o nome desta variável no RStudio para verificar seu conteúdo E No RStudio dauigite o nome desta variável no RStudio para verificar seu conteúdo Esta variável contém 198 linhas cada qual associda a um ano e 7 colunas A primeira coluna armazena o valor da variável que indexa a série tempora year e as demais 6 colunas armazenam o valor das vendas de produtos eggs chicken copper nails oil wheat A variável PBS é uma variável que acompanha um dos pacotes que estão sendo utilizados Digite o nome desta variável e avalie seu conteúdo Observe que ela não é incluída na janela Enviroment canto superior direito Você pode atribuir o conteúdo de PBS para uma variável xPBS com o comando x PBS PBS é um objeto tsibble com 67596 linhas e 9 colunas A variável que realiza a indexação é Month e está na primeira coluna na forma ano mês Selecionando com o mouse o nome da variável xPBS na janela Environment é aberta automaticamente uma nova janela canto superior esquerdo que permite visualizar o valor individual de cada variável linha e coluna da variável xPBS Observe que a variável coluna ATC2 possui valores como A01 A12 z Role a barra da janela com os valores de xPBS para visualizar seus possíveis valores PBS contains monthly data on Medicare Australia prescription data from July 1991 to June 2008 These are classified according to various concession types and Anatomical Therapeutic Chemical ATC indexes Um objeto tsibble pode ser organizado tidy com funções como mutate filter select summarise A função filter pode ser utilizada para selecionar as linhas de um objeto tsibble em que uma determinada variável possui um valor específico Por exemplo pode ser utilizada para selecionar as linhas em que a variável ATC2 possui o valor A10 e atribuir este conteúdo para a variável xPBSATCA10 xPBSATC2A10 PBS filter ATC2 A10 Observe na figura abaixo que com esta operação a variável xPBSATC2A10 é um objeto tsibble com 816 linhas Observe também que todas as linhas da variável apresentam o valor A10 na coluna da variável ATC2 A função select pode ser utilizada para selecionar uma determinada coluna de um objeto tsibble Por exemplo pode ser utilizada para selecionar as colunas Month e Cost na variável objeto tsibble xPBSATC2A10 e atribuir este conteúdo para a variável xPBSATC2A10Cost Observe que no objeto PBS as colunas Concession Type ATC1 ATC2 são classificadas como Key então estas colunas também são selecionadas Isto é confirmado com o comando keyPBS xPBSATC2A10Cost xPBSATC2A10 select Month Cost keyPBS Nos exemplos anteriores a variável objeto tsibble foi obtida através de duas transformações consecutivas usando a função filter e usando a função select O mesmo resultado seria obtido usando as duas transformações de uma única vez Observe que o operador é utilizado 2 vezes x PBS filter ATC2 A10 select Month Cost Como a variável PBS utiliza 4 variáveis como Keys Concession Type ATC1 ATC2 para cada uma destas variáveis pode haver um custo correspondente A função summarise permite determinar o valor total para cada período Na figura abaixo estão apresentados os valores da variável xPBSATC2A10Cost que tem o mesmo conteúdo da variável x porém os dados foram organizados por mês Esta organização é realizada selecionando com o mouse a coluna Month Observe que na figura abaixo o mês 1991 jul aparece quatro vezes uma linha para cada combinação das variáveis key Na figura anterior na mesma variável o mês 1991 jul aparece uma única vez Desta forma como a variável xPBSATC2A10Cost possui 816 linhas a variável xTotalCost terá 8164 204 linhas xTotalCost xPBSATC2A10Cost summariseTotalCost sumCost A função summarise permite determinar diversas estatísticas a partir de variáveis já existentes Por exemplo pode ser determinado para cada mês o custo total o custo médio a variância do custo o coeficiente de variação do custo Cada uma destas estatísticas é determinada considerando as possíveis combinações das variáveis key para cada mês Como exercício determine manualmente estes valores para o mês 1991 jul e compare com o resultado determinado com a execução da função xx x summarise CustoTotal sumCost CustoMedio meanCost CustoVariancia varCost CustoCV sqrtCustoVariancia CustoMedio A função mutate permite determinar novas variáveis a partir de variáveis já existentes Por exemplo o custo total pode sofrer uma conversão de unidade conversão monetária multiplicando por um novo valor Observe que na variável xx recém determinada com a função summarise existem as 4 variáveis CustoTotal CustoMedio CustoVariancia CustoCV Com a função mutate a variável CustoReais foi incluída às variáveis recém mencionadas xxx xx mutateCustoReais CustoTotal 525 Agora é possível realizar a análise dos dados realizando a representação gráfica dos mesmos O capítulo Data Visualization do livro R for Data Science disponível em httpsr4dshadconzdatavisualisationhtml é uma boa referência sobre a representação gráfica ggplotdata xxx geompointmapping aesx Month y CustoTotal color blue shape 0 geompointmapping aesx Month y CustoMedio color red shape 1 geompointmapping aesx Month y CustoCV color green shape 2 labstitle Custos y Custo x ano mês obs geompoint usa marcadores em cada valor shape especifica o tipo de marcador ggplotdata xxx geompathmapping aesx Month y CustoTotal color blue linetype 1 geomlinemapping aesx Month y CustoTotal color red linetype 2 geomsmoothmapping aesx Month y CustoTotal color green linetype 3 labstitle Custos y Custo x ano mês obs obs geomsmooth cria uma a smooth line fitted to the data it aids the eye in seeing patterns in the presence of overplotting geompath connects the observations in the order in which they appear in the data geomline connects them in order of the variable on the x axis geomstep creates a stairstep plot highlighting exactly when changes occur linetype especifica o tipo de linha 0 blank 1 solid 2 dashed 3 dotted 4 dotdash 5 longdash 6 twodash ggplotdata xxx geomsmoothmapping aesx Month y CustoTotal color blue linetype 1 geomsmoothmapping aesx Month y CustoTotal color blue linetype 0 geompointmapping aesx Month y CustoTotal color blue shape 0 geomsmoothmapping aesx Month y CustoMedio color red linetype 2 geomsmoothmapping aesx Month y CustoMedio color red linetype 0 geompointmapping aesx Month y CustoMedio color red shape 1 geomsmoothmapping aesx Month y CustoCV color green linetype 3 geompointmapping aesx Month y CustoCV color green shape 2 labstitle Custos y Custo x ano mês Para saber mais sobre as diferentes formas de realizar a representação gráfica utilizando o pacote ggplot2 selecione Help ggplot2 e depois a função desejada Há muitas funções a serem exploradas RStudio File Edit Code View Plots Session Build Debug Profile Tools Help xPRSATC2A10 xPRSATC2A10Costxlsx Go to filefunction Addins Project None Filter manufacturer model displ year cyl trans drv cty hwy 1 audi a4 18 1999 4 autol5 f 18 2 audi a4 18 1999 4 manualm5 f 21 3 audi a4 20 2008 4 manualm5 f 20 4 audi a4 20 2008 4 autoav f 21 5 audi a4 28 1999 6 autol5 f 16 6 audi a4 28 1999 6 manualm5 f 18 7 audi a4 31 2008 6 autoav f 18 8 audi a4 quattro 18 1999 4 manualm5 4 18 Showing 1 to 9 of 234 entries 11 total columns Console Terminal Jobs R 410 Global Environment History Connections Tutorial Import Dataset 407 MB List mes es 204 obs of 1 variable Files Plots Packages Help Viewer Refresh Help Topic R Create Elegant Data Visualisations Using the Grammar of Graphics Find in Topic facetgrid Lay out panels in a grid facetwrap Wrap a 1d ribbon of panels into 2d faithful 2d density estimate of Old Faithful data fill Colour related aesthetics colour fill and alpha formatggproto Format or print a ggproto object fortify Fortify a model with data G GeomSf Visualise sf objects geomabline Reference lines horizontal vertical and diagonal geomarea Ribbons and area plots geombar Bar charts geombin2d Heatmap of 2d bin counts geombin2d Heatmap of 2d bin counts geomblank Draw nothing geomboxplot A box and whiskers plot in the style of Tukey geomcol Bar charts geomcontour 2D contours of a 3D surface geomcontourfilled 2D contours of a 3D surface geomcount Count overlapping points geomcrossbar Vertical intervals lines crossbars errorbars geomcurve Line segments and curves geomdensity Smoothed density estimates geomdensity2d Contours of a 2D density estimate geomdensity2dfilled Contours of a 2D density estimate geomdensity2d Contours of a 2D density estimate geomdensity2dfilled Contours of a 2D density estimate geomdotplot Dot plot geomerrorbar Vertical intervals lines crossbars errorbars geomerrorbarh Horizontal error bars geomfreqpoly Histograms and frequency polygons geomfunction Draw a function as a continuous curve geomhex Hexagonal heatmap of 2d bin counts Projeto Planejamento da Produção Objetivo Utilização da função Exponential smoothing forecasts disponível no pacote forecast do RStudio com a série temporal ausair disponível no pacote fpp2 do software RStudio Data da proposição 15jun2025 Data da entrega 22jun2025 Apresentação oral em sala de aula 23 e 25 de junho 2025 Cada equipe deve encaminhar por email arquivo word e excel com o relatório da execução do projeto Do email de entrega endereço de destino agnelovieiraufprbr assunto Projeto TEP25 Entrega no corpo do email devem estar relacionados em ordem alfabética todos os integrantes do grupo e respectivos GRR Descrição da atividade 1 Localizar a função holt no pacote forecast e identificar o significado dos argumentos de entrada e de saída desta função Comparar as informações apresentadas sobre a função holt com o modelo 23 Trend smoothing forecast Holts model apresentado no arquivo 104 Previsao de demanda com R parte 4 bdocx e com o conteúdo apresentado no livro referenciado na interface de ajuda desta função Seção 72 Trend methods Holts linear trend method Apresentar o comparativo na forma de tabela 2 Com relação à série de dados temporais ausair qual o intervalo dos dados dados armazenados nesta série Qual a data do dado mais antigo e do dado mais recente Qual o número de dados armazenado nesta série Apresente a representação gráfica desta série Para esta série temporal realizar a previsão com a função holt na sua forma mais básica especificando apenas os argumentos de entrada que não são opcionais Interpretar o resultado obtido Apresentar os valores de previsão obtidos na forma numérica e na forma gráfica Apresentar o valor dos coeficientes α alevel btrend determinados pela função holt Especificar o significado dos coeficientes α com relação à relevância do dado mais recente em relação ao modelo obtido na execução anterior da função holt Especificar o significado geométrico dos coeficientes alevel btrend Apresente na forma de tabela onde cada linha está associada à data dos dados armazenados nesta série temporal as seguintes informações associadas à cada coluna da tabela faça isto no Excel data valor real observado estimativa realizada pelo modelo fit fitted erro entre o valor real observado e a estimativa realizada pela função fit residuals coeficientes alevel btrend fit states desvio padrão do erro acredito que a função holt não apresenta esta informação precisa ser calculado erro amortecido acredito que a função holt não apresenta esta informação precisa ser calculado MAD mean absolute deviation amortecido tracking signal amplitude do intervalo de previsão para 80 e 95 de confidência ver arquivo 103 Previsao de demanda com R parte 3 bdocx valor máximo valor mínimo do intervalo de previsão para 80 e 95 de confidência 3 Selecione uma janela window da série temporal com início em 1970 e fim em FINAL Realize a previsão com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Para cada item 31 a 36 abaixo apresente A representação gráfica da seleção da seleção da série temporal O modelo obtido coeficientes alevel btrend e a equação a ser utilizada para realizar a previsão manual utilizando estes coeficientes Na forma de tabela valor mínimo valor central valor máximo para 80 de confidência e para 95 de confidência determinados pela função holt para 5 períodos futuros a FINAL o valor central do intervalo de previsão determinado manualmente para 5 períodos futuros a FINAL o valor real observado armazenado na série temporal ausair para 5 períodos futuros a FINAL Cada linha da tabela deve estar associada a uma data e cada coluna a uma das informações acima 31 FINAL 1986 32 FINAL 1987 33 FINAL 1988 34 FINAL 1989 35 FINAL 1990 36 FINAL 1991 4 Selecione uma janela window da série temporal com início em 1970 e fim em FINAL Realizar a previsão com a função holt especificando o valor dos coeficientes α initial a α 1 1 initial csimple b α 09 09 initial csimple c α 05 05 initial csimple d α 01 01 initial csimple e α 0 0 initial csimple Para cada item 41 a 46 abaixo apresente O modelo obtido coeficientes alevel btrend e a equação a ser utilizada para realizar a previsão manual utilizando estes coeficientes Na forma de tabela o valor real observado na série ausair iniciando em 1986 e terminando em 19865 o valor central do intervalo de previsão iniciando em 19861 e terminando em 19865 obtido com os coeficientes especificados nos itens 1 e Cada linha da tabela deve estar associada a uma data e cada coluna aos dados especificados acima 41 FINAL 1986 42 FINAL 1987 43 FINAL 1988 44 FINAL 1989 45 FINAL 1990 46 FINAL 1991 Apresente suas conclusões sobre a influência dos coeficientes α 5 Realize a previsão com a série temporal ausair com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Determine o tracking signal TS da série conforme realizado no item 2 para cada período ao longo de toda a série Copie a série temporal ausair para a variável ausairAUX Identifique a data correspondente ao dado na posição 31 da série ausair Modifique os valores de ausairAUX segundo o padrão abaixo ausairAUX31 105 ausair31 ausairAUX32 11 ausair32 ausairAUX33 115 ausair33 ausairAUX34 120 ausair34 item de iteração a Selecione a janela de ausAIR com início em 1970 e término em FINAL Realize a previsão com esta seleção com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Determine o valor central do intervalo de previsão para 1 período futuro e o tracking signal TS conforme realizado no item 2 repetição repita o item de iteração a de tal forma que final assume os valores 2000 2001 2002 até que TS 07 Modifique os valores de ausairAUX segundo o padrão abaixo ausairAUX31 095 ausair31 ausairAUX32 09 ausair32 ausairAUX33 085 ausair33 ausairAUX34 08 ausair34 item de iteração b Selecione a janela de ausAIR com início em 1970 e término em FINAL Realize a previsão com esta seleção com a função holt especificando o valor dos coeficientes α 09 09 initial csimple Determine o valor central do intervalo de previsão para 1 período futuro e o tracking signal TS conforme realizado no item 2 repetição repita o item de iteração bde tal forma que final assume os valores 2000 2001 2002 até que TS 07 Apresente os resultados na forma de tabela Cada linha deve estar associada a uma data As colunas devem estar associadas a TS da série ausair TS da série ausairAUX com incremento do valor observado com FINAL 2000 TS da série ausairAUX com incremento do valor observado com FINAL 2001 TS da série ausairAUX com incremento do valor observado com FINAL 2002 TS da série ausairAUX com decremento do valor observado com FINAL 2000 TS da série ausairAUX com decremento do valor observado com FINAL 2001 TS da série ausairAUX com decremento do valor observado com FINAL 2002 Apresente suas conclusões sobre o TS Previsão de demanda Para o setor produtivo a previsão de demanda é realizada para elaborar o plano agregado de produção com o objetivo de estabelecer a quantidade que será vendida Os produtos podem ser classificados como tendo demanda independente eou demanda dependente Produtos com demanda independente são os produtos finais comercializados pela empresa a demanda destes produtos independe de qualquer outro produto ou componente comercializado pela empresa Produtos de demanda dependente são os componentes utilizados para compor os produtos finais estes produtos não são comercializados diretamente pela empresa Há produtos que possuem demanda independente e demanda dependente são os os componentes utilizados para compor os produtos finais demanda dependente e que também são fornecidos ao mercado como itens de reposição demanda independente Para o comércio a previsão de demanda é realizada para determinar os pedidos de compra dos produtos que serão comercializados neste caso o número de itens SKU stock keeping unit pode ser muito elevado Métodos qualitativos Predição de demanda Estimativa da demanda aplicando considerações subjetivas usualmente aplicado para novos produtos que ainda não possuam um histórico de demanda realizado Os resultados dependem do julgamento da opnião das conficções políticas e sociais das pessoas envolvidas no processo Estes métodos estão fora do escopo desta disciplina Métodos quantitativos Previsão de demanda Estimativa da demanda aplicando métodos quantitativos numéricos para determinar a demanda futura baseado na demanda que ocorreu no passado Os dados históricos são organizados na forma de séries temporais Componentes de séries temporais Em geral uma série temporal que armazena os dados históricos que serão utilizados para realizar a previsão de futuro possui diversas componentes Constante ou nível level A série temporal não apresenta um padrão de crescimento nem de redução nem de variação cíclica Há uma tendência dos valores variarem em torno de um valor médio constante ao longo de toda a série com uma certa variância Inclinação de crescimento ou redução trend slope A série temporal apresenta um padrão contínuo e constante de crescimento ou de redução Sazonalidade seasonal A série temporal apresenta um padrão de oscilação crescimento e redução que se repete como uma função do calendário anual mensal semanal estações climáticas Estas variações possuem um período ou frequência de variação contante Cíclica cyclic A série temporal apresenta um padrão de oscilação crescimento e redução que não pode ser relacionado diretamente ao calendário Estas variações não possuem um período ou frequência de variação constante Aleatória random remainder A série temporal apresenta um padrão de variação aleatória Uma estação ou período de variação corresponde a um intervalo do calendário pode corresponder a uma semana um mês um trimestre um semestre um ano uma década Há uma proporcionalidade entre a duração da estação e um período de referência do calendário Em um ciclo ocorre uma variação que se repete de tempos em tempos mas esta duração não está naturalmente relacionada com um período de referência do calendário ou não é constante Uma série temporal Xt pode ser representado pelo somatório eou o produto de componentes trend mt seasonal st e remainder et Série temporal com componentes aditivas Xt mt st et Série temporal com componentes multiplicativas Xt mt st et Exemplo Verifique os pacotes já instalados Caso ainda não estejam relacionados instale os pacotes fpp3 e ffp2 Carregue os pacotes fpp2 e ffp3 libraryfpp2 libraryfpp3 Realize a representação gráfica do conteúdo armazenado nas seguintes séries temporais autoplotgoog comentários pacote fpp2 goog Daily closing stock prices of Google Inc é possível observar comportamento de crescimento trend não identifico nem comportamento sazonal nem comportamento cíclico autoplotqauselec comentários pacote fpp2 qauselec Quarterly Australian Electricity production é possível observar comportamento de crescimento e sazonal não identifico comportamento cíclico autoplothsales comentários disponível no pacote fma The monthly housing sales show strong seasonality within each year as well as some strong cyclic behaviour with a period of about 610 years There is no apparent trend in the data over this period O autor do livro informa que há comportamento sazonal com período anual e comportamento cíclico com período aproximado entre 6 a 10 anos estes comportamentos não são facilmente identificáveis não há comportamento de crescimento ou de redução fim do exemplo Exemplo Representação gráfica de série temporal que armazena dados de diversas estações Há casos em que uma série temporal com comportamento sazonal armazena dados de diversas estações Para facilitar a identificação do comportamento em cada estação e para permitir a comparação do comportamento entre as diversas estações pode ser conveniente realizar a representação gráfica de cada estação de forma independente a10 Monthly antidiabetic drug subsidy in Australia from 1991 to 2008 disponível no pacote fpp2 conforme o autor do livro há um comportamento de crescimento trend que não é constante ou seja a inclinação aumenta com o transcurso do tempo há um comportamento sazonal que aumenta de amplitude com o transcurso do tempo há um queda brusca no valor no início de cada ano causado por subsídios governamentais a representação dos dados como função do tempo autoplota10 permite identificar parte destas características mas a representação dos dados como função do tempo separado por temporadas ou estações seazon ggseasonplota10 permite identificar com mais facilidade que a inclinação das curvas é crescente em 1991 a curva tem menor inclinação do que em 2005 a queda no início de cada ano é facilmente identificada em todos os anos sendo que o mês em que ocorre o menor número de vendas é fevereiro há um crescimento praticamente constante de fevereiro a dezembro de cada ano o ano de 2008 está representado apenas até o mês de junho e que no mês de março há uma redução mais significativa do que nos demais anos provavelmente porque os dados não foram integralmente fornecidos autoplota10 ggseasonplota10 yearlabelsTRUE yearlabelsleftTRUE ylab million ggtitleSeasonal plot antidiabetic drug sales ggseasonplota10 polarTRUE ylab million ggtitlePolar seasonal plot antidiabetic drug sales para obter este gráfico foi estabelecido polar True fim do exemplo Formatos de armazenamento de séries temporais As bases de dados e os exemplos disponíveis nos pacotes de previsão de demanda armazenam o conteúdo de séries temporais em diversos formatos e estruturas Ferramentas disponíveis em um pacote podem ser compatíveis com um formato de armazenamento e incompatíveis com outros formatos É conveniente dominar ferramentas de conversão de séries temporais entre formatos distintos O pacote tsbox permite a conversão entre diversos formatos de armazenamento de séries temporais Introduction to tsbox httpscranrprojectorgwebpackagestsboxvignettestsboxhtml The R ecosystem knows a vast number of time series standards Instead of creating the ultimate 15th time series class tsbox provides a set of tools that are agnostic towards the existing standards The tools also allow you to handle time series as plain data frames thus making it easy to deal with time series in a dplyr or datatable workflow tsbox is built around a set of converters which convert time series stored as ts xts dataframe datatable tibble zoo tsibble tibbletime or timeSeries to each other Because this works reliably we can easily write functions that work for all classes So whether we want to smooth scale differentiate chain forecast regularize or seasonally adjust a time series we can use the same commands to whatever time series class at hand And most conveniently we get a time series plot function that works for all classes and frequencies tsbox can convert time series stored as ts xts dataframe datatable tibble zoo tsibble tibbletime or timeSeries to each other nas funções abaixo o nome da função está na forma tsXXX onde o sufixo XXX especifica o formato para o qual a série temporal será transformada o conteúdo entre parênteses YYY especifica o nome da variável que armazena uma série temporal em qualquer dos formatos compatíveis o nome à esquerda do símbolo especifica o nome da variável que irá armazenar o conteúdo da série temporal no formato especificado pelo nome da função Exemplo Conversão entre diferentes formatos de armazenamento de dados Considere a série temporal elecdemand disponível no pacote fpp2 e o objeto tsibble vicelec Observe que são duas series temporais armazenadas em formatos distintos a elecdemand is a halfhourly time series matrix with three columns Demand Total electricity demand in GW for Victoria Australia every halfhour during 2014 WorkDay taking value 1 on work days and 0 otherwise Temperature halfhourly temperatures for Melbourne BOM site 086071 Format Multiple time series of class mts b vicelec is a halfhourly tsibble with three values Demand Total electricity demand in MW Temperature Temperature of Melbourne BOM site 086071 Holiday Indicator for if that day is a public holiday Format Time series of class tsibble Instale e carregue o pacote tsbox installpackagestsbox librarytsbox realize a representação gráfica das variáveis armazenadas na série temporal mts autoplotelecdemand cDemand Temperature facets TRUE usando o mesmo procedimento para realizar a representação gráfica das variáveis armazenadas na série temporal tsibble ocorre erro a função autoplot não pode ser utilizada com este tipo de dado autoplot vicelec cDemand Temperature facets TRUE Error Objects of type tbldftbldataframe not supported by autoplot realize a representação gráfica da série temporal vicelec ggplotdata vicelec geompathmapping aesx Time y Temperature color red linetype 1 geompathmapping aesx Time y Demand color blue linetype 1 obs ainda não consegui utilizar facets para representar em segmentos separados cada variável como a amplitude de Temperature e Demand são muito distintos o gráfico não permite uma boa representação a solução é realizar dois gráficos separados como nas duas linhas abaixo ggplotdata vicelec geompathmapping aesx Time y Temperature color red linetype 1 ggplotdata vicelec geompathmapping aesx Time y Demand color blue linetype 1 é possível converter um série temporal armazenada em um formato para outro formato crie a série temporal realizando a conversão de tsibble para mts vicelecAsTS tstsvicelec realize a representação gráfica das variáveis armazenadas na série temporal mts autoplotvicelecAsTS cDemand Temperature facets TRUE crie a série temporal realizando a conversão mts para de tsibble elecdemandAsTsibble tstsibbleelecdemand digite o nome das variáveis e verifique o formato de armazenamento para elecdemand vicelecAsTS vicelec elecdemandAsTsibble elecdemand e vicelecAsTS estão armazenadas no formato mts multiple time series é possível converter as variáveis Demand e Temperature nestas séries temporais para vetores XDemanda asnumeric vicelecAsTS Demand XTemperatura asnumericvicelecAsTS Temperature agora já é possível converter de um formato de armazenamento para outro e utilizar as diversas funções fim do exemplo Referências complementares Applied Time Series Analysis for Fisheries and Environmental Sciences E E Holmes M D Scheuerell and E J Ward httpsnwfsctimeseriesgithubioatsalabs 44 Correlation within and among time series httpsnwfsctimeseriesgithubioatsalabssectslabcorrelationwithinandamongtimeserieshtml Applied Time Series Analysis with R Stéphane Guerrier Roberto Molinari Haotian Xu and Yuming Zhang August 21 2019 httpssmacgroupgithubiots Chapter 3 Fundamental Properties of Time Series httpssmacgroupgithubiotsfundtimeserieshtml Identificação dos componentes das séries temporais O método quantitativo a ser utilizado para realizar uma previsão de futuro baseado em dados históricos previsão de demanda é determinado pelas componentes presentes na série temporal Desta forma é importante identificar a presença de tais componentes A identificação da componente trend pode ser realizada filtrando os dados Um filtro simples é o da média móvel A equação para um termo obtido através da média móvel de a unidades é mt 1 2a1 ia a xti Exemplo Seja Xt x11 x12 x13 x14 x15 x16 uma série temporal Seja a série temporal XM1 xm11 xm12 xm13 xm14 xm15 xm16 obtida através da aplicação média móvel de 1 unidade Nesta série xm14 x13 x14 x153 xm15 x14 x13 x163 Seja a série temporal XM3 xm11 xm12 xm13 xm14 xm15 xm16 obtida através da aplicação média móvel de 3 unidades Nesta série xm14 x11 x12 x13 x14 x15 x16 x177 fim do exemplo Exemplo Identificar e remover a componente trend de série temporal a10 usando filtro média móvel com procedimento manual Conforme mencionado em exemplo anterior a10 Monthly antidiabetic drug subsidy in Australia from 1991 to 2008 disponível no pacote fpp2 conforme o autor do livro há um comportamento de crescimento trend que não é constante ou seja a inclinação aumenta com o transcurso do tempo há um comportamento sazonal que aumenta de amplitude com o transcurso do tempo há um queda brusca no valor no início de cada ano causado por subsídios governamentais a representação dos dados como função do tempo autoplota10 permite identificar parte destas características mas a representação dos dados como função do tempo separado por temporadas ou estações seazon ggseasonplota10 permite identificar com mais facilidade que a inclinação das curvas é crescente em 1991 a curva tem menor inclinação do que em 2005 a queda no início de cada ano é facilmente identificada em todos os anos sendo que o mês em que ocorre o menor número de vendas é fevereiro há um crescimento praticamente constante de fevereiro a dezembro de cada ano o ano de 2008 está representado apenas até o mês de junho e que no mês de março há uma redução mais significativa do que nos demais anos provavelmente porque os dados não foram integralmente fornecidos abra um arquivo RScript e insira o código determina a média móvel MA1a10 maa101 MA3a10 maa103 MA9a10 maa109 MA21a10 maa1021 converte TS para data frame para poder utilizar ggplot a10DF tsdfa10 MA1a10DF tsdfMA1a10 MA3a10DF tsdfMA3a10 MA9a10DF tsdfMA9a10 MA21a10DF tsdfMA21a10 número de observaçoes na série temporal n lengtha10DFtime realiza a representação gráfica das séries temporais filtradas armazenadas no formato DF com a aplicação do filtro média móvel os primeiros a e os últimos a elementos da série filtrada não recebem valor então é realizada a representação gráfica sem tais valores ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA1a10DF2n2time y MA1a10DF2n2value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 1 ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA3a10DF4n4time y MA3a10DF4n4value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 3 ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA9a10DF10n10time y MA9a10DF10n10value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 9 ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x MA21a10DF22n22time y MA9a10DF22n22value linetype 2 color blue labstitle Série temporal filtrada com média móvel a 21 determina a série temporal sem a componente trend determinada com a média móvel com a 9 inspecionando os gráfico a21 não produz um amortecimento mais significativo do que a9 mas com a21 uma parcela maior de dados é descartada do que para a9 a10SemTrendDF a10DF a10SemTrendDFvalue a10DFvalue MA9a10DFvalue exclui os últimos e os primeiros 10 elementos a10SemTrendDF a10SemTrendDFn10n a10SemTrendDF a10SemTrendDF110 ggplot geompathmapping aes x a10SemTrendDFtime y a10SemTrendDFvalue linetype 1 color red posicione o mouse no início do código e selecione Run para executar a linha correspondente o mouse avança automaticamente para a linha seguinte execute o código linha a linha e observe o resultado obtido alternativamente selecione todo o código botão direito do mouse Select All e execute Run a execução com sucesso vai gerar 5 figuras na área Plot lembre que é necessário carregar as bibliotecas com as funções e dados libraryfpp2 librarytsbox compare as curvas determinadas para filtragem do sinal a10 com média móvel com a1 a3 a9 a9 a21 com a1 o sinal filtrado azul é praticamente idêntico ao sinal não filtrado vermelho com a3 já é possível perceber um amortecimento ou redução da amplitude das variações com a9 a diferença entre o sinal filtrado e o não filtrado já é bastante nítida com a21 parece não haver ganho significativo em relação ao caso em que a9 mas o descarte de dados iniciais e finais é maior será adotado a9 com o uso deste filtro não foi possível obter uma curva sem oscilações mas é possível confirmar a presença da componente trend e que ela possui um comportamento não linear pois a inclinação da reta aumenta com o transcurso do tempo isto sugere que a componente trend possa ser aproximada por uma polinomial de 2º grau Série temporal filtrada com média móvel a 9 Série temporal filtrada com média móvel a 21 Série temporal sem a componente trend determinada com média móvel a 9 leia com atenção o código e identifique a aplicação do filtro sobre a série original para obter a componente trend a subtração da componente trend da série original para obter série com apenas as componentes sazonal e aleatória fim do exemplo Exemplo Identificar as componentes da série temporal a10 usando a função decompose O R disponibiliza funções que realizam a decomposição de séries temporais abra um arquivo RScript e insira o código abaixo decompõe a série temporal a10 utilizando a função decompose a variável obtida é uma estrutura com diversos campos a10Decomposed decomposea10 seleciona cada componente de a10 cada componente está no formato TS a10Trend a10Decomposedtrend a10Seasonal a10Decomposedseasonal a10Random a10Decomposedrandom converte do formato TS para data frame a10DF tsdfa10 a10TrendDF tsdfa10Trend a10SeasonalDF tsdfa10Seasonal a10RandomDF tsdfa10Random com a aplicação do filtro na função decompose a porção inical e final da componente trend não possui dados relevantes será excluída a porção m final e inicial de cada variável DF n lengtha10TrendDFtime m 10 a10TrendDF a10TrendDFnmn a10TrendDF a10TrendDF1m a10SeasonalDF a10SeasonalDFnmn a10SeasonalDF a10SeasonalDF1m a10RandomDF a10RandomDFnmn a10RandomDF a10RandomDF1m soma todas as componentes para comparar com a série original n lengtha10TrendDFtime inicializa a variável a10Recomposto no formato data frame a10Recomposto setNamesdataframematrixnrow n ncol 2 ctimevalue a10Recompostotime a10TrendDFtime a10Recompostovalue a10TrendDFvalue a10SeasonalDFvalue a10RandomDFvalue realiza a representação gráfica das componentes da série temporal ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10TrendDFtime y a10TrendDFvalue linetype 2 color blue labstitle Componente trend ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10SeasonalDFtime y a10SeasonalDFvalue linetype 2 color blue labstitle Componente Seasonal ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10RandomDFtime y a10RandomDFvalue linetype 2 color blue labstitle Componente Random ggplot geompathmapping aes x a10DFtime y a10DFvalue linetype 1 color red geompathmapping aes x a10Recompostotime y a10Recompostovalue linetype 2 color blue labstitle Componente Recomposta selecione todo o código botão direito do mouse Select All e execute Run a execução com sucesso vai gerar 4 figuras na área Plot pode ser verificado que a componente trend possui um comportamento com menos oscilações do que a componente trend determinada no exemplo anterior com o filtro média móvel com a9 isto ocorre porque foi utilizado outro filtro pode ser observado que a série obtida com a adição das 3 componentes a10Recomposto reproduziu de forma bastante satisfatória a série original a10 demonstrando que não houve adulteração dos dados após executar o código você terá na janela Environment superior direita a relação de variáveis criadas selecione a10Decomposed para obter os detalhes dela na janela superior esquerda a10Decomposed é uma Lista de comprimento 6 com seis campos os campos x seasonal trend random são do tipo time series ts e contém os dados originais da variável a10 e suas componentes foi utilizada uma decomposição considerando que as componentes estão no formato aditivo type additive fim do exemplo Correlação entre variáveis O coeficiente de correlação entre duas variáveis conjunto de dados séries temporais distintas expressa a relação linear entre elas terá valor limitado ao intervalo 1 1 O valor deste coeficiente é determinado apenas pela relação linear entre as variáveis não é influenciado por relações nãolineares Se as variáveis estão perfeitamente relacionadas então r1 e a representação destas variáveis em um gráfico que representa a variável 1 no eixo horizontal e a variável 2 no eixo vertical terá todos os valores posicionados sobre uma reta que parte da origem com inclinação de 45 Para r1 significa que as variáveis estão em perfeita oposição quando a variável 1 aumenta a variável 2 diminui nesta representação os valores estarão posicionados sobre uma reta com inclinação 45 Para r0 significa que não há relação entre as variáveis neste caso haverá um grande espalhamento dos valores na representação gráfica Se duas variáveis apresentarem uma correlação forte então se for possível prever o valor de uma delas para um instante no futuro será possível estimar o valor da outra variável No exemplo abaixo temperatura ambiente e consumo de energia elétrica como no exemplo abaixo apresentaram uma relação fraca coeficiente de correlação igual a 025 então não é possível estimar o consumo de energia elétrica com base na temperatura ambiente do futuro Caso fosse identificada uma correlação forte seria possível realizar uma previsão indireta do consumo de energia elétrica com base na previsão da temperatura ambiente Exemplo Determinação do coeficiente de correlação entre variáveis e representação gráfica da relação entre as variáveis Temperatura e Demanda de energia elétrica em vicelec realize a representação gráfica das variáveis Demand e Temperatura disponíveis na série temporal vicelec utilize a variável armazenada em formato time series para poder utilizar autoplot com dois gráficos indenpendentes autoplotvicelecAsTS cDemand Temperature facets TRUE color red converta a variável vicelec do formato tsibble para o formato time series e determine os vetores XDemanda e XTemperatura determine a correlação entre Demand e Temperature utilizando as variáveis do tipo vetor vicelecAsTS tstsvicelec XDemanda asnumeric vicelecAsTS Demand XTemperatura asnumericvicelecAsTS Temperature corXDemanda XTemperatura o resultado é 02594956 há uma correlação fraca entre estas variáveis o significado de forte ou fraco depende da natureza das variáveis e do contexto realize a representação gráfica entre estas variáveis ggplotdata vicelec geompathmapping aesx Temperature y Demand color blue linetype 1 observe que há um grande espalhamento de pontos isto demonstra que não há correlação forte entre as variáveis determine a correlação de uma variável com ela mesma use a variável XDemanda corXDemanda XDemanda o resultado obtido é 1 ou seja há uma relação perfeitamente linear entre a variável e ela mesma é o resultado esperado realize a representação gráfica desta variável com ela mesma ggplotdata vicelec geompathmapping aesx Demand y Demand color blue linetype 1 como esperado os pontos estão todos dispostos sobre a diagonal a 45 pois há uma relação linear perfeita forte entre a variável e ela mesma observe que no comando para realizar a representação gráfica foi informado que os dados estão na variável vicelec e no eixo horizontal foram representados os valores na coluna Demand de vicelec e no eixo vertical também foram representados os valores na coluna Demand de vicelec nesta representação gráfica não foram utilizados os vetores XDemanda e XTemperatura o mesmo gráfico seria obtido com ggplot geompathmapping aesx XDemanda y XDemanda color blue linetype 1 mas nesta última representação gráfica os valores que foram representados nos eixos horizontal e vertical são os armazenados no vetor XDemanda determine a correlação de uma variável com o valor dela multiplicado por 1 use a variável XDemanda corXDemanda XDemanda o resultado obtido é 1 ou seja há uma relação perfeitamente linear entre a variável e ela mesma este é o resultado esperado realize a representação gráfica desta variável com o valor dela multiplicado por 1 ggplotdata vicelec geompathmapping aesx Demand y Demand color blue linetype 1 como esperado os pontos estão todos dispostos sobre a diagonal a 45 pois há uma relação linear perfeita forte mas negativa entre a variável e uma cópia dela multiplicada por 1 fim do exemplo A autocorrelação de uma variável corresponde a determinar a correlação desta variável com uma cópia dela mesma quando os valores desta cópia são deslocados defasados no tempo em relação à variável original Se a variável é Xt então uma cópia desta variável com deslocamento no tempo corresponte a Xtt Esta análise é util para determinar a sazonalidade da variável A autocorrelação pode ser avaliada com as funções acf e gglagplot Exemplo Análise de sazonalidade em função senoidal Uma senóide é um sinal periódico perfeito ótimo para utilizar como referência de análise insira o código abaixo em um arquivo R Script execute o código linha a linha posicione o mouse na primeira linha do código e selecione Run será executa apenas a linha correspondente o cursor do mouse pula para a próxima linha continue selecionando Run até atingir o final do código se preferir o executar todo o código sem avaliar o resultado individual de cada linha selecione todo o código botão direito do mouse Select All e execute o código Run inicialização de parâmetros da função senoidal Var1 T período f frequência deltat diferença entre dois valores consecutivos de t t vetor com valores de tempo n quantidade de valores no vetor t T 10 f 1T deltat 025 t seq010Tdeltatbydeltat Var1 sin2pift Var1medio meanVar1 n lengthVar1 inicialização de vetores m número desejado de coeficientes de correlação e autocorrelação m 300 RelCoefA rep0 times m RelCoefB rep0 times m RelCoefAutoCor rep0 times m Deltat rep0 times m Lag rep0times m denominador do coeficiente de autocorrelação c0 autocovariancia para defasagem nula SomaDenominador 0 for j in 1n SomaDenominador SomaDenominador Var1j Var1medio2 c0 SomaDenominador estrutura para determinar manualmente a autocorrelação da variável var 1 esta determinação é realizada mais facilmente através da função acf foi realizada desta forma para compreender a definição e auxiliar a interpretar os resultados obtidos com a função acf for k in 1m determinação de Var2 corresponde a Var1 deslocada no tempo delta tk Var2 sin2pift delta Var2medio meanVar2 coeficiente de correlação entre Var1 e Var2 determinados através de procedimentos diferentes CoefCorA corVar1 Var2 CoefCorB sumVar1Var2 n1sqrtvarVar1sqrtvarVar2 coeficiente de autocorrelação para Var1 ck autocovariancia para defasagem k SomaNumerador 0 for j in k1n SomaNumerador SomaNumerador Var1jVar1medioVar2jVar1medio ck SomaNumerador rk coeficiente de autocorrelação CoefAutoCor ckc0 RelCoefAk CoefCorA RelCoefBk CoefCorB RelCoefAutoCork CoefAutoCor Deltatk delta Lagk k determina automaticamente a autocorrelação da variável Var1 usando a função acf coefACF acfVar1 lagmax m realiza a representação gráfica da variável Var1 ggplot geompathmapping aesx t y Var1 labstitle Var1 sin2 pi f t realiza a representação gráfica dos coeficientes de correlação e autocorrelação o eixo horizontal é representado pelo valor da defasagem de tempo plotDeltat RelCoefA pch 0 col blue ylab Coef correlação xlab Tempo de defasagem s main Coef de Correlação e Autocorrelação pointsDeltat RelCoefB pch 6 col red pointsDeltat RelCoefAutoCor pch 8 col cyan realiza a representação gráfica dos coeficientes de correlação e autocorrelação o eixo horizontal é representado pelo número da componente da defasagem de tempo plotLag RelCoefA pch 0 col blue ylab Coef correlação xlab Numero da componente main Coef de Correlação e Autocorrelação pointsLag RelCoefB pch 6 col red pointsLag RelCoefAutoCor pch 8 col cyan realiza a representação gráfica do coeficiente de autocorrelação de Var1 obtido com o procedimento manual e através da função acf plotLag RelCoefAutoCor pch 8 col cyan xlab Numero da componente main Coef de autocorrelação determinado manualmente e com a função acf pointscoefACFacf realiza a representação gráfica da relação entre o número da componente e a defasagem correspondente plotLagDeltat col blue xlab Numero da componente ylab Tempo de defasagem realiza a análise de autocorrelação da função Var1 com a função gglagplo NumDadosEmUmPeríodo Tdeltat define variáveis e constroi gráfico de autocorrelação NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 20 NumLagsDesejados 20 LagsDesejados seq0NumDeLagsEmUmPeriodoNumLagsDesejados byNumDeLagsEmUmPeriodo gglagplotVar1 setlags LagsDesejados defasagem deltatLagsDesejados RelLagDefasagem matrixcLagsDesejadosdefasagemnrowlengthLagsDesejadosncol2 exclui variáveis rmNumLagsDesejados rmLagsDesejados rmdefasagem rmRelLagDefasagem define variáveis e constroi gráfico de autocorrelação NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 10 NumLagsDesejados 20 LagsDesejados seq0NumDeLagsEmUmPeriodoNumLagsDesejados byNumDeLagsEmUmPeriodo gglagplotVar1 setlags LagsDesejados defasagem deltatLagsDesejados RelLagDefasagem matrixcLagsDesejadosdefasagemnrowlengthLagsDesejadosncol2 Análise dos resultados a variável Var1 é uma senoide em vermelho CoefCorB e azul CoefCorA estão representados os coeficientes de correlação da variável Var1 em relação à variável Var2 determinados para diferentes defasagens com os dois procedimentos observe que Var1 sin2 f t e Var1 sin2 f tt onde t é a defasagem que está sendo avaliada quando a defasagem é igual a um múltiplo inteiro do período T10 então para t igual a 10 20 30 40 Var1 Var2 e o coeficiente de correlação é igual a 1 quando a defasagem é igual a um múltiplo da metade do período T10 então para t igual a 5 15 25 Var1 Var2 e o coeficiente de correlação é igual a 1 observe que o coeficiente de autocorrelação de uma variável senoidal ciano também é uma variável senoidal porém a amplitude é decrescente linearmente com o aumento da defasagem ou seja CoefAutoCorrel Amplitude sin2 f t tal que Amplitude a x b onde o coeficiente angular a é negativo obs o coeficiente de autocorrelação de uma variável linear y axb também decresce linearmente com o aumento da defasagem neste gráfico o eixo horizontal representa o número da componente enquanto que no gráfico anterior o eixo horizontal estava associado à desagem este gráfico representa o coeficiente de autocorrelação obtido com o procedimento manual e com a função acf o resultado obtido com os dois procedimentos é idêntico foram realizados os dois procedimentos para auxiliar na compreensão dos resultados disponibilizados pela função acf e na definição do procedimento relação entre o número da componente de defasagem e o tempo da defasagem resultados obtidos com a função gglagplot com NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 20 observe que para lag 0 a defasagem é nula então há uma correlação perfeitamente linear entre a variável Var1 e sua cópia defasada por t0 todos os pontos estão posicionados perfeitamente sobre a reta a 45 conforme aumenta a defasagem lag2 até lag10 aumenta o espalhamento dos dados ou seja o coeficiente de correlação entre Var1 e Var2 vai diminuindo para lag10 a representação é um círculo situação obtida para uma defasagem igual a T4 a correlação entre Var1 e Var2 é igual a zero para lag12 até lag20 o espalhamento vai sendo reduzido o coeficiente de correlação entre Var1 e Var2 vai aumentando em módulo mas com valor negativo para lag0 até lag8 a inclinação está para a reta a 45 para lag12 até lag20 a inclinação está para a reta a 45 para lag20 todos os pontos estão posicionados sobre uma reta a 45 demonstrando uma correlação linear perfeita em oposição ou seja Var1Var2 esta situação é obtida para defasagem igual a T2 para lag22 até lag30 o espalhamento vai aumentando e depois volta a diminuir para lag32 até lag40 para lag40 todos os pontos estão posicionados sobre a reta a 45 esta situação ocorre para tT relação entre o número do lag e a defasagem temporal correspondente observe que para lag10 defasagem 25 este par ocorre na linha 6 da matriz RelLagDefasagem 1 2 1 0 00 2 2 05 3 4 10 4 6 15 5 8 20 6 10 25 7 12 30 8 14 35 9 16 40 10 18 45 11 20 50 12 22 55 13 24 60 14 26 65 15 28 70 16 30 75 17 32 80 18 34 85 19 36 90 20 38 95 21 40 100 resultados obtidos com a função gglagplot com NumDeLagsEmUmPeriodo NumDadosEmUmPeríodo 10 observe que para lag0 40 80 120 160 todos os pontos estão posicionados sobre a reta a 45 isto corresponde a t 0 T 2T 3T 4T fim do exemplo Exemplo Avaliar a existência de sazonalidade na variável a10 gglagplota10 c024 observe que para lag 12 os pontos estão muito concentrados sobre a diagonal a 45 ou seja há uma relação forte da variável com uma cópia dela que esteja deslocada de 12 unidades de lag a figura indica que cada unidade de lag corresponde a 1 mês ou seja o comportamento da variável apresenta uma repetição sazonalidade a cada 12 meses para os demais valores de lag há um maior espalhamento de dados e portanto uma relação mais fraca da variável com sua cópia deslocada no tempo o comando gglagplot pode receber mais parâmetros de entrada por exemplo é possível especificar um vetor com os valores de defasagem lag gglagplota10 setlags c024 observe que para lag0 lag12 lag24 há maior concentração sobre a diagonal a 45 fim do exemplo Exemplo Análise de sazonalidade na Temperatura e Demanda de energia elétrica em vicelec insira o código abaixo em um arquivo R Script vicelec armazena dados de temperatura e demanda de energia elétrica coletados de 30 em 30 minutos nos anos de desejamos identificar se há sazonalidade na temperatura e na demanda para realizar esta análise foi determinada da temperatura média e a demanda média diárias acredito que há ferramenta específica para determinar esta informação em variável no formato tsibble mas não identifiquei tal ferramenta então determinei as médias diárias através do código abaixo para esta implementação temperatura e demanda devem estar no formato de vetor então realizei a conversão tsibble para data frame e de data frame para vetor converte vicelec do formato tsiblle para data frame com a conversao vicelecDF ficou organizada em 3 colunas id Time value as primeiras n linhas são de demanda e as últimas n linhas são de temperatura n é determinado com o procedimento abaixo vicelecDF tsdfvicelec n lengthvicelecDF 1 n n2 vicelecTS tstsvicelec determina os vetores com temperatura demanda e tempo anomesdia horaminseg XTempo vicelecDF1nTime XDemanda vicelecDF1nvalue XTemperatura vicelecDFn12nvalue inicializa vetores TempMedia seqnrow n ncol 1 DemandaMedia seqnrow n ncol 1 DataCalendario seqnrow n ncol 1 inicializa variáveis Dia asDateXTempo1 SomaTemperatura 0 SomaDemanda 0 NumDias 0 dia 0 estrutura para determinar temperatura e demanda média diárias fori in 1n if asDateXTempoi Dia SomaTemperatura SomaTemperatura XTemperaturai SomaDemanda SomaDemanda XDemandai NumDias NumDias 1 else dia dia 1 Dia asDateXTempoi TempMediadia SomaTemperatura NumDias DemandaMediadia SomaDemanda NumDias DataCalendariodia asDateXTempoi SomaTemperatura XTemperaturai SomaDemanda XDemandai NumDias 0 filtra os dados com média móvel a15 desta forma a temperatura no dia X será a soma da temperatura dos 7 dias que antecedem X mais a soma da temperatura dos 7 dias que sucedem X mais a temperatura do dia X tudo divido por 15 TempMediafiltrado maTempMedia15 DemandaMediafiltrado maDemandaMedia15 realiza a representação gráfica da temperatura conforme armazenados em vicelec ggplotdata vicelec geompathmapping aesx Time y Temperature color blue linetype 1 ggplotdata vicelec geompathmapping aesx Time y Demand color blue linetype 1 realiza a representação gráfica dos 100 primeiros valores de temperatura e demanda ggplotdata vicelec0100 geompointmapping aesx Time y Temperature color blue linetype 1 ggplotdata vicelec0100 geompointmapping aesx Time y Demand color blue linetype 1 realiza a representação gráfica da temperatura e demanda média diárias ggplot geompathmapping aesx DataCalendario y TempMedia color red linetype 1 geompathmapping aesx DataCalendario y TempMediafiltrado color blue linetype 1 labstitle Temperatura ggplot geompathmapping aesx DataCalendario y DemandaMedia color red linetype 1 geompathmapping aesx DataCalendario y DemandaMediafiltrado color blue linetype 1 labstitle Demanda realiza a representação gráfica da autocorrelação da temperatura e demanda média diária para identificar sazonalidade durante um período de 36 meses inicialmente é realizada a análise para os dados que foram filtrados NumDiasMes 30 NumMeses 36 LagsDesejados seq0NumDiasMesNumMeses by NumDiasMes deltat 1 defasagem deltatLagsDesejados RelLagDefasagem matrixcLagsDesejadosdefasagemnrowlengthLagsDesejadosncol2 gglagplotTempMediafiltrado setlags LagsDesejados labstitle Temperatura Media Filtrado vetor gglagplotDemandaMediafiltrado setlags LagsDesejados labstitle Demanda Media Filtrado vetor na autocorrelação da temperatura média diária é possível observar que para defasagem lag de 6 meses 30dias6meses lag 180 os dados estão dispostos ao longo da diagonal 45 o que representa uma autocorrelação negativa quanto mais concentrados sobre esta diagonal mais forte será esta autocorrelação este padrão se repete para 18 meses lag 540 30 meses lag 900 para defasagem de 12 meses 30dias12meses lag 360 os dados estão dispostos ao longo da diagonal 45 o que representa uma autocorrelação positiva quanto mais concentrados sobre esta diagonal mais forte será esta autocorrelação este padrão se repete para 24 meses lag isto demonstra a sazonalidade da temperatura média diária com período de variação anual na autocorrelação da demanda média diária com a defasagem mensal não foi possível identificar a concentração de dados sobre a diagonal 45 nem sobre a diagonal 45 isto demonstra que não há sazonalidade anual para esta variável poderiam ser avaliados outros padrões de defasagem diferentes do utilizado para tentar identificar sazonalidade com período diferente do anual realiza a representação gráfica da autocorrelação da temperatura e demanda média diária para identificar sazonalidade durante um período de 36 meses agora o procedimento é repetido para os dados que não foram filtrados gglagplotTempMedia setlags LagsDesejados labstitle Temperatura Media Não filtrado vetor como os dados não foram filtrados há uma maior variação da temperatura entre os dias consecutivos o gráfico de autocorrelação indica um grande espalhamento a análise da autocorreção conduz à conclusão de inexistência de sazonalidade para a temperatura média diária NÂO Filtrado gglagplotDemandaMedia setlags LagsDesejados labstitle Demanda Media Não filtrado vetor se para a demanda média filtrada o espalhamento dos dados já foi grande então para a demanda média NÃO Filtrada o espalhamento é ainda maior e leva à conclusão da inexistência de sazonalidade só por curiosidade converti os dados para o formato data frame e repeti a análise foram construidos duas variáveis uma com os dados filtrados e outra sem a filtragem as duas variáveis tem as médias diárias a visualização não ficou tão clara quanto a que foi obtida com os dados no formato vetor não incluir na versão para os alunos TempDemandaDF dataframeDataCalendarioTempMediaDemandaMedia TempDemandaFiltradoDF dataframeDataCalendarioTempMediafiltradoDemandaMediafiltrado gglagplotTempDemandaDFTempMedia setlags LagsDesejados labels TRUE labstitle Temperatura Media data frame gglagplotTempDemandaFiltradoDFTempMediafiltrado setlags LagsDesejados labels TRUE labstitle Temperatura Media Filtrado data frame gglagplotTempDemandaDFTempMedia setlags LagsDesejados labels TRUE labstitle Temperatura Media data frame gglagplotTempDemandaFiltradoDFDemandaMedia setlags LagsDesejados labels TRUE labstitle Demanda Media data frame gglagplotTempDemandaFiltradoDFDemandaMediafiltrado setlags LagsDesejados labels TRUE labstitle Demanda Media Filtrado data frame fim do segmento opcional gglagplotXTemperatura setlags LagsDesejados labstitle Temperatura a cada 30 minutos execute o código linha a linha posicione o mouse na primeira linha do código e selecione Run será executa apenas a linha correspondente o cursor do mouse pula para a próxima linha continue selecionando Run até atingir o final do código em vicelec estão armazenados os valores de Temperatura e Demanda elétrica coletados diariamente a cada 30 minutos a figura ao lado apresenta os 100 primeiros valores de temperatura ou seja os valores de temperatura dos dias 01 a 03 de dezembro de 2012 em vicelec há 105216 valores armazenados como pode ser observado há variação de temperatura ao longo do dia o que desejamos neste momento é identificar a sazonalidade anual ou seja o padrão de repetição entre 2012 2013 2014 este padrão pode ser observado na figura ao lado o que precisamos neste momento é a temperatura média diária como eu não identifiquei função específica no R para determinar a média diária de uma variável no caso temperatura e demanda elétrica em uma variável tsibble então foi implementado código que realiza esta ação na figura ao lado há a representação da temperatura média diária em vermelho obtida com o referido código podese perceber que há muita variação de temperatura de um dia para o outro para poder identificar o padrão de repetição foi realizada a filtragem da temperatura média diária em azul com um filtro média móvel a15 experimentei outros valores de a e este parece ter produzido o melhor resultado reduzindo a o efeito da filtragem desaparece e aumentando a compromete a reprodução do padrão e resulta em mais valores no início e no final da série que serão perdidos esta figura sugere que existe um padrão de repetição sazonalidade na temperatura média a figura ao lado apresenta a demanda média diária em vermelho e a demanda média diária filtrada em azul com o filtro média móvel a15 observando esta figura não é possível identificar a existência de um padrão de repetição sazonalidade esta figura apresenta o resultado da análise de autocorrelação da temperatura média diária filtrada TMDF para esta variável há um valor para cada dia então para cada mês há trinta valores desta forma lag0 lag30 lag60 corresponde a uma defasagem mensal na temperatura observase que para lag0 os pontos estão todos posicionados sobre a diagonal a 45 ou seja há uma relação linear perfeita da TMDF em relação a ela mesma este é o resultado esperado o coeficiente de correlação da TMDF em relação a ela mesma é igual a 1 conforme aumenta aumenta o espalhamento dos dados para lag90 já está quase um círculo lag90 corresponde a 3 meses ou seja 14 do ano o coeficiente de correlação da TMDF em relação a uma cópia dela defasada de 3 meses produz um coeficiente de correlação quase nulo para lag180 6 meses ou 12 do ano os pontos estão muito concentrados sobre a diagonal a 45 o espalhamento aumenta novamente para lag270 ou 34 do ano o espalhamento é bastante grande quase uma circunferência para lag0 0 ano lag360 1 ano lag720 2 anos lag1080 3 anos os pontos estão concentrados sobre a diagonal a 45 o que corresponde a um coeficiente de correlação da TMDF com uma cópia dela defasada destes períodos muito próximo a 1 para lag180 lag540 lag900 os pontos estão concentrados sobre a diagonal a 45 o que corresponde a um coeficiente de correlação da TMDF com uma cópia dela defasada destes períodos muito próximo a 1 com esta análise está confirmada a sazonalidade da temperatura média diária filtrada esta figura apresenta o resultado da análise de autocorrelação da demanda média diária filtrada DMDF observando os diversos gráficos não é possível identificar em qualquer deles uma concentração de pontos sobre a diagonal 45 ou 45 em todos eles há um espalhamento muito grande dos dados ou seja o coeficiente de correlação da DMDF em relação a uma cópia dela defasada dos diversos valores 30 dias 60 dias sempre resultou em um valor muito baixo então podese descartar a existência de sazonalidade para as defasagens avaliadas o que reforça a conclusão realizada quando foi observado o comportamento da demanda como função do tempo não está descartada a existência de sazonalidade para outros valores de defasagem esta figura apresenta o resultado da análise de autocorrelação da temperatura média diária NÃO filtrada TMDNãoF compare esta figura com a já apresentada Temperatura Media Filtrado analise a figura em que está apresentado o comportamento da temperatura média diária não filtrada em vermelho e filtrada em azul como uma função do tempo observe que sem a filtragem a variação de temperatura entre dias consecutivos é muito grande por outro lado com a filtragem dos dados a variação de temperatura entre os dias consecutivos foi bastante reduzida como a TMDNãoF apresenta uma variação muito grande os pontos sobre as figuras ao lados estão sempre muito dispersos não é possível perceber com clareza a concentração de pontos sobre as diagonais a 45 e 45 podese afirmar que para a temperatura média diária filtrada existe sazonalidade para a temperatura média diária não filtrada a sazonalidade é fraca ou quase inexistênte esta figura apresenta o resultado da análise de autocorrelação da temperatura armazenada a cada 30 minutos como esperado para lag0 os pontos estão todos concentrados sobre a diagonal a 45 mas para todos os demais lags o espalhamento dos dados é muito grande não é possível identificar concentração sobre as diagonais a 45 e 45 a análise destas duas últimas figuras destaca a importância do processamento dos dados no caso a filtragem para viabilizar a análise consistente dos mesmos Athanasopoulos G Hyndman RJ Forecasting Principles and Practice 2nd edition pag 247 Carregar o pacote fpp2 Carregar uma parcela dos dados armazenados em ausair para a variável air e realizar a previsão para 5 períodos futuros utilizando o modelo holt digite window para aprender sobre a função window A interface do RStudio pode ser organizada em 4 paineis Source Environment History Connections Tutorial Console Files Plots Packages Help Viewer Presentation Selecionar fc na janela Environment para inspecionar seu conteúdo na janela Source x armazena a série temporal selecionada basta clicar no final direito da linha e acionar Enterpara apresentar no Console os dados da série informada par armazena o conteúdo lt bt correspondentes ao primeiro período que antecede o primeiro dado da série temporal este resultado é uma estimativa realizada pelo modelo com base nos dados da série temporal selecionada Compare os valores em par com os apresentados na tabela 72 do livro fitted armazena os valores previstos pelo modelo no intervalo em que há dados da série temporal coluna Forecast da figura no livro states armazena os valores dos parâmetros level α lt trend slope bt calculados pelo modelo no intervalo em que há dados da série temporal colunas Level e Slope da figura no livro Notação do livro Notação nas notas de aula F τ abτ Neste caso Levelpara último t 7249956 Slopepara último t 2101740 Para utilizar os parâmetros determinados pelo modelo e realizar manualmente a determinação da previsão para período futuro h realizar Meanh Levelúltimo t h Slopeúltimo t Para realizar a previsão para os próximos 5 períodos futuros h assume os valores em 12345 Com a execução fc holtair 5 foi especificado para realizar a previsão para os próximos 5 períodos futuros mean armazena o valor central da previsão para períodos futuros à última observação registrada o valor nesta variável corresponde ao obtido com a aplicação da equação recém apresentada Meanh Levelúltimo t h Slopeúltimo t upper e lower armazena o limite superior e o limite inferior da previsão para períodos futuros à última observação registrada level armazena o percentual de enquadramento correspondente aos valores upper e lower mean level x upper lower autoplotfc realiza a representação gráfica da série temporal com os dados observados dados reais passados t 1 26 e a previsão para períodos futuros h 1 5