Estoy creando una aplicación de Android que registra los datos del acelerómetro durante el sueño, para analizar las tendencias del sueño y, opcionalmente, despertar al usuario cerca del momento deseado durante el sueño ligero.
Ya he creado el componente que recopila y almacena datos, así como la alarma. Todavía necesito abordar la bestia de mostrar y guardar datos de sueño de una manera realmente significativa y clara, una que preferiblemente también se presta al análisis.
Un par de imágenes dicen dos mil palabras: (solo puedo publicar un enlace debido a la baja representación)
Aquí están los datos sin filtrar, la suma de movimiento, recopilados a intervalos de 30 segundos
Y los mismos datos, suavizados por mi propia manifestación de suavizado de promedio móvil
editar) ambos gráficos reflejan la calibración: hay un filtro de "ruido" mínimo y un filtro de corte máximo, así como un nivel de activación de alarma (la línea blanca)
Desafortunadamente, ninguna de estas son soluciones óptimas: la primera es un poco difícil de entender para el usuario promedio y la segunda, que es más fácil de entender, oculta mucho de lo que realmente está sucediendo. En particular, el promedio elimina el detalle de los picos en el movimiento, y creo que pueden ser significativos.
Entonces, ¿por qué son tan importantes estos cuadros? Estas series temporales se muestran durante toda la noche como comentarios para el usuario, y se almacenarán para su revisión / análisis más adelante. El suavizado idealmente reducirá el costo de memoria (tanto RAM como almacenamiento), y hará que el renderizado sea más rápido en estos teléfonos / dispositivos que carecen de recursos.
Claramente, hay una mejor manera de suavizar los datos: tengo algunas ideas vagas, como usar la regresión lineal para descubrir cambios "bruscos" en el movimiento y modificar mi suavizado de promedio móvil de acuerdo con esto. Realmente necesito más orientación e información antes de sumergirme de lleno en algo que podría resolverse de manera más óptima.
¡Gracias!