Sunday 10 December 2017

Mudança média padrão desvio matlab


Abaixo você pode ver meu método C para calcular Bandas Bollinger para cada ponto (média móvel, banda ascendente, banda descendente). Como você pode ver, esse método usa 2 para loops para calcular o desvio padrão móvel usando a média móvel. Ele costumava conter um loop adicional para calcular a média móvel nos últimos n períodos. Este eu poderia remover adicionando o novo valor de ponto a totalaverage no início do loop e removendo o valor do ponto i-n no final do loop. Minha pergunta agora é basicamente: Posso remover o loop interno restante de uma maneira similar que eu consegui com a média móvel perguntada em 31 de janeiro de 13 às 21:45 A resposta é sim, você pode. Em meados dos anos 80, desenvolvi apenas um algoritmo desse tipo (provavelmente não original) no FORTRAN para uma aplicação de monitoramento e controle de processo. Infelizmente, isso aconteceu há mais de 25 anos e não me lembro das fórmulas exatas, mas a técnica foi uma extensão da média móvel, com cálculos de segunda ordem em vez de apenas linear. Depois de olhar para o seu código, penso que posso descobrir como eu fiz isso naquela época. Observe como seu loop interno está fazendo uma Soma de Quadrados: da mesma forma que sua média deve ter originalmente uma Soma de Valores. As únicas duas diferenças são a ordem (seu poder 2 em vez de 1) e que você está subtraindo a média Cada valor antes de você marcar. Agora, isso pode parecer inseparável, mas na verdade eles podem ser separados: agora o primeiro termo é apenas uma Soma de Quadrados, você lida com a mesma maneira que você faz a soma de Valores para a média. O último termo (k2n) é apenas a média ao quadrado do período. Como você divide o resultado pelo período de qualquer maneira, você pode simplesmente adicionar o novo quadrado médio sem o loop extra. Finalmente, no segundo termo (SUM (-2vi) k), desde SUM (vi) total kn, você pode alterá-lo para este: ou apenas -2k2n. Que é -2 vezes o quadrado médio, uma vez que o período (n) é dividido novamente. Então, a fórmula combinada final é: (certifique-se de verificar a validade disso, já que eu estou derrubando o topo da minha cabeça) E incorporar seu código deve ser algo assim: Obrigado por isso. Eu usei isso como base de uma implementação em C para o CLR. Descobri que, na prática, você pode atualizar de forma que newVar seja um número negativo muito pequeno, e o sqrt falhar. Introduzi um if para limitar o valor a zero para este caso. Não é idéia, mas estável. Isso ocorreu quando cada valor na minha janela tinha o mesmo valor (usei um tamanho de janela de 20 e o valor em questão era 0,5, caso alguém pretendesse tentar reproduzir isso). Ndash Drew Noakes 26 de julho 13 às 15:25 Ive Usou common-math (e contribuiu para essa biblioteca) para algo muito parecido com isso. Sua fonte aberta, portar para C deve ser fácil como torta comprada na loja (você tentou fazer uma torta do zero). Confira: commons. apache. orgmathapi-3.1.1index. html. Eles têm uma classe StandardDeviation. Vá para a cidade respondeu Jan 31 13 às 21:48 Você já esqueci Desculpe, eu não tinha a resposta que você estava procurando. Eu definitivamente não queria sugerir portar toda a biblioteca. Apenas o código mínimo necessário, que deveria ser algumas centenas de linhas ou assim. Tenho em atenção que não tenho ideia do que as restrições de direitos autorais legais que o apache tem nesse código, então você deve verificar isso. No caso de você persegui-lo, aqui está o link. De modo que o Variance FastMath ndash Jason Jan 31 13 às 22:36 A informação mais importante já foi dada acima --- mas talvez isso ainda seja de interesse geral. Uma pequena biblioteca Java para calcular média móvel e desvio padrão está disponível aqui: githubtools4jmeanvar A implementação é baseada em uma variante do método Welfords mencionado acima. Métodos para remover e substituir valores foram derivados que podem ser usados ​​para mover valores de janelas. Tenho uma série de dados x, y e estou tentando encontrar a média móvel. Os números de dados x são números inteiros de 1 a 100 enquanto os dados y são números de 0,01 a 1 e eles também têm um desvio padrão ydev (o qual derivamos porque a experiência é repetida várias vezes). Estou tentando encontrar a média móvel usando os 20 vizinhos mais próximos (usando o Matlab): o caminho acima deriva a média móvel, mas não sei como usar o desvio padrão que eu tenho para cada ponto de dados, porque alguns pontos de dados têm muito Desvios-padrão maiores do que outros, o que significa que eles não são tão confiáveis ​​quanto os outros (então eles provavelmente pesam menos). Como posso incluir o desvio padrão para cada ponto de dados no cálculo acima, solicitado 5 de julho 15 às 15:07 Média móvel ou mediana móvel. Sobre a questão Como posso incluir o desvio padrão para cada ponto de dados no cálculo acima, depende do que você deseja fazer. Você deve primeiro decidir isso (o que não é uma questão de programação). Uma sugestão: você pode usar todo o conjunto de dados para cada x (em vez de apenas a média e desvio padrão) e calcular o meio médio desse ndash Luis Mendo Jul 5 15 às 15:12 LuisMendo Eu queria fazer uma média móvel (eu editei o Código para refletir isso). O conjunto de dados é um experimento de séries temporais e repetiu várias vezes (e é como eu tenho desvios padrão para cada ponto). Eu quero usar o desvio padrão para cada ponto em meu cálculo da média móvel porque eu quero que os pontos com menor desvio padrão pesem mais do que os pontos com desvio padrão maior. Ndash AL B Jul 5 15 às 16:50 Diga que você tenha um vetor a. Em seguida, outra maneira de escrever significa (a) como uma média ponderada é awts. Onde estão (1, numel (a)) numar (a). No seu caso, você tem um y (ind1 (i): ind2 (i)). Parece que o que você quer usar é uma média móvel ponderada, onde seus pesos não são mais idênticos, mas são escolhidos usando o desvio padrão dos valores correspondentes. Supondo que o vetor sd contenha os desvios padrão, existe uma maneira de fazer isso: Aqui, os valores com desvios padrão menores contribuirão com pesos maiores. Uma idéia alternativa é calcular a média móvel simples de ambos y e seus desvios padrão sd. E depois traçá-los um ao lado do outro. Isso tem a vantagem de ser mais estatisticamente interpretável do que escolher pesos como uma função dos desvios padrão.

No comments:

Post a Comment