Friday 25 August 2017

Autoregressive Moving Average Python


Modelos de agrupamento de volatilidade: EWMA e GARCH (1,1) A agregação de volatilidade é uma das características mais importantes dos dados financeiros e incorporá-la em nossos modelos pode produzir uma estimativa de risco mais realista. O agrupamento de volatilidade é evidente pelo fato de que a volatilidade de hoje está positivamente correlacionada com a volatilidade de ontem. Assim, se ontem observou alta volatilidade, hoje também é provável que observe alta volatilidade. Isto significa que a volatilidade está condicionada à volatilidade passada (volatilidade condicional). Há dois métodos para calcular isso: Média Móvel Ponderada Exponencial (EWMA) EWMA é um método freqüentemente usado para estimar a volatilidade nos retornos financeiros. Este método de cálculo da variância condicional (volatilidade) dá mais peso às observações atuais do que observações passadas. O estimador EWMA é da forma abaixo: r representa os retornos. É o fator de decaimento, também conhecido como a constante de suavização. Esse fator determina o esquema de ponderação exponencialmente decrescente das observações. Desta forma EWMA contas para o tempo variâncias dependentes. Garante que a variância de hoje está positivamente correlacionada com a volatilidade de ontem. Um lambda alto indica uma decadência lenta na série, isto é, uma variância alta tenderá a persistir por mais tempo. RiskMetrics usa um lambda de 0,94 que é apropriado para analisar dados diários. EWMA é na verdade um subconjunto de GARCH (1,1). Saiba mais sobre EWMA Generalizado Autoregressive Condicional Heteroscedasticity (GARCH (1,1)) GARCH é outro modelo para estimar a volatilidade que cuida da volatilidade clustering questão. GARCH é derivado de ARCH, i. e. Heteroscedasticity Condicional Autoregressive. AR significa que os modelos são modelos autorregressivos em retornos ao quadrado, ou seja, há uma correlação positiva entre o risco de ontem eo risco de hoje. Condicional significa que a volatilidade dos próximos anos está condicionada à informação disponível neste período. Heterocedasticidade significa volatilidade não constante. Significa que a série temporal de uma variável aleatória tem uma variação variável no tempo. G significa Generalized, o que significa que é uma versão generalizada que pode explicar fatores diferentes em diferentes mercados. A forma mais comum de GARCH é GARCH (1,1). Este modelo é representado como: O conceito-chave aqui é que a volatilidade é uma função de retornos defasados ​​quadrados e variações retardadas. O termo (1,1) indica este 1 lag para cada quadrado de retorno e variância quadrática do dia anterior. Onde: é o peso para retornos ao quadrado retardado é o peso para desvios defasados ​​é uma constante igual a x VL onde VL é a taxa de variância de longo prazo e é o seu pesoTime Series Analysis: A Primer Análise de séries temporais é um assunto complexo, mas em resumo , Quando usamos nossas técnicas transversais usuais como regressão em dados de séries temporais, as variáveis ​​podem parecer mais significativas do que realmente são e não estamos aproveitando as informações que a correlação serial nos dados fornece. O que é uma série de tempo Muitos conjuntos de dados são transversais e representam uma única fatia de tempo. No entanto, também temos dados coletados em muitos períodos - dados de vendas semanais, por exemplo. Este é um exemplo de dados de séries temporais. Análise de séries temporais é um ramo especializado de estatísticas utilizadas extensivamente em campos como Econometria e Pesquisa Operacional. Infelizmente, a maioria dos pesquisadores de marketing e cientistas de dados ainda têm pouca exposição a ele. Como bem ver, tem muitas aplicações muito importantes para os comerciantes. Apenas para obter os nossos termos em linha reta, abaixo é uma ilustração simples do que um arquivo de dados de série de tempo parece. A coluna denominada DATE é a variável de data e corresponde a um ID de respondente em dados de pesquisa de pesquisa. WEEK, o número de seqüência de cada semana, é incluído porque usar esta coluna em vez das datas reais pode tornar os gráficos menos confusos. O número de seqüência também pode servir como uma variável de tendência em certos tipos de modelos de séries temporais. VENDAS é o número de embalagens vendidas em cada semana. Devo notar que a unidade de análise não tem que ser marcas e pode incluir consumidores individuais ou grupos de consumidores cujo comportamento é seguido ao longo do tempo. Mas primeiro, por que precisamos distinguir entre cross-sectional e análise de séries de tempo Por várias razões, uma delas sendo que nossos objetivos de pesquisa serão geralmente diferentes. Outra é que a maioria dos métodos estatísticos que aprendemos na faculdade e utilizamos na pesquisa de marketing são destinados a dados transversais, e se os aplicarmos a dados de séries temporais os resultados obtidos podem ser enganosos. O tempo é uma dimensão nos dados que precisamos levar em conta. A análise de séries temporais é um assunto complexo, mas, em resumo, quando usamos nossas técnicas transversais usuais, como a regressão em dados de séries temporais: os erros padrão podem estar muito distantes. Na maioria das vezes, os valores de p serão muito pequenos e as variáveis ​​podem parecer mais significativas do que realmente são. Em alguns casos, os coeficientes de regressão podem ser seriamente tendenciosos e não estamos aproveitando as informações que a correlação serial nos dados fornece. Para retornar aos nossos dados de exemplo, um objetivo pode ser a previsão de vendas para nossa marca. Existem muitas maneiras de fazer isso e a mais direta é a análise univariada, na qual extrapolamos essencialmente dados futuros de dados passados. Dois métodos de séries de tempo univariados populares são Suavização Exponencial (por exemplo, Holt-Winters) e ARIMA (Média Móvel Integrada Autoregressiva). No exemplo mostrado na Figura 1, um ano (52 semanas) de dados históricos de vendas tem sido usado para prever as vendas um trimestre (12 semanas) à frente com um modelo ARIMA. Obviamente, há riscos em assumir que o futuro será como o passado, mas, felizmente, também podemos incluir variáveis ​​causais (preditora) para ajudar a mitigar esses riscos. Mas além de melhorar a precisão de nossas previsões, outro objetivo pode ser entender quais atividades de marketing mais influenciam as vendas. As variáveis ​​causais incluirão tipicamente dados tais como GRPs e preço e podem também incorporar dados de exames do consumidor ou de variáveis ​​exógenas tais como GDP. Esses tipos de análises são chamados Market Response ou Marketing Mix modelagem e são um componente central da análise ROMI (Return on Marketing Investment). Eles podem ser considerados como análise de driver chave para dados de séries temporais. Os resultados são freqüentemente usados ​​em simulações para tentar encontrar o mix de marketing ideal. Modelos de funções de transferência. ARMAX e Regressão Dinâmica são termos que se referem a procedimentos de regressão especializados desenvolvidos para dados de séries temporais. Há métodos mais sofisticados, além disso, e toque mal em alguns em apenas um pouco. Várias séries de tempo Você pode precisar analisar várias séries de tempo simultaneamente, p. Vendas de suas marcas e principais concorrentes. A Figura 2 abaixo é um exemplo e mostra dados de vendas semanais para três marcas ao longo de um período de um ano. Uma vez que os movimentos de vendas de marcas concorrendo entre si normalmente estarão correlacionados ao longo do tempo, muitas vezes fará sentido e será mais rigoroso estatisticamente, incluir dados para todas as marcas-chave em um modelo, em vez de modelos separados para cada marca. Vector Autoregression (VAR), o Vector Error Correction Model (VECM) ea estrutura de espaço de estado mais geral são três abordagens freqüentemente utilizadas para análise de séries temporais múltiplas. Os dados causais podem ser incluídos e a modelagem Market ResponseMarketing Mix realizada. Existem vários métodos adicionais relevantes para a pesquisa de marketing e ciência de dados que descreverei brevemente. Os Modelos de Painel incluem seções transversais em uma análise de séries temporais. Os dados de vendas e marketing de várias marcas, por exemplo, podem ser empilhados uns sobre os outros e analisados ​​simultaneamente. A modelagem de painéis permite a análise de nível de categoria e também é útil quando os dados são infreqüentes (por exemplo, mensalmente ou trimestralmente). A Análise Longitudinal é um termo genérico e às vezes confusamente usado que pode se referir à modelagem de Painel com um pequeno número de períodos (painéis curtos), bem como a Medidas Repetidas, Análise de Curvas de Crescimento ou Análise Multinível. Em um sentido literal, ele subsume a análise de séries temporais, mas muitas autoridades reservam esse termo para a análise de dados com muitos períodos de tempo (por exemplo, gt 25). A Modelação de Equações Estruturais (SEM) é um método amplamente utilizado na modelagem da Curva de Crescimento e outras análises longitudinais. A análise de sobrevivência é um ramo da estatística para analisar o tempo esperado até que um ou mais eventos aconteçam, como a morte em organismos biológicos ea falha em sistemas mecânicos. Seu também chamado Análise de Duração em Economia e Análise História de Eventos em Sociologia. É freqüentemente usado em análise de churn do cliente. Em alguns casos, um modelo não se encaixa bem na série inteira devido a mudanças estruturais dentro da série, e os parâmetros do modelo variam ao longo do tempo. Existem inúmeros testes e modelos de pontos de interrupção (por exemplo, Espaço de estado, Regressão de comutação) disponíveis para estas circunstâncias. Você também pode notar que as vendas, atividade de call center ou outras séries de dados que você está monitorando exibem clusters de volatilidade. Ou seja, pode haver períodos em que os números se movem para cima e para baixo de maneira muito mais extrema do que outros períodos. A Figura 3 apresenta uma ilustração deste tipo de padrão. Nestes casos, você deve considerar uma classe de modelos com o nome proibitivo de GARCH (Generalized Autoregressive Condicional Heteroskedasticity). Os modelos ARCH e GARCH foram originalmente desenvolvidos para mercados financeiros, mas podem ser usados ​​para outros tipos de dados de séries temporais quando a volatilidade é de interesse. A volatilidade pode cair em muitos padrões e, conseqüentemente, há muitos sabores de modelos de GARCH. Podem ser incluídas variáveis ​​causais. Existem também extensões multivariadas (MGARCH) se você tem duas ou mais séries que você deseja analisar em conjunto. Non-Parametric Econometrics é uma abordagem muito diferente para estudar séries temporais e dados longitudinais que está recebendo agora muita atenção por causa de dados grandes e maior poder de computação que agora desfrutamos. Estes métodos são cada vez mais viáveis ​​e úteis como alternativas aos métodos mais familiares, tais como os descritos neste artigo. A Aprendizagem Automática (por exemplo, Redes Neurais Artificiais) também é útil em algumas circunstâncias, mas os resultados podem ser difíceis de interpretar - eles predizem bem, mas podem não nos ajudar a entender o mecanismo gerado pelos dados. Em certa medida, esta desvantagem também se aplica a técnicas não-paramétricas. A maioria dos métodos que Ive mencionou são técnicas do domínio do tempo. Outro grupo de métodos conhecido como Frequency Domain. Desempenha um papel mais limitado em Pesquisa de Marketing. Ive apenas riscado a superfície de um rico e multifacetado conjunto de técnicas que são novos para a maioria dos Pesquisadores de Marketing e Cientistas de Dados, mas cada vez mais importante para o nosso trabalho. Para os leitores que desejam aprender mais sobre esses métodos, existem agora cursos on-line e muitos excelentes livros introdutórios disponíveis, bem como aqueles que abrangem tópicos específicos em profundidade. Bio: Kevin Gray é presidente da Cannon Grey. Uma ciência de marketing e consultoria de análise. Original. Reposted with permission. How para criar um modelo ARIMA para a série de tempo de previsão com Python Um popular e amplamente utilizado método estatístico para a série de tempo de previsão é o modelo ARIMA. ARIMA é um acrônimo que significa AutoRegressive Integrated Moving Average. É uma classe de modelo que captura um conjunto de diferentes estruturas temporais padrão em dados de séries temporais. Neste tutorial, você descobrirá como desenvolver um modelo ARIMA para dados de séries temporais com Python. Depois de concluir este tutorial, você saberá: Sobre o modelo ARIMA os parâmetros utilizados e as suposições feitas pelo modelo. Como ajustar um modelo ARIMA aos dados e usá-lo para fazer previsões. Como configurar o modelo ARIMA em seu problema de série de tempo. Let8217s começar. Modelo de média móvel integrado Autoregressivo Um modelo ARIMA é uma classe de modelos estatísticos para analisar e prever dados de séries temporais. Aborda explicitamente um conjunto de estruturas padrão em dados de séries de tempo e, como tal, fornece um método simples, mas poderoso, para fazer previsões de séries de tempo hábeis. ARIMA é um acrônimo que significa AutoRegressive Integrated Moving Average. É uma generalização do mais simples AutoRegressive Moving Average e acrescenta a noção de integração. Este acrônimo é descritivo, capturando os aspectos-chave do próprio modelo. Resumidamente, eles são: AR. Autoregressão. Um modelo que usa a relação dependente entre uma observação e um número de observações atrasadas. EU . Integrado. A utilização de diferenciação de observações em bruto (por exemplo, subtraindo uma observação de uma observação no passo de tempo anterior) para tornar a série de tempo estacionária. MA. Média móvel. Um modelo que utiliza a dependência entre uma observação e um erro residual de um modelo de média móvel aplicado a observações defasadas. Cada um desses componentes é explicitamente especificado no modelo como um parâmetro. Uma notação padrão é usada de ARIMA (p, d, q) onde os parâmetros são substituídos com valores inteiros para indicar rapidamente o modelo ARIMA específico que está sendo usado. Os parâmetros do modelo ARIMA são definidos da seguinte forma: p. O número de observações de atraso incluídas no modelo, também chamado de ordem de retardamento. D. O número de vezes que as observações brutas são diferenciadas, também chamado de grau de diferenciação. Q. O tamanho da janela de média móvel, também chamado de ordem de média móvel. Um modelo de regressão linear é construído incluindo o número especificado eo tipo de termos, e os dados são preparados por um grau de diferenciação para torná-lo estacionário, isto é, para remover tendências e estruturas sazonais que afetam negativamente o modelo de regressão. Um valor de 0 pode ser usado para um parâmetro, que indica não usar esse elemento do modelo. Desta forma, o modelo ARIMA pode ser configurado para executar a função de um modelo ARMA, e até mesmo um simples modelo AR, I ou MA. A adoção de um modelo ARIMA para uma série temporal pressupõe que o processo subjacente que gerou as observações é um processo ARIMA. Isso pode parecer óbvio, mas ajuda a motivar a necessidade de confirmar os pressupostos do modelo nas observações brutas e nos erros residuais das previsões do modelo. Em seguida, let8217s dê uma olhada em como podemos usar o modelo ARIMA em Python. Vamos começar com o carregamento de uma simples série de tempo univariada. Pare de aprender Série de tempo Previsão da maneira lenta Inscreva-se e obtenha um mini-curso gratuito de previsão de séries de 7 dias Você obterá:. Uma lição por dia entregue à sua caixa de entrada. Ebook PDF exclusivo contendo todas as lições. Confiança e habilidades para trabalhar através de seus próprios projetos Shampoo Sales Dataset Este dataset descreve o número mensal de vendas de shampoo ao longo de um período de 3 anos. As unidades são uma contagem de vendas e há 36 observações. O conjunto de dados original é creditado a Makridakis, Wheelwright e Hyndman (1998). Baixe o dataset e coloque-o em seu diretório de trabalho atual com o nome de arquivo 8220 shampoo-sales. csv 8220. Abaixo está um exemplo de carregar o conjunto de dados Sales Shampoo com Pandas com uma função personalizada para analisar o campo de data e hora. O conjunto de dados é baseado em um ano arbitrário, neste caso 1900. Primeiro, obtemos um gráfico de linha dos erros residuais, sugerindo que ainda pode haver alguma informação de tendência não capturada pelo modelo. ARMA Fit Linha de Erro Residual Lote Em seguida, obtemos um gráfico de densidade dos valores de erro residual, sugerindo que os erros são Gaussianos, mas não podem ser centrados em zero. ARMA Fit Plain Densidade de erro residual A distribuição dos erros residuais é exibida. Os resultados mostram que, de fato, há um viés na predição (uma média não nula nos resíduos). Observe que, embora acima usamos o conjunto de dados inteiro para a análise de séries temporais, idealmente nós realizariamos essa análise apenas no conjunto de dados de treinamento ao desenvolver um modelo preditivo. Em seguida, vamos ver como podemos usar o modelo ARIMA para fazer previsões. Modelo Modelo ARIMA de Previsão Rolling O modelo ARIMA pode ser usado para prever etapas futuras de tempo. Podemos usar a função predict () no objeto ARIMAResults para fazer previsões. Ele aceita o índice dos passos de tempo para fazer previsões como argumentos. Esses índices são relativos ao início do conjunto de dados de treinamento usado para fazer previsões. Se usássemos 100 observações no conjunto de dados de treinamento para ajustar o modelo, então o índice do próximo passo de tempo para fazer uma previsão seria especificado para a função de predição como start101, end101. Isso retornaria uma matriz com um elemento contendo a previsão. Também preferimos que os valores previstos estejam na escala original, no caso de termos qualquer diferença (dgt0 ao configurar o modelo). Isso pode ser especificado ao definir o argumento typ para o valor 8216levels8217. Typ8217levels8217. Alternativamente, podemos evitar todas essas especificações usando a função forecast (), que executa uma previsão de um passo usando o modelo. Podemos dividir o conjunto de dados de treinamento em conjuntos de trem e teste, usar o conjunto de trem para se ajustar ao modelo e gerar uma previsão para cada elemento no conjunto de teste. É necessária uma previsão contínua, dada a dependência das observações em etapas de tempo anteriores para a diferenciação e do modelo AR. Uma maneira grosseira de executar essa previsão de rolamento é recriar o modelo ARIMA após cada nova observação ser recebida. Nós mantemos manualmente a trilha de todas as observações em uma lista chamada history que seja semeada com os dados do treinamento e a que as observações novas são acrescentadas cada iteração. Colocando isso tudo junto, abaixo é um exemplo de uma projeção contínua com o modelo ARIMA em Python. Um gráfico de linha é criado mostrando os valores esperados (azul) em comparação com as previsões de previsão de rolamento (vermelho). Podemos ver os valores mostram alguma tendência e estão na escala correta. ARIMA Rolling Forecast Line Plot O modelo poderia usar mais afinação dos parâmetros p, d e talvez mesmo q. Configurando um Modelo ARIMA A abordagem clássica para a montagem de um modelo ARIMA é seguir a Metodologia Box-Jenkins. Este é um processo que utiliza análise de séries temporais e diagnósticos para descobrir bons parâmetros para o modelo ARIMA. Em resumo, as etapas deste processo são as seguintes: Identificação do Modelo. Use gráficos e estatísticas resumidas para identificar tendências, sazonalidade e elementos de autorregressão para ter uma ideia da quantidade de diferenciação e do tamanho da defasagem que será necessária. Estimação de parâmetros. Use um procedimento de ajuste para encontrar os coeficientes do modelo de regressão. Modelo de verificação. Utilizar gráficos e testes estatísticos dos erros residuais para determinar a quantidade eo tipo de estrutura temporal não capturada pelo modelo. O processo é repetido até que seja alcançado um nível de ajuste desejável nas observações na amostra ou fora da amostra (por exemplo, conjuntos de dados de formação ou teste). O processo foi descrito no clássico livro de 1970 sobre o tema intitulado Time Series Analysis: Forecasting and Control por George Box e Gwilym Jenkins. Uma 5 ª edição atualizada está agora disponível se você estiver interessado em aprofundar este tipo de modelo e metodologia. Dado que o modelo pode ser ajustado eficientemente em conjuntos de dados de séries temporais de tamanho modesto, os parâmetros de pesquisa de grade do modelo podem ser uma abordagem valiosa. Neste tutorial, você descobriu como desenvolver um modelo ARIMA para a previsão de séries temporais em Python. Especificamente, você aprendeu: Sobre o modelo ARIMA, como ele pode ser configurado e suposições feitas pelo modelo. Como executar uma análise de séries temporais rápidas utilizando o modelo ARIMA. Como usar um modelo ARIMA para prever as previsões de amostra. Você tem alguma dúvida sobre o ARIMA, ou sobre este tutorial Faça suas perguntas nos comentários abaixo e farei o meu melhor para responder. Deseja desenvolver previsões de séries temporais com Python Desenvolva suas próprias previsões em minutos com apenas algumas linhas de código python Ele cobre tutoriais de auto-estudo e projetos de ponta a ponta em tópicos como: Carregando dados. Visualização. Modelagem. Afinação de algoritmos. e muito mais. Finalmente trazer a série de tempo de previsão para seus próprios projetos Skip the Academics. Apenas Resultados. Kevin 17 de janeiro de 2017 at 12:58 am Me dá um monte de erros: Traceback (última chamada última): Arquivo 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linha 2276, no conversor dateparser (datecols), errors8217ignore8217) Arquivo 8220UserskevinoostPycharmProjectsARIMAmain. py8221, Linha 6, no retorno do analisador datetime. strptime (82161908217x, 8216Y-m8217) TypeError: strptime () argumento 1 deve ser str, não numpy. ndarray Durante o tratamento da exceção acima, ocorreu outra exceção: Traceback (última chamada última): Arquivo 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linha 2285, no conversor dayfirstdayfirst), Arquivo 8220pandassrcinference. pyx8221, linha 841, em pandas. lib. tryparsedates (pandaslib. c: 57884) Arquivo 8220pandassrcinference. pyx8221, linha 838, em pandas. lib. tryparsedates (pandaslib. c: 57802) Ficheiro 8220UserskevinoostPycharmProjectsARIMAmain. py8221, linha 6, no parser devolução datetime. strptime (82161908217x, 8216Y-m8217) Ficheiro 8220Userskevinoost Anacondalibpython3.5strptime. py8221, linha 510, em strptimedatetime tt, fração strptime (datastring, format) Arquivo 8220Userskevinoostanacondalibpython3.5strptime. py8221, linha 343, em strptime (datastring, format)) ValueError: dados de tempo 8216190Vendas de shampoo ao longo de um período de três anos8217 Não corresponde ao formato 8216Y-m8217 Durante o tratamento da exceção acima, ocorreu outra exceção: Traceback (última chamada última): Arquivo 8220UserskevinoostPycharmProjectsARIMAmain. py8221, linha 8, em série readcsv (8216shampoo-sales. csv8217, header0, parsedates0, indexcol0, squeezeTrue, dateparserparser) arquivo 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linha 562, em parserf retorno ler (filepathorbuffer, kwds) arquivo 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linha 325, em parser. read leitura de retorno () 8220Userskevinoostanacondalibpython3.5site - arquivo Packagespandasioparsers. py8221, linha 815, em read ret self. engine. read (nrows) Ficheiro 8220Userskev inoostanacondalibpython3.5site-packagespandasioparsers. py8221, linha 1387, no índice de leitura, nomes self. makeindex (dados, ALLDATA, nomes) arquivo 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linha 1030, na makeindex índice self. aggindex (index) 8220Userskevinoostanacondalibpython3 arquivo. 5site-packagespandasioparsers. py8221, linha 1111, em aggindex self. dateconv arr (arr) do arquivo 8220Userskevinoostanacondalibpython3.5site-packagespandasioparsers. py8221, linha 2288, em genericparser conversor de retorno (dateparser, datecols) do arquivo 8220Userskevinoostanacondalibpython3.5site-packagespandasiodateconverters. py8221, linha 38 , em genericparser resultsi parsefunc (args) do arquivo 8220UserskevinoostPycharmProjectsARIMAmain. py8221, linha 6, no analisador datetime. strptime retorno (82161908217x, 8216Y-m8217) do arquivo 8220Userskevinoostanacondalibpython3.5strptime. py8221, linha 510, em tt strptimedatetime, strptime fracção (datastring, formato) Arquivo 8220Userskevinoostanacondalibpython3.5strptime. py8221, lin e 343, em strptime (datastring, format)) ValueError: dados em tempo 8216190Sales de shampoo ao longo de um period8217 três anos não corresponde formato Processo 8216Y-m8217 terminou com código de saída 1 Ajuda seria muito apreciada. Parece que pode haver um problema com seu arquivo de dados. Abra o csv em um editor de texto e confirme a linha de cabeçalho parece sensata. Confirme também que você não tem dados extras no final do arquivo. Às vezes, o arquivo de dados download arquivos com dados de rodapé que você precisa excluir. NGUYEN Quang Anh 19 de janeiro de 2017 às 6:28 pm Digamos que eu tenho uma série de dados de tempo com muitos atributo. Por exemplo, uma linha terá (velocidade, combustível, pneuspressure), como poderíamos fazer um modelo fora deste. O valor de cada coluna pode afetar uns aos outros, por isso não podemos fazer previsão em apenas 1 coluna. Eu google muito, mas todo o exemplo I8217ve encontrado até agora só funciona na série de tempo de 1 atributo. Isso é chamado de previsão de séries temporais multivariada. Modelos lineares como ARIMA não foram projetados para este tipo de problema. Geralmente, você pode usar a representação baseada em lag de cada recurso e, em seguida, aplicar um algoritmo de aprendizagem de máquina padrão. Espero ter alguns tutoriais sobre isso em breve. Muyi Ibidun 7 de fevereiro de 2017 às 9:36 Seu problema se encaixa o que VAR (Vector Autoregression) modelos é projetado para. Consulte os seguintes links para obter mais informações. Espero que isto ajude o seu trabalho. Kelvid 20 de janeiro de 2017 às 11:55 Oi, você teria um exemplo para o post sazonal ARIMA tenho instalado o módulo statsmodels mais recente, mas há um erro de importação SARIMAX. Faça a ajuda se você conseguir figurar para fora. Obrigado. Sebastian 31 de janeiro de 2017 às 3:33 Grande post Jason Tenho um par de perguntas: 8211 Apenas para ter certeza. Modelfit. forecast () é um passo à frente previsões e modelfit. predict () é para múltiplas etapas à frente previsões 8211 Estou trabalhando com uma série que parece pelo menos bastante semelhante ao shampoo série (por inspeção). Quando eu uso prever sobre os dados de treinamento, eu recebo esse padrão zig-zag na previsão também. Mas para os dados de teste, a previsão é muito mais suave e parece saturar em algum nível. Você esperaria isso Se não, o que poderia estar errado Sim, forecast () é para previsões de um passo. Você pode fazer previsões de um passo com prever () também, mas é mais trabalho. Eu não esperaria que a previsão além de algumas etapas do tempo seja muito exato, se aquela for sua pergunta Sebastian 3 de fevereiro de 2017 em 9:25 Agradecimentos para a resposta a respeito da segunda pergunta. Sim, você está certo a previsão não é muito precisa. Mas, além disso, a série temporal prevista tem um conteúdo de frequência totalmente diferente. Como eu disse, é suave e não zig-zaggy como os dados originais. Isso é normal ou estou fazendo algo errado. Eu também tentei a previsão de múltiplos passos (modelfit. predict ()) sobre os dados de treinamento e, em seguida, a previsão parece ter mais ou menos o mesmo conteúdo de freqüência (mais zig-zaggy) como os dados que eu estou tentando prever. Oi Sebastian, eu vejo. No caso da previsão no conjunto de dados de treinamento, o modelo tem acesso a observações reais. Por exemplo, se você predizer os próximos 5 obs em algum lugar no conjunto de dados de treinamento, usará obs (t4) para prever t5 em vez de predição (t4). No caso de prever além do final dos dados do modelo, ele não tem obs para fazer previsões (a menos que você fornecer), ele só tem acesso às previsões feitas para os passos de tempo anteriores. O resultado é o composto erros e as coisas vão fora dos trilhos rápido (previsão plana). Isso faz sentido ajudar James Zhang 10 de fevereiro de 2017 às 7:42 pm muito obrigado pelo post, muito bom escrito Tenho uma pergunta: então eu usei a sua abordagem para construir o modelo, mas quando eu tento prever os dados que estão fora de amostra, comentei o testt obs e mudar history. append (obs) para history. append (yhat), e eu tenho um prediction8230 plana, de modo que poderia ser a razão e como você realmente fazer o fora-de - Amostra de predições com base no modelo montado em dataset trem Obrigado muito Cada loop na previsão de rolamento mostra-lhe como fazer um passo de fora da previsão da amostra. Treine o seu ARIMA em todos os dados disponíveis e na previsão de chamadas (). Se você deseja realizar uma previsão de várias etapas, na verdade, você precisará tratar previsões anteriores como 8220observations8221 e usá-las para previsões subseqüentes. Você pode fazer isso automaticamente usando a função predict (). Dependendo do problema, esta abordagem muitas vezes não é hábil (por exemplo, uma previsão plana). James 16 de fevereiro de 2017 às 2:03 am

No comments:

Post a Comment