Tuesday 22 August 2017

Ruby Média Móvel Simples


Eu estou tentando calcular médias móveis (simples e exponencial) e eu vim através da gema de simplestatistics, que é perfeito para minhas necessidades. Estou tentando modificar o código deste link: Como calcular a média móvel simples) para meus propósitos. OBJETIVO: Eu tenho um JSON como este que lista os preços históricos para um estoque único durante um longo período de tempo: A isto, eu gostaria de adicionar médias móveis para cada dia (simples e exponencial - que a gema de simplestatistics parece fazer facilmente) para 20 e 50 dias (e outros, conforme necessário), por isso parece algo como isso para cada dia: eu preferiria usar o yahoofinance, e simplestatistics gems e, em seguida, acrescentar a saída para o JSON original como tenho a sensação de que uma vez Eu ganho uma compreensão melhor, será mais fácil para mim modificar. Agora, eu ainda estou lendo sobre como vou fazer isso (qualquer ajuda é apreciada) Abaixo está a minha tentativa de calcular uma média móvel simples de 20 dias para a Microsoft (não funciona). Desta forma (usando HistoricalQuotesdays) parece assumir que a data de início é hoje, que não vai funcionar para o meu objetivo geral. UPDATE: Eu realmente não preciso usar gem YahooFinance como eu já tenho os dados em um JSON. O que eu não sei como fazer é puxar a partir da matriz JSON, fazer os cálculos usando a gem simplestatistics e, em seguida, adicionar os novos dados para o original JSON. Perguntado Oct 28 12 at 7:28 Usando a jóia, vejo duas maneiras de obter seus dados. Aqui estão eles (note que ambos podem ter um bloco): Que retorna uma matriz de objetos YahooFinance :: HistoricalQuote com os seguintes métodos: que retorna uma matriz de valores da documentação: E para tomar uma média (média móvel simples), você Pode fàcilmente fazer: Onde ary prenderia os valores à média (precisa de ser flutuadores ou dividirá inteiro). Para fazer a média móvel exponencial, basta usar a seguinte fórmula: Onde perto está o estoque fechar, previousema é yesterdays ema, e amountofdaysago é o intervalo da média para o passado, por exemplo 20 (dias). Editar Eu não posso escrever um guia ruby ​​começar todo, mas o básico para o que você precisa é Hash e Array. Olhe para cima como usar hashes ruby ​​e matrizes, e isso é provavelmente um bom 30 de ruby ​​programação lá. Por exemplo, para obter os objetos json em uma matriz e, em seguida, obter apenas o fecha, você poderia usar Arraymap assim: espero que você começa n boa sorte AJ, obrigado pela sua ajuda. Eu sei que para muitos parsing JSON é fácil. Eu tenho os cálculos para stdev (não usando o seu, I39m fazendo um n-1 stdev). Eu fiz esta calc em papel (e mais frequentemente Excel), mas don39t sabe transformá-lo em Ruby (que é por isso I39m usando simplestats). Eu sei que para analisar JSON posso fazer JSON. parse json mas como fazer os cálculos para cada dia na matriz e, em seguida, retornar os resultados para criar um novo JSON ainda me escapa (eu preciso de mais de um dummys guia - se você puder Aponte-me para qualquer tutoriais on-line seria ótimo). Obrigado novamente por sua ajuda, eu aprecio ndash gcubed Oct 28 12 às 18: 57Eu estou trabalhando em um programa que usa yahoo finanças api para coletar os dados históricos de fechamento para o número de ações inseridas e, em seguida, vá em frente e calcular a média móvel simples SMA) para os dados por período de 30 dias. Eu tenho o seguinte até agora: Este código está me dando os valores de fechamento de ações para o intervalo especificado. Eu tenho duas perguntas: Atualmente, hq. close está mantendo valores para todas as ações. Como posso colocar esses valores em uma matriz para que eu possa fazer uma computação sobre ele para calcular um SMA para cada dados de estoque Eu tentei fazer algo parecido com isto: Mas isso só dá o valor do primeiro estoque em myval. Eu sei que tenho que colocar um loop aqui. Eu tentei colocar Mas isso me dá um erro: Como posso calcular um SMA em Ruby Olá, Obrigado por apontar o erro de erro. Mas mesmo após a correção, eu ainda estou recebendo o mesmo erro. Estou pensando em outra abordagem. Desde hq. close contém lista de símbolos de ações com seus valores de fechamento, posso fazer dois loops neste objeto, primeiro para iterar sobre o objeto para obter o número de listas e segundo para obter os respectivos valores na lista. Eu sei que isso é muito possível em Java. Existe alguma maneira de fazer isso em ruby ​​Por favor, forneça um exemplo ndash user1745117 Oct 14 12 at 17:05 1 Resposta Youve perguntou duas perguntas aqui, então vamos abordá-los um de cada vez. Primeiro, este código: irá produzir o seguinte hash in closes. Que eu entendo é no formato que você quer: Em segundo lugar, você deseja calcular uma média móvel simples - que para aplicações financeiras é apenas a média dos valores. Há uma Gem chamada simplestatistics que pode fazer isso. Produz o seguinte hash nas médias: Para calcular o crescimento médio móvel ponderado de uma seqüência numérica .. para expressar isso como uma porcentagem podemos escrever: (A Licença MIT) Copyright 2010 Craig Davidson ltcraigcraigdavidson. co. ukgt É concedida permissão, livre A qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o Software), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, fundir, publicar, distribuir, sublicenciar e / Ou vender cópias do Software e permitir que as pessoas a quem o Software é fornecido o façam, sujeito às seguintes condições: O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software. O SOFTWARE É FORNECIDO TAL COMO É, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO-INFRAÇÃO. EM NENHUMA CIRCUNSTÂNCIA OS AUTORES OU TITULARES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUAISQUER RECLAMAÇÕES, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, RESULTANTES DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTROS NEGÓCIOS NA Um antigo termo de advertência com a ameaça de dano na pior das hipóteses, e incerteza na melhor das hipóteses, para aqueles dentro do intervalo de potencial. Elenco 133 servindo um projétil para o invisível e geralmente desconhecido sob a previsão de superfície enganosa. . Um aviso para aqueles que o usam. Uma confissão de incerteza (ou decepção) por aqueles que a criam. Uma ameaça de dano para aqueles em seu caminho De Tom Brown em Obtendo o máximo de previsão 2.1: Introdução à previsão Embora os métodos quantitativos de negócios podem ser estudados como módulos independentes, acredito que é apropriado que o texto coloca o material de previsão logo após Análise de decisão. Lembre-se em nossos problemas de análise de decisão, os estados de natureza geralmente se referem a níveis variáveis ​​de demanda ou alguma outra variável desconhecida no futuro. Prever, com alguma medida de precisão ou confiabilidade, quais serão esses níveis de demanda será o nosso próximo assunto. As previsões são mais do que simples extrapolações de dados passados ​​para o futuro usando fórmulas matemáticas ou reunindo tendências de especialistas133. As previsões são mecanismos para se chegar a medidas para planejar o futuro. Quando feito corretamente, eles fornecem uma trilha de auditoria e uma medida de sua precisão. Quando não é feito corretamente, eles nos lembram de Tom Browns desdobramento inteligente do termo repetido na abertura destas notas. Não só as previsões nos ajudam a planejar, como nos ajudam a economizar dinheiro. Estou ciente de uma empresa que reduziu seu investimento em estoques de 28 milhões para 22 milhões, adotando um método de previsão formal que reduziu o erro de previsão em 10. Esse é um exemplo de previsões Ajudando as empresas de produtos a substituírem o inventário por informações, o que não só economiza dinheiro, como também melhora a resposta e o atendimento ao cliente. Quando usamos o termo previsão em um curso de métodos quantitativos, geralmente estamos nos referindo a métodos quantitativos de previsão de séries temporais. Estes modelos são apropriados quando: 1) informações passadas sobre a variável que está sendo prevista estão disponíveis, 2) a informação pode ser quantificada, e 3) é assumido que os padrões nos dados históricos continuarão no futuro. Se os dados históricos são restritos a valores passados ​​da variável de resposta de interesse, o procedimento de previsão é chamado de método de série cronológica. Por exemplo, muitas previsões de vendas dependem dos métodos clássicos de séries temporais que abordaremos neste módulo. Quando a previsão é baseada em vendas anteriores, temos uma previsão de séries temporais. Uma observação: embora eu tenha dito que as vendas acima, sempre que possível, tentamos prever as vendas com base na demanda do passado, em vez de vendas133 por que Suponha que você possui uma loja de t-shirt na praia. Você armazena 100 t-shirt da ruptura da primavera 2000 que obtêm prontos para férias da primavera. Suponha ainda que 110 Spring Breakers entrem na sua loja para comprar Spring Break 2000 T-shirts. Quais são as suas vendas Isso é certo, 100. Mas qual é a sua demanda Direita de novo, 110. Você gostaria de usar a figura da demanda, em vez de a figura de vendas, na preparação para o próximo ano como os números de vendas não capturar suas saídas de estoque. Então, por que muitas empresas fazem previsões de vendas baseadas em vendas passadas e não demanda? A principal razão é o custo - as vendas são facilmente capturadas na estação de saída, mas você precisa de algum recurso adicional em seu sistema de informações de gerenciamento para capturar a demanda. Voltar para a introdução. A outra grande categoria de métodos de previsão que se baseiam em dados passados ​​são modelos de regressão. Muitas vezes referidos como modelos causais como no nosso texto. Esses modelos baseiam sua previsão de valores futuros da variável resposta, vendas, por exemplo, em variáveis ​​relacionadas como renda pessoal descartável, sexo e talvez idade do consumidor. Você estudou modelos de regressão no curso de estatística, por isso não vamos cobri-los neste curso. No entanto, eu quero dizer que devemos usar o termo causal com cautela, como idade, sexo ou renda pessoal descartável pode estar altamente relacionado com as vendas, mas idade, sexo ou renda pessoal descartável pode não causar vendas. Só podemos provar a causalidade em um experimento. A última grande categoria de modelos de previsão inclui métodos qualitativos que geralmente envolvem o uso de julgamento de especialistas para desenvolver a previsão. Esses métodos são úteis quando não temos dados históricos, como o caso quando estamos lançando uma nova linha de produtos sem experiência anterior. Esses métodos também são úteis quando estamos fazendo projeções em um futuro distante. Vamos abordar um dos modelos qualitativos nesta introdução. Primeiro, vamos examinar um esquema de classificação simples para orientações gerais na seleção de um método de previsão e, em seguida, cobrir alguns princípios básicos de previsão. Selecionando um Método de Previsão A tabela a seguir ilustra as diretrizes gerais para a seleção de um método de previsão com base em critérios de intervalo de tempo e finalidade. Tendência Projeção Moving Average Exponential Smoothing Por favor, entenda que estas são diretrizes gerais. Você pode encontrar uma empresa usando projeção de tendência para fazer previsões confiáveis ​​para vendas de produtos 3 anos no futuro. Deve-se notar também que, uma vez que as empresas usam pacotes de previsão de séries temporais de software de computador em vez de computações manuais, eles podem tentar várias técnicas diferentes e selecionar a técnica que tem a melhor medida de precisão (menor erro). Como discutimos as várias técnicas, e suas propriedades, suposições e limitações, espero que você vai ganhar uma apreciação para o esquema de classificação acima. Princípios de previsão Sistemas de classificação como o acima são úteis para ajudar a selecionar métodos de previsão apropriados para o período de tempo ea finalidade em mãos. Há também alguns princípios gerais que devem ser considerados quando preparamos e usamos previsões, especialmente aquelas baseadas em métodos de séries temporais. Oliver W. Wight em Controle de Produção e Inventário na Era Computacional. E Thomas H. Fuller em Microcomputadores em Produção e Gestão de Inventário desenvolveu um conjunto de princípios para a produção e controle de inventário comunidade um tempo atrás que eu acredito ter aplicação universal. 1. A menos que o método seja 100 exato, ele deve ser simples o suficiente para que as pessoas que o usam saibam usá-lo inteligentemente (entendê-lo, explicá-lo e replicá-lo). 2. Todas as previsões devem ser acompanhadas de uma estimativa do erro (a medida da sua exactidão). 3. As previsões a longo prazo devem cobrir o maior número possível de itens que restringem as previsões de itens individuais a curto prazo. 4. O elemento mais importante de qualquer esquema de previsão é aquela coisa entre o teclado ea cadeira. O primeiro princípio sugere que você pode obter com o tratamento de um método de previsão como uma caixa preta, desde que seja 100 precisos. Ou seja, se um analista simplesmente alimenta dados históricos no computador e aceita e implementa o resultado da previsão sem qualquer idéia de como os cálculos foram feitos, esse analista está tratando o método de previsão como uma caixa preta. Isto é ok, desde que o erro de previsão (observação real - observação de previsão) é zero. Se a previsão não é confiável (erro alto), o analista deve ser, pelo menos, muito embaraçado por não ser capaz de explicar o que deu errado. Pode haver ramificações muito piores do que constrangimento se os orçamentos e outros eventos de planejamento se baseavam fortemente na previsão errônea. O segundo princípio é realmente importante. Na seção 2.2, vamos introduzir uma maneira simples de medir o erro de previsão, a diferença entre o que realmente ocorre eo que foi previsto para ocorrer em cada período de tempo de previsão. Aqui está a idéia. Suponha que uma companhia de automóveis prevê vendas de 30 carros no próximo mês usando o Método A. O Método B também vem com uma previsão de 30 carros. Sem saber a medida de precisão dos dois Métodos, seríamos indiferentes quanto à sua seleção. No entanto, se soubéssemos que o erro composto para o Método A é de - 2 carros em um horizonte temporal relevante eo erro composto para o Método B é de - 10 carros, nós definitivamente selecionaríamos o Método A sobre o Método B. Por que um método teria Tanto erro em comparação com outro Isso será um dos nossos objetivos de aprendizagem neste módulo. Pode ser porque usamos um método de alisamento ao invés de um método que incorpora projeção de tendência quando não devemos ter - como quando os dados exibem uma tendência de crescimento. Métodos de suavização, tais como suavização exponencial, sempre tendências lag que resulta em erro de previsão. O terceiro princípio poderia ser melhor ilustrado por um exemplo. Suponha que você seja Diretor de Operações para um hospital e que seja responsável pela previsão da demanda por leitos de pacientes. Se sua previsão fosse para o planejamento de capacidade daqui a três anos, você pode querer prever o número total de leitos de pacientes para o ano de 2003. Por outro lado, se você fosse prever a demanda por leitos de pacientes para abril de 2000, para fins de programação , Então você precisaria fazer previsões separadas para camas de pacientes de emergência, camas de pacientes de recuperação de cirurgia, camas de pacientes de OB, e assim por diante. Quando muito detalhe é necessário, aderir a um horizonte de previsão de curto prazo agregar suas linhas de produtos / tipo de pacientes / etc. Quando fazem previsões a longo prazo. Isso geralmente reduz o erro de previsão em ambas as situações. Devemos aplicar o último princípio a qualquer método quantitativo. Sempre há espaço para ajustes judiciais em nossas previsões quantitativas. Eu gosto desta citação de Alfred North Whitehead em An Introduction to Mathematics. Não há erro mais comum do que supor que, por terem sido feitos cálculos matemáticos prolongados e precisos, a aplicação do resultado a algum fato da natureza é absolutamente certa. Naturalmente, o julgamento pode ser fora demasiado. Como sobre esta previsão feita em 1943 pelo presidente da IBM Thomas Watson: Eu acho que há um mercado mundial para cerca de cinco computadores. Como podemos melhorar a aplicação do julgamento É esse o nosso próximo assunto. O método Delphi de previsão O método Delphi de previsão é uma técnica qualitativa popularizada pela Rand Corporation. Pertence à família das técnicas que incluem métodos tais como raizes da grama, painel da pesquisa de mercado, analogia histórica, julgamento do perito, e força da força composta. A coisa em comum com essas abordagens é o uso das opiniões de especialistas, em vez de dados históricos, para fazer previsões e previsões. Os temas dessas previsões são tipicamente a previsão de desenvolvimentos políticos, sociais, econômicos ou tecnológicos que possam sugerir novos programas, produtos ou respostas da organização que patrocina o estudo Delphi. Minha primeira experiência com técnicas de previsão de julgamento de peritos foi na minha última missão durante a minha carreira passada na Força Aérea dos Estados Unidos. Nessa tarefa, fui Diretor de Programas de Transporte no Pentágono. Uma vez por ano, meu chefe, o Diretor de Transportes, reuniria líderes seniores (e seus oficiais de ação) em uma conferência para formular planos e programas de transporte para os próximos cinco anos. Estes programas tornaram-se então a base para orçamentação, aquisição, e assim por diante. Um dos exercícios que fizemos foi um método Delphi para prever desenvolvimentos que teriam um impacto significativo nos programas de transporte da Força Aérea. Lembro-me de um dos desenvolvimentos que previmos numa conferência no início dos anos 80 foi o movimento acelerado dos sistemas de transporte estratégico descentralizado para os centralizados nos militares. Como resultado, começamos a postura da Força Aérea para o comando de transporte unificado vários anos antes de se tornar uma realidade. Passo 1. O método Delphi de previsão, como as outras técnicas de julgamento, começa com a seleção dos especialistas. Naturalmente, este é o local onde essas técnicas podem falhar - quando os especialistas não são realmente especialistas em tudo. Talvez o chefe é incluído como um especialista para o estudo Delphi, mas enquanto o chefe é grande na gestão de recursos, ele ou ela pode ser terrível em ler o ambiente e prever desenvolvimentos. Etapa 2. O primeiro passo formal é obter uma previsão anônima sobre o tema de interesse. Isso é chamado Round 1. Aqui, os peritos seriam solicitados a fornecer um desenvolvimento político, económico, social ou tecnológico de interesse para a organização que patrocina o Método Delphi. As previsões anónimas podem ser recolhidas através de um Web Site, via e-mail ou por questionário. Eles também podem ser reunidos em um grupo vivo, mas o efeito halo pode sufocar o fluxo livre das previsões. Por exemplo, seria comum para o grupo de peritos reunidos no Pentágono incluir oficiais gerais. Vários dos generais eram grandes líderes no campo, mas não grandes visionários quando se tratava de desenvolvimentos logísticos. Por outro lado, os oficiais de ação de tenente-coronel eram muito bons pensadores e sabiam muito sobre o que estava no horizonte para os sistemas de logística e transporte. No entanto, por causa do respeito clássico pelo rank, os oficiais mais jovens talvez não tivessem chegado se não usássemos um método anônimo para obter a primeira rodada de previsões. Passo 3. A terceira etapa do Método Delphi envolve o facilitador do grupo resumindo e redistribuindo os resultados das previsões da Rodada Um. Esta é tipicamente uma lista de lavandaria de desenvolvimentos. Os peritos são então convidados a responder à lista de lavandas da primeira rodada indicando o ano em que acreditavam que o desenvolvimento ocorreria ou declarar que esse desenvolvimento nunca ocorrerá. Isso é chamado Round 2. Passo 4. A quarta etapa, Round 3. Envolve o facilitador do grupo resumindo e redistribuindo os resultados da Rodada Dois. Isso inclui uma exibição estatística simples, geralmente a mediana e intervalo interquartil, para os dados (anos um desenvolvimento ocorrerá) da Rodada 2. O resumo também inclui a percentagem de peritos relatando nunca ocorrer para um determinado desenvolvimento. Nesta Ronda, os peritos são convidados a modificar, se assim o desejarem, as suas previsões. Os especialistas também têm a oportunidade de fornecer argumentos que desafiam ou apoiam as previsões de nunca ocorrer para um determinado desenvolvimento, e desafiar ou apoiar os anos fora do intervalo interquartil. Passo 5. O quinto passo, Round 4. Repete a terceira rodada - os especialistas recebem uma nova exibição estatística com argumentos - e são solicitados a fornecer novas previsões e / ou contra argumentos. Passo 6. A rodada 4 é repetida até que se forme consenso, ou pelo menos uma difusão relativamente estreita de opiniões. Minha experiência é que, na Rodada 4, tivemos uma boa idéia dos desenvolvimentos que deveríamos estar focalizando. Se o objetivo original do Método Delphi é produzir um número em vez de uma tendência de desenvolvimento, então a Rodada 1 simplesmente pede aos especialistas sua primeira previsão. Isso pode ser para prever a demanda de produtos para uma nova linha de produtos para uma empresa de produtos de consumo ou para prever o DJIA um ano para uma empresa de fundo mútuo gerenciar um fundo de índice de blue chip. Vamos fazer um por diversão (não classificado e puramente voluntário) Delphi Exercício. Suponha que você é um especialista em mercado e deseja se juntar aos outros especialistas em nossa classe para prever o que o DJIA será em 16 de abril de 2001 (o mais próximo possível da data de vencimento do imposto). Vou publicar um tópico da conferência chamado Previsões DJIA no Web Board do curso, dentro da conferência do Módulo 2. Responda ao tópico da conferência simplesmente afirmando o que você acha que o DJIA encerrará em 16 de abril de 2001. Por favor, responda até 27 de janeiro de 2001, para que eu possa postar as estatísticas de resumo antes de deixar o material de previsão em 3 de fevereiro. Começaremos agora nossa discussão de métodos quantitativos de previsão de séries temporais. 2.2: Métodos de suavização Nesta seção, queremos cobrir os componentes de uma série de tempo naive, média móvel e métodos exponenciais de suavização de previsão e medição de precisão de previsão para cada um dos métodos introduzidos. Pausar e Refletir Lembre-se de que existem três classes gerais de modelos de previsão ou previsão. Métodos qualitativos, incluindo o Delphi, dependem do julgamento e da opinião de especialistas, e não de dados históricos. Os modelos de regressão baseiam-se em informações históricas sobre as duas variáveis ​​preditoras ea variável de resposta de interesse. Métodos quantitativos de previsão de séries cronológicas baseiam-se em informações numéricas históricas sobre a variável de interesse e assumem padrões no passado que continuarão no futuro. Esta seção começa nosso estudo dos modelos de séries temporais, começando com padrões ou componentes de séries temporais. Componentes de uma série temporal Os padrões que podemos encontrar em uma série temporal de dados históricos incluem a média, a tendência, os componentes sazonais, cíclicos e irregulares. A média é simplesmente a média dos dados históricos. Tendência descreve o crescimento real ou declínio na demanda média ou outra variável de interesse, e representa uma mudança na média. A componente sazonal reflecte um padrão que se repete dentro do tempo total de interesse. Por exemplo, há 15 anos, no sudoeste da Flórida, o tráfego aéreo foi muito maior em janeiro - abril, atingindo o pico em março. Outubro foi o mês mais baixo. Este padrão sazonal repetiu-se até 1988. Entre 1988 e 1992, janeiro-abril continuou a repetir-se a cada ano como meses altos, mas os picos não eram tão altos como antes, nem os vales fora de época tão baixos como antes, O hotel e indústrias de turismo. O ponto é, picos sazonais repetir dentro do período de interesse - geralmente mensais ou trimestrais estações dentro de um ano, embora possa haver sazonalidade diária no mercado de ações (segundas e sextas-feiras mostrando maiores médias de fechamento do que terças-feiras) como um exemplo. A componente cíclica apresenta valores recorrentes da variável de interesse acima ou abaixo da linha de tendência média ou de longo prazo ao longo de um horizonte de planeamento plurianual. A duração dos ciclos não é constante, como ocorre com o comprimento dos picos e vales sazonais, tornando os ciclos econômicos muito mais difíceis de prever. Como os padrões não são constantes, os modelos de variáveis ​​múltiplas, como modelos econométricos e de regressão múltipla, são mais adequados para prever pontos de mudança cíclicos do que os modelos de séries temporais. O último componente é whats left O componente irregular é a variação aleatória na demanda que é inexplicado pela média, tendência, sazonal e / ou componentes cíclicos de uma série de tempo. Como nos modelos de regressão, tentamos fazer a variação aleatória tão baixa quanto possível. Os modelos quantitativos são concebidos para abordar os vários componentes acima referidos. Obviamente, a técnica de projeção de tendência funcionará melhor com séries temporais que exibem um padrão de tendência histórica. A decomposição de séries temporais, que decompõe a tendência e os componentes sazonais de uma série temporal, funciona melhor com séries temporais com tendências e padrões sazonais. Onde isso deixa o nosso primeiro conjunto de técnicas, métodos de alisamento Na verdade, os métodos de alisamento funcionam bem na presença de componentes médios e irregulares. Começamos com eles em seguida. Antes de começar, vamos obter alguns dados. Esta série cronológica consiste na procura trimestral de um produto. Os dados históricos estão disponíveis por 12 trimestres, ou três anos. A Tabela 2.2.1 fornece o histórico. A Figura 2.2.1 fornece um gráfico das séries temporais. Este gráfico foi preparado no Excel usando o Assistente de gráficos Chart Wizards Line Plot. Não é importante que software é usado para graficar a série histórica de tempo - mas é importante olhar para os dados. Mesmo fazer um esboço de caneta e papel é útil para obter uma sensação para os dados, e ver se pode haver tendência e / ou componentes sazonais na série de tempo. Método de média móvel Uma técnica simples que funciona bem com dados que não tem tendência, sazonalidade nem componentes cíclicos é o método da média móvel. Evidentemente, este exemplo de conjunto de dados tem tendência (note a taxa de crescimento global do período 1 a 12) e sazonalidade (note que cada terceiro trimestre reflete uma diminuição da demanda histórica). Mas vamos aplicar a técnica de média móvel para esses dados, então teremos uma base para comparação com outros métodos mais tarde. Uma previsão média móvel de três períodos é um método que leva três períodos de dados e cria uma média. Essa média é a previsão para o próximo período. Para este conjunto de dados, a primeira previsão que podemos calcular é para o Período 4, usando dados históricos reais dos Períodos 1, 2 e 3 (já que é uma média móvel de três períodos). Depois, após o Período 4, podemos fazer uma previsão para o Período 5, usando dados históricos dos Períodos 2, 3 e 4. Observe que o Período 1 caiu, daí o termo média móvel. Esta técnica então assume que dados históricos reais em um passado distante, não é tão útil como dados históricos mais atuais em fazer previsões. Antes de mostrar as fórmulas e ilustrar este exemplo, deixe-me introduzir alguns símbolos. Neste módulo, usarei o símbolo F t para representar uma previsão para o período t. Assim, a previsão para o período 4 seria mostrada como F 4. Usarei o símbolo Y t para representar o valor histórico real da variável de interesse, como a demanda, no período t. Assim, a demanda real para o período 1 seria mostrada como Y 1. Agora, para levar adiante os cálculos para uma média móvel de três períodos. A previsão para o quarto período é: Gerar a previsão para o período cinco: Continuamos com os dados históricos até chegar ao final do Período 12 e fazemos nossa previsão para o Período 13 com base na demanda real dos Períodos 10, 11 e 12. Desde Período 12 é o último período para o qual temos dados, isso termina os nossos cálculos. Se alguém estava interessado em fazer uma previsão para os Períodos 14, 15 e 16, bem como o Período 13, o melhor que poderia ser feito com o método da média móvel seria fazer com que as previsões de período de saída da mesma a previsão mais atual. Isso é verdade porque os métodos de média móvel não podem crescer ou responder à tendência. Esta é a principal razão por que estes tipos de métodos são limitados a aplicações de curto prazo, como qual é a demanda para o próximo período. Os cálculos das previsões estão resumidos na Tabela 2.2.2. Uma vez que estamos interessados ​​em medir a magnitude do erro para determinar precisão de previsão, observe que eu quadrado o erro para remover os sinais mais e menos. Então, nós médio simples os erros quadrados. Para calcular uma média ou uma média, primeiro s e os erros de quared (SSE). Em seguida, dividir pelo número de erros para obter o m ean s quared e rror (MSE). Em seguida, pegue a raiz quadrada do erro para obter o R ​​oot M ean S quare E rror (RMSE). SSE (235.1 608.4 625.0 455.1) 9061.78 MSE 9061.78 / 9 1006.86 RMSE Raiz quadrada (1006.86) 31.73 De seu curso de estatística, você reconhecerá o RMSE como simplesmente o desvio padrão de erros de previsão eo MSE é simplesmente a variância de Os erros de previsão. Como o desvio padrão, quanto menor o RMSE, mais precisa a previsão. Assim, o RMSE pode ser muito útil na escolha entre os modelos de previsão. Também podemos usar o RMSE para fazer alguma análise de probabilidade. Como o RMSE é o desvio padrão do erro de previsão, podemos tratar a previsão como a média de uma distribuição e aplicar a importante regra empírica. Assumindo que os erros de previsão são normalmente distribuídos. Aposto que alguns de vocês se lembram desta regra: 68 das observações em uma distribuição simétrica em forma de sino estão dentro da área: média / - 1 desvio padrão 95 das observações estão dentro de: média / - 2 desvios padrão 99,7 (quase todos Das observações) situam-se dentro de: média / -3 desvios padrão Uma vez que a média é a previsão eo desvio padrão é o RMSE, podemos expressar a regra empírica da seguinte forma: 68 dos valores reais devem cair dentro: Previsão / 1 RMSE 454,3 / - 31,73 423 a 486 95 Espera-se que os valores reais se enquadrem em: Previsão / - 2 RMSE 454,3 / - (231,73) 391 a 518 99,7 dos valores reais devem cair dentro: 454,3 / - (331,73) 359 a 549 Como no estudo da média e desvio padrão na estatística descritiva, isso é muito importante e tem aplicações semelhantes. Uma coisa que podemos fazer é usar os 3 valores RMSE para determinar se temos quaisquer outliers em nossos dados que precisam ser substituídos. Qualquer previsão que seja mais de 3 RMSEs da figura real (ou tenha um erro maior que o valor absoluto de 3 31.73 ou 95 é um outlier. Esse valor deve ser removido desde que infle o RMSE. A maneira mais simples de remover um outlier em Uma série de tempo é para substituí-lo pela média do valor imediatamente antes do outlier e logo após o outlier. Uma outra mão muito uso para o RMSE está na definição de stocks de segurança em situações de inventário. Legamos a 2 RMSE região do Empírica para esta previsão: 2,5 95 2,5 359. 391. 454. 518. 549 Uma vez que o meio 95 das observações caem entre 391 e 518, 5 das observações caem abaixo de 391 e acima de 518. Supondo que a distribuição é em forma de sino, 2,5 Das observações caem abaixo de 391 e 2,5 caem acima de 518. Outra maneira de afirmar isso é que 97,5 das observações caem abaixo de 518 (quando medindo para baixo para o infinito negativo, embora os dados reais devem parar em 359. Bottom line, se a empresa antecipa A demanda atual será de 518 (2 RMSEs acima da previsão), então, com um inventário de 518, eles cobrirão 97,5 das demandas reais que teoricamente poderiam ocorrer. Ou seja, estão operando a um nível de serviço ao cliente de 97.5. Em apenas 2,5 dos casos de demanda devem esperar um stock out. Isso é realmente liso, não é. Seguindo a mesma metodologia, se a empresa estocar 549 itens, ou 3 RMSEs acima da previsão, eles estão praticamente seguros de que não terão estoque fora a menos que algo realmente incomum ocorra (chamamos isso de outlier é estatística). Finalmente, se a empresa armazenar 486 itens (2 RMSEs acima da previsão), eles terão estoque em 16 dos casos, ou cobrem 84 das demandas que devem ocorrer (100-16). Neste caso, eles estão operando em um nível de atendimento ao cliente de 84. 16 68 16 359. 423. 454. 486. 549 We could compute other probabilities associated with other areas under the curve by finding the cumulative probability for z scores, z (observation - forecast) / RMSE (do you remember that from the stat course(s)). For our purposes here, it is only important to illustrate the application from the statistics course. Using The Management Scientist Software Package We will be using The Management Scientist Forecasting Module to do the actual forecasts and RMSE computations. To illustrate the package for the first example, click Windows Start/Programs/The Management Scientist/The Management Scientist Icon/Continue/Select Module 11 Forecasting/OK/File/New and you are ready to load the example problem. The next dialog screen asks you to enter the number of time periods - that is how many observations to you have - 12 in this case. Click OK . and start entering your data (numbers and decimal points only - the dialog screen will not allow alpha characters or commas). Next, click Solution/Solve/Moving Average and enter 3 where it asks for number of moving periods. You should get the following solution: FORECASTING WITH MOVING AVERAGES THE MOVING AVERAGE USES 3 TIME PERIODS TIME PERIOD TIME SERIES VALUE FORECAST FORECAST ERROR THE MEAN SQUARE ERROR 1,006.86 THE FORECAST FOR PERIOD 13 454.33 Please note that the software returns the Mean Square Error . and to get the more useful Root Mean Square Error . you need to take the square root of the Mean Square Error, 1006.83 in this case. Also note that the software provides just one forecast value, recognizing the limitation of moving average methods that limit the projection to one time period. Finally note that I put the data into an html table only so you can read it better - this is only necessary in going from the OUT file to html, not to an e-mail insertion of the OUT file or copying an OUT file into a WORD document. As with the decision analysis module solutions, you may then select Solution/Print Solution and either select Printer to print, or Text File to save for inserting into an e-mail to me, or into a Word Document. Before we do one more moving average example, take a look at the forecast error column. Note that most of the errors are positive. Since error is equal to actual time series value minus the forecasted values, positive errors mean that the actual demand is generally greater than the forecasted demand - we are under forecasting. In this case, we are missing a growth trend in the data. As pointed out earlier, moving average techniques do not work well with time series data that exhibit trends. Figure 2.2.2 illustrates the lag that is present when using the moving average technique with a time series that exhibits a trend. Five Period Moving Average Forecast Here is The Management Scientist solution for using 5 periods to construct the moving average forecast. FORECASTING WITH MOVING AVERAGES THE MOVING AVERAGE USES 5 TIME PERIODS TIME PERIOD TIME SERIES VALUE FORECAST FORECAST ERROR THE MEAN SQUARE ERROR 1,349.37 THE FORECAST FOR PERIOD 13 453.60 The RMSE for the Five-Period Moving Average forecast is 36.7, which is about 16 worse than the error of the three - period model. The reason for this is that there is a growth trend in this data. As we increase the number of periods in the computation of the moving average, the average begins to lag the growth trend by greater amounts. The same would be true if the historical data exhibited a downward trend. The moving average would lag the trend and provide forecasts that would be above the actual. Pause and Reflect The moving average forecasting method is simple to use and understand, and it works well with time series that do not have trend, seasonal or cyclical components. The technique requires little data, only enough past observations to match the number of time periods in in the moving average. Forecasts are usually limited to one period ahead. The technique does not work well with data that is not stationary - data that exhibits trend, seasonality, and/or cyclic patterns. One-Period Moving Average Forecast or the Naive Forecast A naive forecast would be one where the number of periods in the moving average is set equal to one. That is, the next forecast is equal to the last actual demand. Dont laugh This technique might be useful in the case of rapid growth trend the forecast would only lag the actual by one quarter or by one month, whatever the time period of interest. Of course, it would be much better to use a model that can make a trend projection if the trend represents a real move from a prior stationary pattern - we will get to that a bit later. Here is The Management Scientist result for the One-Period Moving Average Forecast. FORECASTING WITH MOVING AVERAGES THE MOVING AVERAGE USES 1 TIME PERIODS TIME PERIOD TIME SERIES VALUE FORECAST FORECAST ERROR THE MEAN SQUARE ERROR 969.91 THE FORECAST FOR PERIOD 13 473.00 This printout reflects a slightly lower RMSE than the three period moving average. That concludes our introduction to smoothing techniques by examining the class of smoothing methods called moving averages. The last smoothing method we will examine is called exponential smoothing , which is a form of a weighted moving average method. Exponential Smoothing This smoothing model became very popular with the production and inventory control community in the early days of computer applications because it did not need much memory, and allowed the manager some judgment input capability. That is, exponential smoothing includes a smoothing parameter that is used to weight either past forecasts (places emphasis on the average component) or the last observation (places emphasis on a rapid growth or decline trend component). The exponential smoothing model is: F t1 forecast of the time series for period t 1 Y t actual value of the time series in period t F t forecast of the time series for period t a smoothing constant or parameter (0 lt a lt 1) The smoothing constant or parameter, a . is shown as the Greek symbol alpha in the text - I am limited to alpha characters. In any case, if the smoothing constant is set at 1, the formula becomes the naive model we already studied: If the smoothing constant is set at 0, the formula becomes a weighted average model which gives most weight to the most recent forecast, with diminishing weight the farther back in the time series. Setting a can be done by trial and error, perhaps trying 0.1, 0.5 and 0.9, recording the RMSE for each run, then choosing the value of a that gives forecasts with the lowest RMSE. Some guidelines are, set a relatively high when there is a trend and you want the model to be responsive set a relatively low when there is just the irregular component so the model will not be responding to random movements. Lets do some exponential smoothing forecasts with a set at 0.6, relatively high. To get the model started, we begin by making a forecast for Period 2 simply based on the actual demand for Period 1 (first shown in Table 2.2.1, but often repeated with each demonstration). Then the first exponential smoothing forecast is actually made for Period 3, using information from Period 2. Thus t 2, t1 3, and F t1 F 21 F 3 . For this forecast, we need the actual demand for Period 2 (Y t Y 2 395), the forecast for Period 2 (F 2 398. The result is: The next forecast is for Period 4: This continues through the data until we get to the end of Period 12 and are ready to make our last forecast for Period 13. Note that all we have to maintain in historical data is the last forecast, the last actual demand and the value of the smoothing parameter - that is why the technique was so popular since it did not take much data. However, I do not subscribe to throwing away data files today - they should be archived for audit trail purposes. Anyway, the forecast for Period 13: Thankfully today, we have software like The Management Scientist to do the computations. To use The Management Scientist . select the Forecasting Module and load the data as previously described in the Three Period Moving Average demonstration. Next, click Solution/Solve/Exponential Smoothing and enter 0.6 where it asks for the value of the smoothing constant. Printout 2.2.4 illustrates the computer output with a smoothing constant of 0.6. FORECASTING WITH EXPONENTIAL SMOOTHING THE SMOOTHING CONSTANT IS 0.6 TIME PERIOD TIME SERIES VALUE FORECAST FORECAST ERROR THE MEAN SQUARE ERROR 871.52 THE FORECAST FOR PERIOD 13 459.74 This model provides a single forecast since, like the moving average techniques, it does not have the capability to address the trend component. The Root Mean Square Error is 29.52, (square root of the mean square error), or slightly better than the best results of the moving average and naive techniques. However, since the time series shows trend, we should be able to do much better with the trend projection model that is demonstrated next. Pause and Reflect The exponential smoothing technique is a simple technique that requires only five to ten historical observations to set the value of the smoothing parameter, then only the most recent actual observation and forecasting values. Forecasts are usually limited to one period ahead. The technique works best for time series that are stationary, that is, do not exhibit trend, seasonality and/or cyclic components. While historical data is generally used to fit the model - that is set the value of a . analysts may adjust that value in light of information reflecting changes to time series patterns. 2.3: Trend Projections When a time series reflects a shift from a stationary pattern to real growth or decline in the time series variable of interest (e. g. product demand or student enrollment at the university), that time series is demonstrating the trend component. The trend projection method of time series forecasting is based on the simple linear regression model. However, we generally do not require the rigid assumptions of linear regression (normal distribution of the error component, constant variance of the error component, and so forth), only that the past linear trend pattern will continue into the future. Note that is the trend pattern reflects a curve, we would have to rely on the more sophisticated features of multiple regression. The trend projection model is: T t Trend value for variable of interest in Period t b 0 Intercept of the trend projection line b 1 Slope, or rate of change, for the trend projection line While the text illustrates the computational formulas for the trend projection model, we will use The Management Scientist . To use The Management Scientist . select the Forecasting Module and load the data as previously described in the Three Period Moving Average demonstration. Next, click Solution/Solve/Trend Projection and enter 4 where it asks for Number of Periods to Forecast. Note, this is the first method that we have covered that the software asks this question, as it is assumed that all of the smoothing methods covered in this course are limited to forecasting just one period ahead. Printout 2.3.1 illustrates the trend projection printout from The Management Scientist . FORECASTING WITH LINEAR TREND THE LINEAR TREND EQUATION: T 367.121 7.776 t where T trend value of the time series in period t TIME PERIOD TIME SERIES VALUE FORECAST FORECAST ERROR THE MEAN SQUARE ERROR 449.96 THE FORECAST FOR PERIOD 13 468.21 THE FORECAST FOR PERIOD 14 475.99 THE FORECAST FOR PERIOD 15 483.76 THE FORECAST FOR PERIOD 16 491.54 Now we are getting somewhere with a forecast Note the mean square error is down to 449.96, giving a root mean square error of 21.2. Compared to the three period moving average RMSE of 31.7, we have a 33 improvement in the accuracy of the forecast over the relevant period. Now, if this were products such as automobiles, to achieve a customer service level of 97.5, we would create a safety stock of 2 times the RMSE above the forecast. So, for Period 13, the forecast plus 2 times the RMSE is 468.21 (2 21.2) or 511 cars. With the three period moving average method, the same customer service level inventory position would be: 454.3 (2 31.7) or 518. The safety stocks are 2 times 21 (42 for the trend projection) compared to 2 times 31.7 (63 for the three period moving average). This is a difference of 21 cars which could represent significant inventory carrying cost that could be avoided with the better forecasting method. Note that the software provides the trend equation, showing the intercept of 367.121 and the slope of 7.776. The slope is interpreted as in simple linear regression, demand goes up 7.776 per unit increase in time. This means that over the course of the time series, demand is increasing about 8 units a quarter. The intercept is only of interest in placing the trend projection line on a time series graph. I used the Chart Wizard in Excel to produce such a graph for the trend projection model: Note in this figure that demand falls below the trend projection line in Periods 3, 7 and 11. This is confirmed by looking at The Management Scientist computer Printout 2.3.1, where the errors are negative in the same periods. That is a pattern Since our data is quarterly, we would suspect that there is a seasonal pattern that results in a valley in the time series in every third quarter. To capture that pattern, we need the time series decomposition model that breaks down, analyzes and forecasts the seasonal as well as the trend components. We do that in the last section of this notes modules. Pause and Reflect The trend projection model is appropriate when the time series exhibits a linear trend component that is assumed to continue into the future. While rules of thumb suggest 20 observations to compute and test parameters of linear regression models, the simple trend projection model can be created with a minimum of 10 observations. The trend projection model is generally used to make multiple period forecasts for the short range, although some firms use it for the intermediate range as well. 2.4: Trend and Seasonal Components The last time series forecasting method that we examine is very powerful in that it can be used to make forecasts with time series that exhibit trend and seasonal components. The method is most often referred to as Time Series Decomposition, since the technique involves breaking down and analyzing a time series to identify the seasonal component in what are called seasonal indexes . The seasonal indexes are used to deseasonalize the time series. The deseasonalized time series is then used to identify the trend projection line used to make a deseasonalized projection. Lastly, seasonal indexes are used to seasonalize the trend projection. Lets illustrate how this works. As usual, we will use The Management Scientist to do our work after the illustration. The Seasonal Component The seasonal component may be found by using the centered moving average approach as presented in the text, or by using the season average to grand average approach described here. The latter is a simpler technique to understand, and comes very close to the centered moving average approach for most time series. The first step is to gather observations from the same quarter and find their average. I will repeat Table 2.2.1 as Table 2.4.1, so we can easily find the data: To compute the average demand for Quarter 1, we gather all observations for Quarter 1 and find their average, then repeat for Quarters 2, 3 and 4: Quarter 1 Average (398 410 465) / 3 424.3 Quarter 2 Average (395 402 460) / 3 419 Quarter 3 Average (361 378 430) / 3 389.7 Quarter 4 Average (400 440 473) / 3 437.7 The next step is to find the seasonal indexes for each quarter. This is done by dividing the quarterly average from above, by the grand average of all observations. Grand Average (398395361400410402378 440465460430473) / 12 417.7 Seasonal Index, Quarter 1 424.3 / 417.7 1.016 Seasonal Index, Quarter 2 419 / 417.7 1.003 Seasonal Index, Quarter 3 389.7 / 417.7 0.933 Seasonal Index, Quarter 4 437.7/ 417.7 1.048 These indexes are interpreted as follows. The overall demand for Quarter 4 is 4.5 percent above the average demand, thus making Quarter 4 a peak quarter. The overall demand for Quarter 3 is 6.7 percent below the average demand, thus making Quarter 3 an off peak quarter. This confirms our suspicion that demand is seasonal, and we have quantified the nature of the seasonality for planning purposes. Please note The Management Scientist software Printout 2.4.1 provides indexes of 1.046, 1.009, 0.920, and 1.025. The peaks and off peaks are similar to the above computations, although the specific values are a bit different. The centered moving average approach used by the software requires more data for computations - at least 4 or 5 repeats of the seasons, we only have 3 repeats (12 quarters gives 3 years of data). We will let the computer program do the next steps, but I will illustrate with a couple of examples. The next task is to deseasonalize the data. We do this by dividing each actual observation by the appropriate seasonal index. So for the first observation, where actual demand was 398, we note that it is a first quarter observation. The deseasonalized value for 398 is: Deseasonalized Y 1 398 / 1.016 391.7 Actual demand would have been 391.7 if there was no seasonal effects. Lets do four more: Deseasonalized Y 2 395 / 1.003 393.8 Deseasonalized Y 3 361 / 0.933 386.9 Deseasonalized Y 4 400 / 1.048 381.7 Deseasonalized Y 5 410 / 1.016 403.6 I am sure you have seen deseasonalized numbers in articles in the Wall Street Journal or other popular business press and journals. This is how those are computed. The next step is to find the trend line projection based on the deseasonalized observations. This trend line is a bit more accurate than the trend line projection based on the actual observations since than line contains seasonal variation. The Management Scientist gives the following trend line for this data: This trend line a close to the line we computed in Section 2.3, when the line was fit to the actual, rather than the seasonal data: T t 367 7.8 t. Uma vez que temos a linha de tendência, fazer uma previsão é fácil. Lets say we want to make a forecast for time period 2. Of course, The Management Scientist does all this for us. To use The Management Scientist . select the Forecasting Module and load the data as previously described in the Three Period Moving Average demonstration. Next, click Solution/Solve/Trend and Seasonal . then enter 4 where it asks for number of seasons, and 4 where it asks for number of periods to forecast. - click OK to get the solution. Note that number of seasons is 4 for quarterly data, 12 for monthly data, and so forth. Here is the printout. Printout 2.4.1 FORECASTING WITH TREND AND SEASONAL COMPONENTS SEASON SEASONAL INDEX THE MEAN SQUARE ERROR 87.25 THE FORECAST FOR PERIOD 13 494.43 THE FORECAST FOR PERIOD 14 485.44 THE FORECAST FOR PERIOD 15 450.64 THE FORECAST FOR PERIOD 16 510.40 The Mean Square Error of 87.25, gives a root mean square error of 9.3, a spectacular improvement over the other techniques. A sketch of the actual and forecast data shows how well the trend and seasonal model can do at responding to the trend and the seasonal turn points. Note how the four period out forecast continues the response to both components. Pause and Reflect The trend and seasonal components method is appropriate when the time series exhibits a linear trend and seasonality. This model, compared to the others, does require significantly more historical data. It is suggested that you should have enough data to see at least four or five repetitions of the seasonal peaks and off peaks (with quarterly data, there should be 16 to 20 observations with monthly data, there should be 48 to 60 observations). Well, thats it to the introduction to times series forecasting material. Texts devoted entirely to this subject go into much more detail, of course. For example, there are exponential smoothing models that incorporate trend and time series decomposition models that incorporate the cyclic component. A good reference for these is Wilson and Keating, Business Forecasting . 2nd ed. Irwin (1994). Two parting thoughts. In each of the Pause and Reflect paragraphs, I gave suggestions for number of observations in the historical data base. There is always some judgment required here. While we need a lot of data to fit the trend and trend and seasonal models, a lot of data may mean going far into the past. When we go far into the past, the patterns in the data may be different, and the time series forecasting models assume that any patterns in the past will continue into the future (not the values of the past observations, but the patterns such as slope and seasonal indexes). When worded on forecasts for airport traffic, we would love to go back 10 years, but tourist and permanent resident business travel is different today than 10 years ago so we must balance the need for a lot of data with the assumption of forecasting. The second thought is to always remember to measure the accuracy of your models. We ended with a model that had a root mean square error that was a 75 improvement over the 5-period moving average. I know one company that always used a 5-period moving average for their sales forecasts - scary, isnt it You should be ready to tackle the assignment for Module 2, Forecasting Lost Sales, in the text, pp. 210-212. The case answers via e-mail and The Management Scientist computer output files are due February 10, 2001. If you want free review of your draft responses/output, please forward as a draft by Tuesday, February 6, 2001. Module Schedule

No comments:

Post a Comment