Tuesday 24 October 2017

Octava média móvel exponencial


Depois de juntar os bits desse segmento, criei esta função usando a função de filtro Octaves. Começa com a média móvel simples como base. V é o vetor de coluna de números para calcular a média móvel exponencial. A janela é um número inteiro como um número de dias. Eu usei 12. Aqui está uma explicação matemática dessa função. Observe que a página usa 2 (n1) (onde n é janela ou o número de dias) como alfa. Mas eu uso 1n porque esse valor de alfa se adapta às minhas necessidades. Ajuste o alfa conforme necessário. Alternativamente, às vezes eu preciso das dimensões dos vetores de entrada e saída para combinar. Eu preencho valores inválidos com NaN adicionando meanV NaN (window-1,1) meanV como a última linha na função movingEMean. Você também pode preenchê-lo com o simpleAvg se desejar uma estimativa aproximada. A média móvel expressiva do MOVAVG não está correta. Alguém mais experimenta o uso da função MOVAVG com ponderação exponencial (e) Se eu não especifico a ponderação e, então, eu obtenho um simples simples Média móvel. Mas quando eu especificar e eu recebo números que não parecem corretos. Tenho curiosidade se a ponderação exponencial usada aqui for de alguma forma diferente do que é comum assumido. Por exemplo, para calcular as tendências dos preços das ações, normalmente é calculado MACD (divergência de convergência média móvel) ao fazer: MACD (média móvel exponencial de 12 dias) menos (média móvel exponencial de 26 dias). Então, em Octave, fiz o seguinte: Shortma , Longma movavg (dados (:, Preço), 12,26, e) MACD Shortma - Longma Para um estoque típico, o valor MACD geralmente é de um dígito. Por outro lado, o meu S hortma e L ongma acompanham o arroz P muito de perto e, portanto, o MACD permanece na faixa de -10-4, o que claramente é incorreto. Ajude, por favor, a transferência de média móvel e filtro (110ones (1, 10), 1, x). Isso pressupõe que os valores em tempo negativo (x (0), x (-1), etc.) são todos zero. Assim, por exemplo, o primeiro valor de y seria x (1) 10. No sexto, 7 de maio de 2010, às 15h33, Tim Rueth, o correio eletrônico gt escreveu: olhei para conv () e filtro (), mas não consigo descobrir como fazer uma média móvel com eles. Talvez eu não compreenda as funções dos controles de entrada corretamente. Let39s dizem que eu tenho uma matriz, um rand (1.100). Você pode me dizer como eu uso uso conv () e filtro () para tomar, digamos a média móvel de 10 dias, com uma ponderação de 0,5 gt ----- Mensagem Original ----- gt De: Andy Buckle Mailto: email escondido gt Enviado: quinta-feira, 06 de maio de 2010 12:06 gt Para: email escondido gt Cc: email escondido gt Assunto: Re: vetor movimentado em média gt gt conv é também um arquivo m, mas ele só tem alguns Se estiver dentro, então ele gt chama filtro para fazer o trabalho. Que é um arquivo de outubro. Gt gt Andy gt gt On Thu, 6 de maio de 2010 às 6:28, Tim Rueth ltcito e-mail gt escreveu: gt gt Alguém sabe como usar uma média móvel ponderada de n-dia de um vetor gt gt sem usar um for - Loop eu olhei o código M gt ​​para movavg () gt gt e ele usa um loop for, então eu acho que provavelmente não há nenhuma maneira, gt gt, mas eu pensei que eu chequei. Obrigado. Gt gt gt gt --Tim gt gt gt gt Help-octave mailing list gt gt email escondido gt gt www-old. cae. wisc. edumailmanlistinfohelp-octave gt gt gt gt gt gt gt - gt andy fivela gt Obrigado por mostrar Como usar o filtro () para fazer uma média móvel simples. Eu implementei seu código, e concorda com movavg (x, 10,10,0), que calcula uma média móvel simples de 10 dias. Existe apenas uma diferença nos primeiros 9 números devido a valores assumidos de tempo negativo (movavg calcula um período de rodagem). Como você pode lembrar, estou tentando usar o filtro () para evitar movavg () s for-loop. Agora, o que estou tentando fazer é uma média móvel ponderada, idêntica ao parâmetro alfa de movavg (). Quando alpha0, é uma média móvel simples e concorda com o filtro (). Se eu mudar alfa para 1, suponho que obtenha um MA linear. É o código em movavg. m que faz a ponderação (o lead é o número de dias em média, igual a 10 no caso acima): lead (1: lead).aa Ajuste os pesos para igualar 1 lead lead sum (lead) Então, para uma média móvel de 10 dias linearmente ponderada (lead 10, alpha 1). Os 9 dias anteriores e o dia atual devem ser ponderados da seguinte forma: 155, 255, 355. 1055, com o maior peso (1055) aplicado no dia atual. Então, tentei um caso de teste simples com apenas um MA de 2 dias em um vetor de 6 elementos. Madays 2 alpha 1 len 6 a rand (1. len) Calcular MA usando movavg () ma movavg (a, madays, madays, alfa) Calcular MA usando filtro () varredura (1: madays).alpha normsweep sweepsum (varredura) f Filtro (normsweep, 1, a) Os resultados de movavg () e filter () são semelhantes, mas não iguais. Eu acho que não tenho os argumentos para o filtro () correto, mas não consigo descobrir o que fiz de errado. Particularmente, não tenho certeza do que o segundo argumento do filtro () deveria fazer. Ajuda Eu não sei o que você quer dizer com uma ponderação de 0,5, mas para fazer uma média simples de 10 dias, itd be y filter (110ones (1, 10), 1, x) Isso pressupõe que os valores em tempo negativo (x (0 ), X (-1), etc.) são todos zero. Assim, por exemplo, o primeiro valor de y seria x (1) 10. No sex. 7 de maio de 2010, às 15h33, Tim Rueth escreveu o correio eletrônico: escrevi: olhei para conv () e filtro (), mas não consigo descobrir como fazer uma média móvel com eles. Talvez eu não entenda as funções dos controles de entrada corretamente. Digamos que eu tenho uma matriz, um rand (1.100). Você pode me dizer como eu uso conv () e filtro () para tomar, digamos a média móvel de 10 dias, com uma ponderação de 0,5 gt ----- Mensagem Original ----- gt De: Andy Buckle Mailto: email escondido gt Enviado: quinta-feira, 06 de maio de 2010 12:06 gt Para: email escondido gt Cc: email escondido gt Assunto: Re: vetor movimentado em média gt gt conv é também um arquivo m, mas ele só tem alguns Se estiver dentro, então ele gt chama filtro para fazer o trabalho. Que é um arquivo de outubro. Gt gt Andy gt gt On Thu, 6 de maio de 2010 às 6:28, Tim Rueth ltcito e-mail gt escreveu: gt gt Alguém sabe como usar uma média móvel ponderada de n-dia de um vetor gt gt sem usar um for - Loop Eu olhei o código M gt ​​para movavg () gt gt e ele usa um loop for, então eu acho que provavelmente não há um jeito, gt gt, mas eu pensei que estava de acordo. Obrigado. Gt gt gt gt --Tim gt gt gt gt Help-octave mailing list gt gt email escondido gt gt www-old. cae. wisc. edumailmanlistinfohelp-octave gt gt gt gt gt gt gt gt - gt andy fivela gtTodo código de filtro Abaixo funciona bem quando comparado com o que eu estava fazendo, exceto por um número de dias iniciais, devido a quais valores são assumidos em tempo negativo. Eu estava usando o seguinte código: gt gt quotndaysquot é o número de dias a ser usado ao calcular a média exponencial de gtmoving de quotdataquot (dados é um vetor de coluna) gt data repmat (dados (1), ndays, 1) dados de repetição de dados (1) horários de nove dias no início dos dados para valores de tempo negativos gt alpha 2 (ndays1) gt n comprimento (dados) gt avg zeros (n, 1) gt avg (1) data (1) A instrução acima é tudo que você precisa Para não dispor de memória passada para valores negativos. Você deve fazer o mesmo para a função de filtro, mas não consegui dizer como fazê-lo de forma indiferente. Gt for i 2. n gt ao avg (i-1) gt avg (i) ao alpha (dados (i) - ao) gt final para gt gt trim off run-in período para valores de tempo negativos gt longma longma (lmadays1. End ) Eu não entendo a instrução acima. O que é longma gtPara pequenos valores de ndays, o número de dias iniciais em que há uma gtdiscrepancy com sua implementação de filtro () é mínima, mas para valores maiores de ndays, o número de dias iniciais de discrepância cresce (obviamente, gtdue para a natureza de Um MA exponencial com uma memória de cauda longa). Note-se que eu gtadd valores de tempo negativos semelhantes à frente do vetor quando usando gtfilter () também. Eu não tenho certeza de qual é a convenção quando se trata de calcular as médias exponenciais exponenciais para pontos em quotdataquot onde quotndaysquot gletsche novamente em tempo negativo. Obrigado novamente. - Francesco Potort (ricercatore) Voz: 39 050 315 3058 (op.2111) ISTI - Area della ricerca CNR Fax: 39 050 315 2040 via G. Moruzzi 1, I-56124 Pisa Email: email escondido (entrada 20, 1º andar , Sala C71) Web: fly. isti. cnr. it Help-octave mailing list hidden email www-old. cae. wisc. edumailmanlistinfohelp-octave Eu não posso verificá-lo atualmente, mas se me lembro corretamente, o 4º argumento para filtrar é inicial Condições. Então, algo como se você quisesse que sua condição inicial fosse o primeiro valor de dados, acho que o comando seria: b alpha a 1, filtro alpha-1 (b, a, x, x (1)). Só precisa Para ser um elemento neste caso porque a única condição inicial de que você precisa é s0. Em Thu, 13 de maio de 2010 às 2:21 da manhã, o correio eletrônico de Francesco Potort, gt escreveu: o seu código de filtro abaixo funciona bem quando comparado ao que eu estava fazendo, exceto por um número de dias iniciais, devido a quais valores são assumidos Gino tempo negativo. Eu estava usando o seguinte código: gt gt quotndaysquot é o número de dias a ser usado ao calcular a média exponencial de gtmoving de quotdataquot (dados é um vetor de coluna) gt data repmat (dados (1), ndays, 1) dados de repetição de dados (1) horários de nove dias no início dos dados para valores de tempo negativos gt alpha 2 (ndays1) gt n comprimento (dados) gt avg zeros (n, 1) gt avg (1) data (1) A instrução acima é tudo que você precisa Para não dispor de memória passada para valores negativos. Você deve fazer o mesmo para a função de filtro, mas não consegui dizer como fazê-lo de forma indiferente. Gt for i 2. n gt ao avg (i-1) gt avg (i) ao alpha (dados (i) - ao) gt final para gt gt trim off run-in período para valores de tempo negativos gt longma longma (lmadays1. End ) Eu não entendo a instrução acima. O que é longma gtPara pequenos valores de ndays, o número de dias iniciais em que há uma gtdiscrepancy com sua implementação de filtro () é mínima, mas para valores maiores de ndays, o número de dias iniciais de discrepância cresce (obviamente, com a natureza de Um MA exponencial com uma memória de cauda longa). Note-se que eu gtadd valores de tempo negativos semelhantes à frente do vetor quando usando gtfilter () também. Eu não tenho certeza de qual é a convenção quando se trata de calcular as médias exponenciais móveis para pontos em quotdataquot onde quotndaysquot gtreaches volta para o tempo negativo. Obrigado novamente. - Francesco Potort (ricercatore) Voz: 39 050 315 3058 (op.2111) ISTI - Area della ricerca CNR Fax: 39 050 315 2040 via G. Moruzzi 1, I-56124 Pisa Email: email escondido (entrada 20, 1º andar , Sala C71) Web: fly. isti. cnr. it Em resposta a esta publicação por Francesco Potort A última instrução com quotlongmaquot deveria ter lido: quotavg avg (n1. End) quot que efetivamente destrói os valores calculados do tempo negativo. Mas, como você diz, parece que eu não precisava fazer isso porque o histórico foi completamente capturado em dados avg (1) (1), então não há necessidade de calcular um tempo de quotrun-inquot. Obrigado Francesco. Sherman descobriu que eu posso definir a condição inicial especificando um 4º parâmetro no filtro () igual ao primeiro ponto de dados. Eu tentei isso e obtive resultados muito semelhantes (mas não exatamente) quando comparados com o loop for abaixo com valores de tempo negativos. Mas essa pequena diferença se dissipou dentro de quotndaysquot e não é um grande problema. Obrigado Sherman. Em resumo, para calcular a média móvel exponencial de quotdataquot para quotndaysquot, o seguinte código: alpha 2 (ndays1) n comprimento (dados) avg zeros (n, 1) avg (1) dados (1) para i 2. n ao avg (I-1) avg (i) ao alfa (data (i) - ao) endfor é próximo, mas não é igual a: alpha 2 (ndays1) filtro avg (alfa, 1 alfa-1, dados, dados (1) ) Para aproximadamente os primeiros dias da avg. Gt ----- Mensagem Original ----- gt De: Francesco Potort mailto: email escondido Enviado: quarta-feira, 12 de maio de 2010 11:22 PM gt Para: email escondido gt Cc: Octave-ML James Sherman Jr. Gt Assunto: Re: média movida vectorizada gt gt O seu código de filtro abaixo funciona bem quando comparado ao que gt eu tinha gt gtdoing, exceto por um número de dias iniciais, devido a quais valores são gt gtassumed em tempo negativo. Eu estava usando o seguinte código: gt gt gt gt quotndaysquot é o número de dias a ser usado ao calcular a média móvel gt gtexponencial de quotdataquot (dados é um vetor de coluna) gt gt data repmat (dados (1), ndays, 1 ) Dados repetir dados gt (1) tempos de dias em gt o início dos dados para valores de tempo negativos alpha gt 2 (ndays1) n gt gt comprimento (dados) valores médios (n, 1) gt gt avg (1) dados (1) Gt gt A instrução acima é tudo o que você precisa para garantir a memória anterior gt para valores negativos. Você deve fazer o mesmo para a função gt do filtro, mas não consegui dizer como fazê-lo de uma maneira diferente. Gt gt gt for i 2. n gt gt ao avg (i-1) gt gt avg (i) ao alfa (dados (i) - ao) fim de gt gt gt gt trim trim do período de execução para valores de tempo negativos gt gt Longma longma (lmadays1. End) gt gt Eu não entendo a instrução acima. O que é longma gt gt gtPara pequenos valores de ndays, o número de dias iniciais em que gt existe, uma gt gtdiscrepancy com sua implementação de filtro () é mínima, mas para gt gtlarger valores de ndays, o número de dias iniciais de gt discrepancy cresce gt gt (Obviamente, devido à natureza de um MA exponencial com um gt gtmemory de longa duração). Observe que eu adiciono valores de tempo negativos semelhantes à frente gt do gtvector gt quando também uso gt gtfilter (). Eu não tenho certeza de qual é a convenção quando gt gt vem ao cálculo de médias móveis exponenciais para pontos gt em quotdataquot onde quotndaysquot gt retorna de volta ao tempo negativo. Obrigado novamente. Gt gt - gt Francesco Potort (ricercatore) Voz: 39 050 315 gt 3058 (op.2111) gt ISTI - Área della ricerca CNR Fax: 39 050 315 2040 gt via G. Moruzzi 1, I-56124 Pisa Email: email escondido Gt (entrada 20, 1º andar, sala C71) Web: fly. isti. cnr. it gt Então, isso me incomodou, então eu olhei um pouco para a função de filtro e acho que encontrei o erro na minha sugestão inicial . O vetor de condição inicial tem a ver com os estados internos do filtro, não as saídas de tempo negativo do filtro (pelo menos não diretamente), para obter o que eu acho é exatamente qual seu código com o loop for, a linha do filtro deve ser : Filtro avg (alfa, 1 alfa-1, dados, dados (1) (1-alfa)) É bastante inícuo por que o termo 1-alfa precisa estar lá, e eu não sei se há muito interesse nisso, mas Não deveria ser tão difícil (provavelmente só preciso abrir meus sinais e livros de sistemas) para escrever uma função para calcular as condições iniciais que a função de filtro espera apenas dar as saídas e as entradas do tempo negativo. Em Thu, 13 de maio de 2010, às 8:38 PM, Tim Rueth lthidden email gt escreveu: A última instrução com quotlongmaquot deveria ter lido: quotavg avg (n1: end) quot que efetivamente destrói os valores calculados do tempo negativo. Mas, como você diz, parece que não precisei fazer isso porque o histórico é completamente capturado em dados avg (1) (1), então não há necessidade de calcular um tempo de quotrun-inquot. Obrigado Francesco. Sherman descobriu que eu posso definir a condição inicial especificando um 4º parâmetro no filtro () igual ao primeiro ponto de dados. Eu tentei isso e obtive resultados muito semelhantes (mas não exatamente) quando comparados com o loop for abaixo com valores de tempo negativos. Mas essa pequena diferença se dissipou dentro de quotndaysquot e não é um grande problema. Obrigado Sherman. Em resumo, para calcular a média móvel exponencial de quotdataquot para quotndaysquot, o seguinte código: alpha 2 (ndays1) n comprimento (dados) avg zeros (n, 1) avg (1) dados (1) para i 2. n ao avg (I-1) avg (i) ao alpha (data (i) - ao) é próximo, mas não é igual a: alpha 2 (ndays1) filtro avg (alfa, 1 alfa-1, dados, dados (1)) Por aproximadamente os primeiros dias da avg. Gt ----- Mensagem Original ----- gt De: Francesco Potort mailto: email escondido gt Enviado: quarta-feira, 12 de maio de 2010 11:22 PM gt Para: email escondido gt Cc: 39Octave-ML39 39James Sherman Jr. 39 gt Assunto: Re: média movida vectorizada gt gt. Seu código de filtro abaixo funciona bem quando comparado ao que gt eu tinha gt gtdoing, exceto por um número de dias iniciais, devido a quais valores são gerados em tempo negativo. Eu estava usando o seguinte código: gt gt gt gt quotndaysquot é o número de dias a ser usado ao calcular a média móvel gt gtexponencial de quotdataquot (dados é um vetor de coluna) gt gt data repmat (dados (1), ndays, 1 ) Dados repetir dados gt (1) tempos de dias em gt o início dos dados para valores de tempo negativos alpha gt 2 (ndays1) n gt gt comprimento (dados) valores médios (n, 1) gt gt avg (1) dados (1) Gt gt A instrução acima é tudo o que você precisa para garantir a memória anterior gt para valores negativos. Você deve fazer o mesmo para a função gt do filtro, mas não consegui dizer como fazê-lo de uma maneira diferente. Gt gt gt for i 2. n gt gt ao avg (i-1) gt gt avg (i) ao alfa (dados (i) - ao) fim de gt gt gt gt trim trim do período de execução para valores de tempo negativos gt gt Longma longma (lmadays1. End) gt gt Não entendi a instrução acima. O que é longma gt gt gtPara pequenos valores de ndays, o número de dias iniciais em que gt there39s gt gtdiscrepancy com sua implementação de filtro () é mínimo, mas para gt gtlarger valores de ndays, o número de dias iniciais de gt discrepancy cresce gt gt (Obviamente, devido à natureza de um MA exponencial com um gt gtmemory de longa duração). Observe que eu adiciono valores de tempo negativos semelhantes à frente gt do gtvector gt quando também uso gt gtfilter (). Eu não tenho certeza de qual é a convenção quando gt gtcome ao cálculo de médias móveis exponenciais para pontos gt em quotdataquot onde quotndaysquot gt retorna novamente em tempo negativo. Obrigado novamente. Gt gt - gt Francesco Potort (ricercatore) Voz: 39 050 315 gt 3058 (op.2111) gt ISTI - Área della ricerca CNR Fax: 39 050 315 2040 gt via G. Moruzzi 1, I-56124 Pisa Email: email escondido Gt (entrada 20, 1º andar, sala C71) Web: fly. isti. cnr. it gt Então, isso me incomodou, então eu olhei um pouco para a função de filtro e acho que encontrei o erro na minha sugestão inicial . O vetor de condição inicial tem a ver com os estados internos do filtro, não as saídas de tempo negativo do filtro (pelo menos não diretamente), para obter o que eu acho é exatamente qual seu código com o loop for, a linha do filtro deve ser : Filtro avg (alfa, 1 alfa-1, dados, dados (1) (1-alfa)). É bastante inícuo porque o termo 1-alfa precisa estar lá, e eu não sei se há muito interesse nisso, mas Não deveria ser tão difícil (provavelmente eu só preciso abrir meus sinais e livros de sistema) para escrever uma função para calcular as condições iniciais que a função de filtro espera apenas dar as saídas e entradas de tempo negativo. Em Thu, 13 de maio de 2010, às 8:38 PM, Tim Rueth lintou o email gt escreveu: A última instrução com longma deve ter lido: avg avg (n1: end) que efetivamente destrói os valores calculados do tempo negativo. Mas, como você diz, parece que não precisava fazer isso porque o histórico foi completamente capturado em dados avg (1) (1), então não há necessidade de calcular um tempo de execução. Obrigado Francesco. Sherman descobriu que eu posso definir a condição inicial especificando um 4º parâmetro no filtro () igual ao primeiro ponto de dados. Eu tentei isso e obtive resultados muito semelhantes (mas não exatamente) quando comparados com o loop for abaixo com valores de tempo negativos. Mas essa pequena diferença se dissipou dentro de dias e não é um grande problema. Obrigado Sherman. Em resumo, para calcular a média móvel exponencial dos dados por dias, o seguinte código: alpha 2 (ndays1) n comprimento (dados) avg zeros (n, 1) avg (1) dados (1) para i 2. n ao avg (I-1) avg (i) ao alpha (data (i) - ao) é próximo, mas não é igual a: alpha 2 (ndays1) filtro avg (alfa, 1 alfa-1, dados, dados (1)) Por aproximadamente os primeiros dias da avg.

No comments:

Post a Comment