Thursday 23 November 2017

Moving Average Lowess


LOESS es uno de los muchos métodos de modelado modernos que se basan en métodos clásicos, como la regresión lineal y no lineal de mínimos cuadrados. Los métodos de regresión modernos están diseñados para abordar situaciones en las que los procedimientos clásicos no funcionan bien o no pueden aplicarse eficazmente sin trabajo indebido. LOESS combina gran parte de la simplicidad de la regresión lineal de mínimos cuadrados con la flexibilidad de la regresión no lineal. Esto se hace mediante la instalación de modelos simples a subconjuntos localizados de los datos para construir una función que describe la parte determinista de la variación en los datos. punto por punto. De hecho, una de las principales atracciones de este método es que el analista de datos no está obligado a especificar una función global de cualquier forma para ajustar un modelo a los datos, sólo para ajustar segmentos de los datos. El trade-off para estas características es el aumento de la computación. Debido a que es tan computacionalmente intensivo, LOESS habría sido prácticamente imposible de usar en la época en que se estaba desarrollando la regresión por mínimos cuadrados. La mayoría de los otros métodos modernos para el modelado de procesos son similares a LOESS en este sentido. Estos métodos han sido concientemente diseñados para usar nuestra capacidad computacional actual para obtener la mayor ventaja posible para lograr objetivos que no se logran fácilmente mediante enfoques tradicionales. Definición de LOESS Modelo LOESS, originalmente propuesto por Cleveland (1979) y desarrollado posteriormente por Cleveland y Devlin (1988). Denota específicamente un método que es (algo) más descriptivamente conocido como regresión polinomial localmente ponderada. En cada punto del conjunto de datos un polinomio de bajo grado se ajusta a un subconjunto de los datos, con valores de las variables explicativas cerca del punto cuya respuesta está siendo estimada. El polinomio se ajusta utilizando mínimos cuadrados ponderados, dando más peso a puntos cercanos al punto cuya respuesta se está estimando y menos peso a puntos más alejados. El valor de la función de regresión para el punto se obtiene evaluando el polinomio local utilizando los valores de la variable explicativa para ese punto de datos. El ajuste LOESS se completa después de calcular los valores de la función de regresión para cada uno de los (n) puntos de datos. Muchos de los detalles de este método, tales como el grado del modelo polinomial y los pesos, son flexibles. El rango de opciones para cada parte del método y los valores predeterminados típicos se discuten brevemente a continuación. Subconjuntos localizados de datos Los subconjuntos de datos utilizados para cada ajuste de mínimos cuadrados ponderados en LOESS están determinados por un algoritmo de vecinos más cercano. Una entrada especificada por el usuario al procedimiento denominado ancho de banda o parámetro de suavizado determina cuánto de los datos se utiliza para ajustar cada polinomio local. El parámetro de suavizado, (q), es un número entre (d1) / n) y (1), con (d) deno - minando el grado del polinomio local. El valor de (q) es la proporción de datos utilizados en cada ajuste. El subconjunto de datos utilizado en cada ajuste de mínimos cuadrados ponderados se compone de los puntos (nq) (redondeado al siguiente número entero mayor) cuyos valores de las variables explicativas están más próximos al punto en el que se está estimando la respuesta. (Q) se denomina parámetro de suavizado porque controla la flexibilidad de la función de regresión LOESS. Los valores grandes de (q) producen las funciones más suaves que se mueven menos en respuesta a fluctuaciones en los datos. Cuanto menor sea (q), cuanto más cercana esté la función de regresión a los datos. Usar un valor demasiado pequeño del parámetro de suavizado no es deseable, sin embargo, ya que la función de regresión eventualmente comenzará a capturar el error aleatorio en los datos. Los valores útiles del parámetro de suavizado se encuentran típicamente en el intervalo de 0,25 a 0,5 para la mayoría de las aplicaciones LOESS. Grado de polinomios locales Los polinomios locales aptos para cada subconjunto de los datos son casi siempre de primer o segundo grado que es, ya sea localmente lineal (en el sentido de línea recta) o localmente cuadrático. El uso de un polinomio de cero grados convierte a LOESS en una media móvil ponderada. Un modelo local tan simple podría funcionar bien en algunas situaciones, pero no siempre puede aproximarse suficientemente a la función subyacente. Los polinomios de grado superior funcionarán en teoría, pero producirán modelos que no están realmente en el espíritu de LOESS. LOESS se basa en las ideas de que cualquier función puede ser bien aproximada en un pequeño vecindario por un polinomio de bajo orden y que los modelos simples pueden ajustarse fácilmente a los datos. Los polinomios de alto grado tenderían a superponer los datos en cada subconjunto y son numéricamente inestables, lo que dificulta los cálculos precisos. Como se mencionó anteriormente, la función de peso da más peso a los puntos de datos más cercanos al punto de estimación y el menor peso a los puntos de datos que están más alejados. El uso de los pesos se basa en la idea de que los puntos cercanos entre sí en el espacio de la variable explicativa tienen más probabilidades de estar relacionados entre sí de una manera simple que los puntos que están más separados. Siguiendo esta lógica, los puntos que probablemente seguirán el modelo local influirán mejor en las estimaciones de parámetros del modelo local más. Los puntos que son menos propensos a ajustarse realmente al modelo local tienen menor influencia en las estimaciones de los parámetros del modelo local. La función de peso tradicional utilizada para LOESS es la función de peso de tres cubos, w (x) izquierda (1 - x3) 3 mboxTag: lowess En este post voy a proporcionar el código R que implementa la combinación de repetición repetida cuantil con el LOESS más suave a Crear un tipo de 8239quantile LOESS8221 (por ejemplo: 8220Local Quantile Regression8221). Este método es útil cuando surge la necesidad de ajustar una línea suavizada y resistente (necesita ser verificada) para un cuantil (un ejemplo para tal caso se proporciona al final de este post). Si desea utilizar la función en su propio código, simplemente ejecute dentro de su consola R la siguiente línea: Antecedentes He llegado a cruzar esta idea en un artículo titulado 8220Análisis de datos de alto rendimiento en genética conductual 8221 por Anat Sakov, Ilan Golani, Dina Lipkind Y mi asesor Yoav Benjamini. Desde el resumen: En los últimos años, ha surgido una necesidad creciente en diferentes campos, para el desarrollo de sistemas computacionales para el análisis automatizado de grandes cantidades de datos (alto rendimiento). El manejo de la estructura de ruido no estándar y los valores atípicos, que podrían haber sido detectados y corregidos en el análisis manual, ahora deben ser incorporados al sistema con la ayuda de métodos robustos. 8230 utilizamos una mezcla no estándar de métodos robustos y resistentes: LOWESS y mediana de ejecución repetida. La motivación para esta técnica vino de 8220Path data8221 (de ratones), que es propenso a sufrir de ruido y outliers. Durante la progresión un sistema de seguimiento podría perder la pista del animal, la inserción (ocasionalmente muy grande) outliers en los datos. Durante la detención, y aún más durante los arrestos, los valores extremos son raros, pero el ruido de grabación es grande en relación con el tamaño real del movimiento. Las implicaciones estadísticas son que los dos tipos de comportamiento requieren diferentes grados de suavizado y resistencia. Una complicación adicional es que los dos intercambian muchas veces durante una sesión. Como resultado, la solución estadística adoptada no sólo necesita suavizar los datos, sino también reconocer, de manera adaptativa, cuando hay arrestos. Hasta donde sabemos, ninguna técnica de suavizado existente ha sido capaz de cumplir esta doble tarea. Desarrollamos las fuentes de ruido y proponemos una combinación de LOWESS (Cleveland, 1977) y la mediana de ejecución repetida (RRM Tukey, 1977) para hacer frente a estos desafíos. Si lo único que queríamos hacer era realizar una media móvil En los datos, usando R, podríamos simplemente usar la función rollmean del paquete zoo. Pero como quisiéramos también permitir el suavizado cuantil, nos volvimos a utilizar la función rollapply. R para realizar Quantile LOESS Aquí está la función R que implementa el cuillado de ejecución repetida LOESS (con implementación para usar esto con una implementación sencilla para usar el promedio en lugar de cuantil): suscripción de correo electrónicoSoothing: Lowess Trabajaremos con datos de la Colombia Encuesta de hogares de la WFS, realizada en 1975-76. Tabulé la distribución por edades de todos los miembros de la familia y la guardé en un archivo ascci, el cual ahora leemos y trazamos: Como puede ver, la distribución parece algo menos lisa que los datos de Filipinas que estudiamos anteriormente. ¿Puede calcular el índice de Myers para esta distribución? Medios y líneas de ejecución La forma más sencilla de suavizar un diagrama de dispersión es utilizar una media móvil. También conocido como una media de carrera. El enfoque más común es usar una ventana de 2k 1 observaciones, k a la izquierda y k a la derecha de cada observación. El valor de k es un trade off entre suavidad de bondad de ajuste. Se debe tener especial cuidado en los extremos de la gama. Stata puede calcular los medios de ejecución vía lowess con las opciones mean y noweight. Un problema común con los medios de ejecución es sesgo. Una solución es utilizar pesos que dan más importancia a los vecinos más cercanos y menos a los que están más lejos. Una función de peso popular es Tukeys tri-cube, definida como w (d) (1-d 3) 3 para d lt 1 y 0 en otro caso, donde d es la distancia al punto objetivo expresada como una fracción del ancho de banda. Stata puede hacer este cálculo a través de lowess con la opción mean si omite noweight. Una solución aún mejor es utilizar líneas en ejecución. Definimos de nuevo un vecindario para cada punto, típicamente los k vecinos más próximos de cada lado, encajamos una línea de regresión a los puntos del vecindario y luego lo usamos para predecir un valor más suave para la observación del índice. Esto suena como un montón de trabajo, pero los cálculos se pueden hacer de manera eficiente utilizando fórmulas de actualización de regresión. Stata puede calcular una línea en ejecución a través de lowess si omite medio pero incluya noweight. Mejor aún es usar líneas de ejecución ponderadas. Dando más peso a las observaciones más cercanas, que es lo que hace el lowess más suave. Una variante sigue esta estimación con unas pocas iteraciones para obtener una línea más robusta. Esta es claramente la mejor técnica en la familia. Statas lowess usa una línea de ejecución ponderada si omite medio y noweight R implementa el lowess más suave a través de las funciones lowess () y loess (), que utiliza una interfaz de fórmula con uno o más predictores y valores predeterminados algo diferentes. El grado de parámetro controla el grado del polinomio local, el valor por defecto es 2 para cuadrático, las alternativas son 1 para lineales y 0 para corrientes. Ambas implementaciones pueden utilizar un estimador robusto, con el número de iteraciones controladas por un parámetro iter o iteraciones. Escriba loess y lowess en la consola R para obtener más información. En ggplot () puede superponer un lowess más suave llamando a geomsmooth () La siguiente figura muestra los datos colombianos y un lowess más suave con un span o ancho de banda igual a 25 de los datos. Es posible que desee probar distintos anchos de banda para ver cómo varían los resultados. Preferencia de dígitos revisada Suavizar la distribución por edades proporciona una mejor manera de evaluar la preferencia de dígitos que la mezcla de Myers. Calculemos el último dígito de la edad y lo tabulamos sobre todo el rango de los datos usando las frecuencias observadas y un lowess más suave. Las frecuencias crudas muestran evidencia de preferencia por las edades que terminan en 0 y 5, que es muy común, y probablemente 2 también. Ahora usamos el suave como peso. Las frecuencias suavizadas muestran que esperamos menos personas en dígitos más altos, incluso en una distribución suave, con más terminando en 0 que 9. Ahora estamos listos para calcular un índice de preferencia de dígito, definido como la mitad de la Suma de las diferencias absolutas entre las frecuencias observadas y suaves: Vemos que tendríamos que reorganizar 5.5 de las observaciones para eliminar la preferencia de dígito. Puede que desee comparar este resultado con el índice de Myers. Copiar 2017 Germaacuten Rodriacuteguez, Universidad de PrincetonEarl F. Glynn Stowers Instituto de Investigación Médica 18 de marzo de 2005 Esta TechNote muestra ejemplos de loess (ajuste de polinomio local) suavizado para varios valores quotspanquot. La documentación R en línea (loess) dice que el valor de span predeterminado es 0.75, pero no da mucha orientación, ni ejemplos visuales, de cómo el valor de span afecta al suavizado. Además de simplemente suavizar una curva, la función R loess se puede utilizar para imputar puntos de datos faltantes. Se muestra un ejemplo de imputación de datos con loess. Permite tomar una curva sinusoidal, añadir algo de quotnoisequot a ella, y luego ver cómo el parámetro loess quotspanquot afecta el aspecto de la curva suavizada. 1. Crear una curva sinusoidal y añadir un poco de ruido: gt período lt - 120 gt x lt - 1: 120 gt y lt - sin (2pix / period) runif (longitud (x), - 1,1) 2. Trazar los puntos En esta ruidosa curva senoidal: gt parcela (x, y, mainquotSeñal Curve Uniform Noisequot) gt mtext (quotshowing loess smoothing) 3. Aplicar loess alisando con el valor de span por defecto de 0.75: gt y. loess lt - 4. Calcule los valores suavizados de loess para todos los puntos a lo largo de la curva: gt y. predict lt - predict (y. loess, data. frame (xx)) 5 6. Trace la curva loess smoothed junto con los puntos que ya estaban trazados: 6. Utilizaremos la función R quotoptimizequot para encontrar el pico de la curva suavizada loess y trazaremos ese punto: gt peak lt - optimize (función (x, modelo) predict (Modelo, data. frame (xx)), c (min (x), max (x)), máximoTRUE, modely. loess) gt puntos (peakmaximum, peakobjective, pchFILLED. CIRCLElt-19) 7. Repita los pasos 1-6 Para varios valores de span. Se creó un script para automatizar esto. Ejecute este script escribiendo la siguiente instrucción R: 8. Compare quotnoisequot de una distribución uniforme de -1 a 1 (arriba) al ruido gaussiano, con media 0 y desviación estándar 1.0 (abajo): 9. Utiliza loess para imputar puntos de datos . Comencemos tomando una curva sinusoidal con ruido, como se calcula anteriormente, pero omitiremos 15 de los 120 puntos de datos usando Rs quotsamplequot function: gt period lt - 120 gt FullList lt - 1: 120 gt x lt - FullList gt quotrandomlyquot hacer 15 de (X, 15) gt xMissingList lt-NA gt Crear una curva sinusoidal con ruido gt y lt - sin (2pix / period) runif (longitud (x), - 1,1) gt Puntos de trazado en 10. Como antes, utilice las funciones de loess y predicción para obtener valores suavizados en los puntos definidos: 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 la curva suavizada de loess mostrando lagunas para datos perdidos gt (X, y. predict, coli) 11. Utilice las funciones loess y predicción para imputar también los valores en los puntos que faltan: gt Mostrar los puntos imputados para rellenar los espacios gt y. Missing lt - predict (y. loess, data. 12Prepare el ajuste suavizado de loess y los puntos imputados para varios valores de span: Los valores de span tan pequeños como 0,10 no proporcionan mucho alisado y pueden dar lugar a Una curva quotjerkyquot. Valores de span tan grandes como 2,0 proporcionan quizás demasiado suavizado, al menos en los casos mostrados anteriormente. En general, el valor por defecto de 0.75 funcionó bastante bien en el quotfindingquot la curva sinusoidal. Actualizado 24 Junio ​​2005Moviendo media con loess En respuesta a este post de Faryabi, Robert (NIH / NCI) F Si escribe loess Se levanta la documentación. ¿Qué pasa con esa función no te gusta Como has dicho, necesita dos variables, pero normalmente el segundo es sólo el índice de tiempo. Pruebe esto: seq (1, n)) trama (1: n, x, tipel) líneas (predecir (loess (x ----- Mensaje Original ----- De: Faryabi, Robert (NIH / NCI) F Enviado: jueves, 08 de marzo de 2012 18:43 Para: email oculto Asunto: R Media móvil con loess Sólo tengo una pregunta muy sencilla: Cambiando recientemente de Matlab a R, Averiguar algunas de las tareas fáciles en el nuevo entorno.¿Existe alguna suavización de regresión local ponderada en R? Básicamente, quiero tener promedio móvil ponderado. Todas las funciones que conozco necesitan dos variables para el ajuste.

No comments:

Post a Comment