Monday 6 November 2017

Moving average lowess


LOESS é um dos muitos métodos modernos de modelagem que se baseiam em métodos clássicos, como a regressão linear e não linear dos mínimos quadrados. Métodos de regressão moderna são projetados para lidar com situações em que os procedimentos clássicos não funcionam bem ou não podem ser efetivamente aplicados sem trabalho indevido. O LOESS combina grande parte da simplicidade da regressão linear dos mínimos quadrados com a flexibilidade da regressão não linear. Faz isto montando modelos simples aos subconjuntos localizados dos dados para construir uma função que descreve a parte deterministic da variação nos dados. ponto por ponto. De fato, uma das principais atrações deste método é que o analista de dados não é obrigado a especificar uma função global de qualquer forma para ajustar um modelo para os dados, apenas para ajustar os segmentos dos dados. O trade-off para esses recursos é o aumento da computação. Por ser tão computacionalmente intensivo, o LOESS teria sido praticamente impossível de usar na época em que a regressão dos mínimos quadrados estava sendo desenvolvida. A maioria dos outros métodos modernos de modelagem de processos são semelhantes à LOESS a este respeito. Estes métodos foram conscientemente concebidos para utilizar a nossa capacidade computacional actual para a mais completa vantagem possível para atingir objectivos não facilmente alcançados por abordagens tradicionais. Definição de um LOESS Modelo LOESS, originalmente proposto por Cleveland (1979) e mais desenvolvido por Cleveland e Devlin (1988). Denota especificamente um método que é (de certa forma) mais descritivamente conhecido como regressão polinomial localmente ponderada. Em cada ponto no conjunto de dados, um polinômio de baixo grau é ajustado a um subconjunto dos dados, com valores de variáveis ​​explicativas próximos ao ponto cuja resposta está sendo estimada. O polinômio é ajustado usando mínimos quadrados ponderados, dando mais peso a pontos próximos ao ponto cuja resposta está sendo estimada e menos peso a pontos mais afastados. O valor da função de regressão para o ponto é então obtido avaliando o polinômio local usando os valores da variável explicativa para esse ponto de dados. O ajuste LOESS está completo depois que os valores das funções de regressão foram computados para cada um dos pontos de dados (n). Muitos dos detalhes deste método, tais como o grau do modelo polinomial e os pesos, são flexíveis. O intervalo de opções para cada parte do método e os padrões padrão são brevemente discutidos a seguir. Subconjuntos localizados de dados Os subconjuntos de dados usados ​​para cada ajuste de mínimos quadrados ponderados em LOESS são determinados pelo algoritmo de vizinhos mais próximo. Uma entrada especificada pelo usuário para o procedimento chamado largura de banda ou parâmetro de suavização determina a quantidade de dados usada para ajustar cada polinômio local. O parâmetro de alisamento (q) é um número entre ((d1) / n) e (1), com (d) denotando o grau do polinômio local. O valor de (q) é a proporção de dados utilizados em cada ajuste. O subconjunto de dados usado em cada ajuste de mínimos quadrados ponderados é composto pelos pontos (nq) (arredondado ao próximo maior inteiro) cujos valores das variáveis ​​explicativas estão mais próximos do ponto em que a resposta está sendo estimada. (Q) é chamado de parâmetro de suavização porque controla a flexibilidade da função de regressão LOESS. Valores grandes de (q) produzem as funções mais suaves que se movem menos em resposta a flutuações nos dados. Quanto menor (q), mais próxima será a função de regressão em conformidade com os dados. Utilizar um valor demasiado pequeno do parâmetro de suavização não é desejável, uma vez que a função de regressão acabará por começar a capturar o erro aleatório nos dados. Valores úteis do parâmetro de suavização encontram-se tipicamente na gama de 0,25 a 0,5 para a maioria das aplicações LOESS. Grau de Polinômios Locais Os polinômios locais ajustados a cada subconjunto dos dados são quase sempre de primeiro ou segundo grau que é, ou localmente linear (no sentido de linha reta) ou localmente quadrático. Usando um polinômio de zero graus transforma LOESS em uma média móvel ponderada. Esse modelo local simples pode funcionar bem em algumas situações, mas nem sempre pode aproximar-se suficientemente da função subjacente. Os polinômios de grau mais alto funcionariam em teoria, mas produzem modelos que não estão realmente no espírito de LOESS. LOESS baseia-se nas idéias de que qualquer função pode ser bem aproximada em um bairro pequeno por um polinômio de baixa ordem e que modelos simples podem ser ajustados aos dados facilmente. Os polinômios de alto grau tendem a sobrecarregar os dados em cada subconjunto e são numericamente instáveis, dificultando cálculos precisos. Como mencionado acima, a função de peso dá maior peso aos pontos de dados mais próximos do ponto de estimação e o menor peso para os pontos de dados que estão mais distantes. O uso dos pesos baseia-se na idéia de que pontos próximos uns dos outros na variável explicativa espaço são mais propensos a estarem relacionados uns aos outros de uma maneira simples do que pontos que estão mais distantes. Seguindo essa lógica, os pontos que provavelmente seguem o modelo local influenciam melhor o parâmetro de modelo local mais estimado. Os pontos que são menos propensos a realmente se conformar ao modelo local têm menor influência nas estimativas dos parâmetros do modelo local. A função de peso tradicional usada para LOESS é a função de peso tri-cubo, w (x) à esquerda (1 - x3) 3 mboxTag: lowess Neste post vou fornecer código R que implementa a combinação de repetição de quantile com o LOESS mais suave para Criar um tipo de 8239quantile LOESS8221 (por exemplo: 8220Local Quantile Regressão8221). Este método é útil quando a necessidade surgir para caber robusto e resistente (precisa ser verificado) uma linha suavizada para um quantil (um exemplo para tal caso é fornecido no final deste post). Se você deseja usar a função em seu próprio código, basta executar dentro de seu console R a seguinte linha: Background Eu vim uma cruz esta idéia em um artigo intitulado 8220Alta análise de dados de throughput em genética comportamental 8221 por Anat Sakov, Ilan Golani, Dina Lipkind E meu conselheiro Yoav Benjamini. Do resumo: Nos últimos anos, surgiu uma necessidade crescente em diferentes campos, para o desenvolvimento de sistemas computacionais para análise automatizada de grandes quantidades de dados (alto throughput). Lidar com estrutura de ruído não padronizada e outliers, que poderia ter sido detectado e corrigido na análise manual, deve agora ser incorporado ao sistema com a ajuda de métodos robustos. 8230 usamos uma mistura não padronizada de métodos robustos e resistentes: LOWESS e mediana de execução repetida. A motivação para esta técnica veio de 8220Path data8221 (de ratos), que é propenso a sofrer de ruído e outliers. Durante a progressão um sistema de rastreamento pode perder a pista do animal, inserindo (ocasionalmente muito grande) outliers nos dados. Durante prolongada, e mais ainda durante prisões, outliers são raros, mas o ruído de gravação é grande em relação ao tamanho real do movimento. As implicações estatísticas são que os dois tipos de comportamento requerem diferentes graus de suavização e resistência. Uma complicação adicional é que os dois intercâmbio muitas vezes ao longo de uma sessão. Como resultado, a solução estatística adotada não só precisa suavizar os dados, mas também reconhecer, adaptativamente, quando há prisões. Até onde sabemos, nenhuma técnica de suavização existente ainda tem sido capaz de cumprir esta dupla tarefa. Nós elaboramos as fontes de ruído e propomos uma combinação de LOWESS (Cleveland, 1977) e a mediana de execução repetida (RRM Tukey, 1977) para lidar com esses desafios. Se tudo o que queríamos era realizar média móvel (média de corrida) Sobre os dados, usando R, poderíamos simplesmente usar a função rollmean do pacote zoo. Mas desde que nós quisemos também permitir o alisamento do quantil, nós giramos para usar a função do rollapply. R para a realização de Quantile LOESS Aqui está a função R que implementa o LOESS suavizado repetido quantile execução (com implementação para usar isso com uma implementação simples para usar a média em vez de quantile): assinatura de e-mailSoothing: Lowess Vamos trabalhar com dados da Colômbia WFS Household Survey, realizado em 1975-76. Eu tabulei a distribuição etária de todos os membros da família e salvei-a em um arquivo ascci, que agora lemos e traçamos: Como você pode ver, a distribuição parece um pouco menos suave do que os dados das Filipinas que estudamos anteriormente. Você pode calcular o índice de Myers para esta distribuição Meios de execução e linhas A maneira mais simples de suavizar um scatterplot é usar uma média móvel. Também conhecido como um meio de corrida. A abordagem mais comum é usar uma janela de 2k 1 observações, k à esquerda e k à direita de cada observação. O valor de k é um trade off entre suavidade de bondade de ajuste. Deve-se ter especial cuidado nos extremos da gama. Stata pode calcular meios de execução via lowess com as opções mean e noweight. Um problema comum com meios de execução é viés. Uma solução é usar pesos que dão mais importância aos vizinhos mais próximos e menos aos mais distantes. Uma função de peso popular é Tukeys tri-cube, definida como w (d) (1-d 3) 3 para d lt 1 e 0 caso contrário, onde d é a distância ao ponto alvo expressa como uma fração da largura de banda. Stata pode fazer este cálculo via lowess com a opção mean se você omitir noweight. Uma solução ainda melhor é usar linhas em execução. Definimos novamente uma vizinhança para cada ponto, tipicamente os k vizinhos mais próximos de cada lado, encaixamos uma linha de regressão para os pontos da vizinhança e, em seguida, usamo-la para prever um valor mais suave para a observação do índice. Isso soa como um monte de trabalho, mas os cálculos podem ser feitos de forma eficiente usando regressão atualizando fórmulas. Stata pode calcular uma linha em execução através lowess se omitir significa, mas incluir noweight. Melhor ainda é usar linhas de corrida ponderadas. Dando mais peso às observações mais próximas, que é o que o lowess mais suave faz. Uma variante segue esta estimativa com algumas iterações para obter uma linha mais robusta. Esta é claramente a melhor técnica na família. Statas lowess usa uma linha de execução ponderada se você omitir média e noweight R implementa o lowess mais suave através das funções lowess () eo loess mais recente (), que usa uma interface de fórmula com um ou mais preditores e padrões diferentes um pouco diferentes. O parâmetro grau controla o grau do polinômio local o padrão é 2 para quadrática, alternativas são 1 para linear e 0 para corrida significa. Ambas as implementações podem usar um estimador robusto, com o número de iterações controladas por um parâmetro iter ou iterações. Escreva loess e lowess no console R para obter mais informações. Em ggplot () você pode sobrepor um lowess mais suave chamando geomsmooth () A figura abaixo mostra os dados colombianos e um lowess mais suave com um span ou largura de banda igual a 25 dos dados. Você pode querer experimentar diferentes badwidths para ver como os resultados variam. Digit Preference Revisited Alisar a distribuição de idade fornece uma maneira melhor de avaliar a preferência de dígito do que a mistura de Myers. Vamos calcular o último dígito de idade e tabulá-lo em toda a gama de dados usando as freqüências observadas e um lowess mais suave. As freqüências brutas mostram evidências de preferência por idades terminando em 0 e 5, o que é muito comum, e provavelmente 2 também. Nós agora usamos o suave como peso As freqüências suavizadas mostram que esperamos menos pessoas em dígitos mais altos, mesmo em uma distribuição suave, com mais terminando em 0 do que 9. Agora estamos prontos para calcular um índice de preferência de dígito, definido como metade da Soma de diferenças absolutas entre freqüências observadas e suaves: Vemos que precisaríamos reorganizar 5,5 das observações para eliminar a preferência de dígito. Você pode comparar este resultado com o índice de Myers. Copiar 2017 Germaacuten Rodriacuteguez, Princeton UniversityEarl F. Glynn Stowers Instituto de Pesquisas Médicas 18 março 2005 Esta TechNote mostra exemplos de suavização de loess (ajuste de regressão polinomial local) para vários valores quotspanquot. A documentação on-line R (loess) diz que o valor de span padrão é 0,75, mas não dá muita orientação, nem exemplos visuais, de como o valor de extensão afeta a suavização. Além de simplesmente suavizar uma curva, a função R loess pode ser usada para atribuir pontos de dados ausentes. Um exemplo de imputação de dados com loess é mostrado. Vamos tomar uma curva senoidal, adicionar algum quotnoisequot a ele e, em seguida, ver como o parâmetro loess quotspanquot afeta a aparência da curva suavizada. 1. Criar uma curva senoidal e adicionar algum ruído: período gt lt - 120 gt x lt - 1: 120 gt y lt-sin (2pix / period) runif (comprimento (x), - 1,1) 2. Traçar os pontos 3. Aplicar a suavização de loess usando o valor de span padrão de 0.75: gt y. loess lt - 4. Calcule valores suavizados de loess para todos os pontos ao longo da curva: gt y. predict lt - predict (y. loess, data. frame (xx)) 5 6. Utilize a função R quotoptimizequot para encontrar o pico da curva suavizada de loess e plotar esse ponto: gt pico lt - otimizar (função (x, modelo) prever (Modelo, data. frame (xx)), c (min (x), max (x)), máximoTRUE, modely. loess) gt pontos (peakmaximum, peakobjective, pchFILLED. CIRCLElt-19) 7. Repita os passos 1-6 Acima para vários valores de intervalo. Um script foi criado para automatizar isso. Execute este script inserindo a seguinte instrução R: 8. Compare quotnoisequot de uma distribuição uniforme de -1 para 1 (acima) para ruído gaussiano, com média 0 e desvio padrão 1.0 (abaixo): 9. Utiliza loess para imputar pontos de dados . Vamos começar por tomar uma curva seno com o ruído, como calculado acima, mas deixar de fora 15 dos 120 pontos de dados usando Rs quotamamostra função: período gt lt - 120 gt FullList lt - 1: 120 gt x lt - FullList gt quotrandomlyquot fazer 15 de Os pontos quotmissingquot gt MissingList lt - amostra (x, 15) gt xMissingList lt-NA gt Criar curva seno com ruído gt y lt - sin (2pix / period) runif (comprimento (x), - 1,1) 10. Como antes, use as funções loess e predict para obter valores suavizados nos pontos definidos: gt y. loess (gt y. loess), gt y. loess (gt y. loess) Lt - loess (yx, span0.75, data. frame (xx, yy)) gt y. predict lt - predict (y. loess, data. frame (xFullList)) gt Trace a curva suavizada de loess mostrando lacunas para dados perdidos gt (X, y. predict, coli) 11. Use as funções loess e predict para também imputar os valores nos pontos em falta: gt Mostrar pontos imputados para preencher lacunas gt y. Missing lt - predict (y. loess, data. 12Passe o ajuste suavizado de loess e os pontos imputados para vários valores de span: Valores de espaçamento tão pequenos como 0,10 não fornecem muito suavização e podem resultar em Uma curva quotjerkyquot. Valores de span tão grandes quanto 2,0 fornecem talvez demasiada suavização, pelo menos nos casos mostrados acima. Em geral, o valor padrão de 0.75 funcionou bastante bem em quotfindingquot a curva de seno. Updated 24 Junho 2005Movendo média com loess Em resposta a este post por Faryabi, Robert (NIH / NCI) F Se você digitar loess Ele puxa a documentação. Que tal essa função você não gosta Como você disse, ele precisa de duas variáveis, mas normalmente o segundo é apenas o seu índice de tempo. Tente isto: seq (1, n)) trama (1: n, x, typel) linhas (predese (loess (x ----- Mensagem Original ----- De: email escondido mailto: email escondido Em Nome De Faryabi, Robert (NIH / NCI) F Enviada: quinta-feira, 8 de março de 2017 18:43 Para: email escondido Assunto: R Mudar de média com loess Eu tenho uma pergunta muito simples. Descobrir algumas das tarefas fáceis no novo ambiente. Existe alguma suavização de regressão local ponderada em R Basicamente, eu quero ter média móvel ponderada. Todas as funções que eu conheço precisam de duas variáveis ​​para montagem.

No comments:

Post a Comment