Thursday 26 October 2017

Baja Media Móvil


Suavizado: Lowess Trabajaremos con datos de la Encuesta de Hogares de la WFS de Colombia, 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 2016 Germaacuten Rodriacuteguez, Princeton UniversityLOESS es uno de los muchos métodos modernos de modelado 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 alcanzar 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 mboxQuantile LOESS 8211 Combinación de una ventana de cuantía móvil con LOESS (función R) En este post voy a proporcionar el código R que implementar8217s La combinación de repetición cuantitativo de ejecución con el LOESS más suave para crear un tipo de 8220quantile 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 de cuantil, nos volvimos a utilizar la función rollapply. R para la realización de cuantito 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): Más información sobre la matemática del algoritmo se puede encontrar en el original Artículo. Ejemplo: Predicción del escenario del caso de la tormenta 82208221 Niveles de ozono usando la temperatura El ejemplo siguiente utiliza el conjunto de datos 8220airquality8221 que nos proporciona 8220Mediciones diarias de la calidad del aire en Nueva York, mayo a septiembre de 1973.8221 Con varias variables, Dado que los altos niveles de ozono reducen la calidad del aire que respiramos, me gustaría dar una predicción de la predicción 8220worst caso8221 nivel de ozono (por ejemplo, 95 nivel de ozono) utilizando a la temperatura del mismo día. ¿Cómo intentaría hacer algo así? La primera solución sería utilizar la función 8220rq8221 del paquete de Regresión de cuantille. Pero si nos fijamos en los datos, veríamos que el ajuste de una línea recta no es adecuado para nuestros datos (ya que tenemos un cambio brusco de pendiente alrededor de la temperatura de 80 grados). Esta es una situación en la que Quantile LOESS (de 95) podría resultar útil. Aquí está el código para producir la gráfica anterior. Actualización: Cambié en el nombre de article8217s de LOWESS a LOESS Después de un correo electrónico considerado de Dirk Eddelbuettel me corregí de utilizar LOWESS a LOESS a través del artículo. Aquí hay una explicación de por qué lo hice y también por qué lo corregí 8211 Usted tiene un puesto titulado 8216quantile lowess8217 pero entonces usted (correctamente) usa loess. ¿Entiendes que hay dos funciones lowess () y loess () El primero es una especie de predecesor, pero nadie más que libros realmente viejos todavía habla de ello. Google para (quizás) 8216Brian Ripley lowess loess8217 mientras conducía ese punto a casa unas cuantas veces en r-help. Mi respuesta fue: Gracias Dirk, 8230 En cuanto a la baja loess, me di cuenta de que este es el caso cuando escribí el post, pero yo estaba en una situación difícil: Por un lado, LOESS es el enfoque más moderno (y lo que he utilizado En el guión). Pero por otro lado, LOWESS es lo que utilizan los autores del artículo original. Terminé decidiendo que lo llamaría como lo hice, pero después de leer lo que escribiste, me di cuenta que cometí un error. Revisé el artículo y corregí la baja a loess, al tiempo que añadía un párrafo para explicar mi razonamiento. Actualización: en relación con el método de ser robusto Después Nicholas8217s comentario fui a comprobar y se encontró con un hilo de R-ayuda de Martin Maechler explicando cómo actualizar mi código desde arriba para que el sistema será robusto. Martin escribió (Mis notas se agregan en): Uno gotcha al comparar lowess a loess is8211 en particular si usted estaba acostumbrado al hecho de que lowess () por defecto es resistente a outliers: lowess () por defecto tiene 8220iter 38243 lo que significa que utiliza 3 8220ubustificación8221 (también llamada 8220huberizing8221 para Huber (1960)) iteraciones. Loess () por otro lado tiene un argumento family8217 con valores posibles 8220gaussian8221 y 8220symmetric8221 (puede ser abreviado) donde el primero es el valor por defecto (desafortunadamente, en mi opinión). Es decir. Loess () por defecto no es resistente / robusto cuando lowess () es. 8230 Sin embargo recomendaría usar loess (8230. familia 8220sym8221) rutinariamente. Si encuentra este código útil, por favor hágamelo saber en los comentarios. Recibe notificación de nuevos mensajes de R (no hago spam, ni doy tu correo electrónico a otros)

No comments:

Post a Comment