Estou criando um aplicativo para Android que registra dados do acelerômetro durante o sono, para analisar as tendências do sono e, opcionalmente, acordar o usuário perto do tempo desejado durante o sono leve.
Já construí o componente que coleta e armazena dados, além do alarme. Eu ainda preciso abordar a fera de exibir e salvar dados do sono de uma maneira realmente significativa e clara, que de preferência também se presta à análise.
Algumas fotos dizem duas mil palavras: (só posso postar um link devido à baixa rep)
Aqui estão os dados não filtrados, a soma do movimento, coletados em intervalos de 30 segundos
E os mesmos dados, suavizados por minha própria manifestação de suavização da média móvel
editar) os dois gráficos refletem a calibração - há um filtro mínimo de 'ruído' e um filtro de corte máximo, além de um nível de disparo de alarme (a linha branca)
Infelizmente, nenhuma dessas soluções é ótima - a primeira é um pouco difícil de entender para o usuário médio e a segunda, que é mais fácil de entender, esconde muito do que realmente está acontecendo. Em particular, a média remove os detalhes dos picos de movimento - e acho que esses podem ser significativos.
Então, por que esses gráficos são tão importantes? Essas séries temporais são exibidas durante toda a noite como feedback para o usuário e serão armazenadas para revisão / análise posteriormente. A suavização reduzirá idealmente o custo da memória (RAM e armazenamento) e tornará a renderização mais rápida nesses telefones / dispositivos sem recursos.
Claramente, há uma maneira melhor de suavizar os dados - tenho algumas idéias vagas, como usar a regressão linear para descobrir mudanças 'nítidas' no movimento e modificar minha suavização da média móvel de acordo. Eu realmente preciso de mais algumas orientações e sugestões antes de mergulhar de cabeça em algo que possa ser resolvido da melhor maneira possível.
Obrigado!