Recentemente me deparei com Processos Gaussianos em Gelman et al. (2013), e estou tentando aprender mais sobre seu potencial aplicativo para uso na imputação de dados de séries temporais. Os dados de interesse são uma única série temporal variável da freqüência cardíaca de um indivíduo coletada usando um fotopletismograma (PPG; um sensor óptico que se conecta ao final do dedo de uma pessoa e mede alterações no volume sanguíneo).
O problema é que temos certas seções de dados que são confusas. As estratégias de edição existentes foram desenvolvidas para lidar com esses artefatos, mas foram otimizadas em grande parte com base nos dados coletados dos sensores de eletrocardiograma. A forma de onda lenta do PPG torna sua aplicação aos nossos dados obtidos um pouco desajeitada às vezes.
Resumidamente, aqui está um exemplo de uma seção bagunçada isolada cercada por um bom sinal do R Shiny App que eu construí para melhorar a edição manual de nossos dados:
A linha cinza clara representa o sinal original (redução da amostra de 2kH a 100Hz). A linha preta sólida com os pontos vermelhos é uma plotagem dos intervalos entre os batimentos (o tempo em segundos entre os sucessivos batimentos cardíacos) plotados ao longo do tempo. Os intervalos entre batimentos serão a variável principal em qualquer análise desses dados.
Por exemplo, usando os intervalos entre os batimentos de um indivíduo, podemos avaliar a variabilidade da frequência cardíaca. Infelizmente, a maioria das estratégias de edição tende a reduzir a variabilidade. Além disso, existem certas tarefas quando é mais provável que esses artefatos estejam presentes (devido ao movimento do participante), o que significa que eu não poderia simplesmente marcar essas seções bagunçadas para remoção e tratá-las como ausentes aleatoriamente.
A vantagem é que sabemos muito sobre as propriedades da freqüência cardíaca. Por exemplo, os adultos geralmente variam entre 60 e 100 BPM em repouso. Além disso, sabemos que a frequência cardíaca varia em função do ciclo respiratório, que por si só possui uma faixa conhecida de freqüências prováveis em repouso. Finalmente, sabemos que existe um ciclo de baixa frequência que influencia a variabilidade da frequência cardíaca (pensado para ser influenciado por uma combinação de influências simpáticas e parassimpáticas na freqüência cardíaca).
A seção relativamente pequena de "dados inválidos" mostrada acima não é realmente minha principal preocupação. Eu desenvolvi algumas abordagens sazonais razoavelmente precisas de interpolação que parecem funcionar bem nesses tipos de casos isolados.
Meus problemas surgem mais ao lidar com seções de dados que intercalam regularmente um sinal ruim com o bom:
Como eu entendo de Gelman et al. (2013), parece possível especificar várias funções de covariância diferentes para processos gaussianos. Essas funções de covariância podem ser informadas pelos dados observados e distribuições anteriores razoavelmente bem conhecidas para medidas do débito cardíaco e respiratório de adultos (ou crianças).
Por exemplo, digamos que eu tenha alguma freqüência cardíaca observada ( ), eu poderia especificar um processo gaussiano governado por essa freqüência cardíaca média da seguinte maneira (e informe-me se eu estiver na matemática aqui, pois esta é minha primeira vez tentando aplicar esses modelos):
Onde
onde é minha taxa de amostragem é meu índice de tempo.
Com base no exemplo Gelman et al. (2013) fornecem em seu texto, parece possível modificar essa função de covariância para permitir variações em determinados períodos. Para mim, gostaria de permitir variações nas estimativas de dentro do ciclo respiratório e dentro do ciclo de variabilidade da frequência cardíaca de baixa frequência que mencionei acima.
Para atingir meu primeiro objetivo, como eu o entendo, isso significaria especificar um processo gaussiano e uma função de covariância para a taxa de respiração ( ) e um processo gaussiano que incorpore características de ambos os processos na função de covariância:
Onde
e...
Onde
Se eu parasse nesse ponto, meu modelo seria algo como:
EDITAS / ATUALIZAÇÕES :
Primeiro, uma especificação mais correta dos meus três processos gaussianos é:
Começando com o kernel de covariância exponencial ao quadrado:
A seguir, uma função de covariância que incorpora um padrão quase periódico com base na freqüência cardíaca do indivíduo.
E, finalmente, uma função de covariância que modela a variação da frequência cardíaca em função do ciclo respiratório:
PERGUNTAS ANTIGAS (com respostas atualizadas em itálico ):
1) Saber pouco sobre os processos guassianos parece uma aplicação defensável? Eles parecem altamente flexíveis e parecem ter um número de propriedades desejáveis que poderiam resolver meus problemas de manter a maior variabilidade verdadeira possível em meus dados, mas só recentemente os encontrei e quero ter certeza de que não vou me decepcionar. em descer esta toca de coelho.
Minha resposta até agora a esta pergunta é que não, isso não tem sido uma toca de coelho, ou pelo menos não improdutiva. Eu cheguei mais perto com esses modelos do que qualquer outro para recuperar valores "verdadeiros" em um sinal confuso. Eu gostaria de poder descobrir uma maneira de reduzir o tempo de execução, no entanto, como esses modelos são computacionalmente caros para estimar. Embora tenha feito progresso aqui (observação usando Stan e rstan
), ainda tenho um caminho a percorrer.
2) Estou entendendo e representando corretamente os recursos básicos da covariância e, mais importante, minha tentativa de permitir variação em como uma função de correta (ou seja, função )?
Eu acredito que os núcleos especificados acima são consistentes com meus principais objetivos de modelagem. Dito isto, pode haver maneiras de reduzir a complexidade que certamente está levando a meus tempos de execução excessivamente longos. Essa continua sendo uma área que eu estou buscando ativamente enquanto tento otimizar meus modelos agora que tenho o básico.
3) Mais tecnicamente falando, como se identifica valores para ? E o que é precisamente que representa em cada função de covariância? Também parece ser algo para o qual terei que especificar uma distribuição anterior, mas não entendo completamente o que ela representa neste caso. Presumivelmente, uma variação de algum tipo ...
No momento, e quase certamente um fator no meu tempo de convergência, estou estimando esses valores a partir dos dados. Se eu pudesse fixar esses valores ou restringir severamente suas distribuições anteriores, a fim de (defensivamente) reduzir o espaço de parâmetros coberto pelos modelos, acho que isso ajudaria muito a melhorar o tempo de execução.
4) Encontrei uma fonte adicional que estou começando a pesquisar sobre processos gaussianos (Rasmussen & Williams, 2006). Existem outros recursos recomendados por aí que eu deva procurar para obter uma melhor compreensão desses modelos?
Encontrei várias fontes adicionais úteis na minha busca contínua de uma estratégia de modelagem final. Ver abaixo.
Métodos rápidos para treinar processos gaussianos em grandes conjuntos de dados - Moore et al., 2016
Modelos de processos gaussianos rápidos em stan - Nate Lemoine
Processos Gaussianos ainda mais rápidos em Stan - Nate Lemoine
Processos gaussianos robustos em stan - Michael Betancourt
Processos hierárquicos gaussianos em stan - Trangucci, 2016
NOVAS PERGUNTAS
Existe uma maneira defensável de restringir os parâmetros da escala de comprimento no modelo (os 's) com base nas frequências com as quais estou trabalhando (1,5 Hz, 0,25 Hz e o eixo x em segundos, reduzido em 10 Hz).
Em que fatores devo me concentrar para acelerar o tempo de modelagem? Eu sei que parte disso é otimizar meu código stan, mas há algo mais que eu possa estar fazendo ou alterando sobre a parametrização do meu modelo?
RESULTADOS ATÉ A DATA Aqui está o melhor resultado até o momento (em um conjunto de dados com uma amostra bastante reduzida). A linha vermelha representa o sinal "verdadeiro". O azul é o sinal estimado do modelo para o mesmo período:
Nota : Eu ficaria bastante satisfeito com esse resultado se pudesse acelerar sua estimativa e suavizá-la um pouco.
Os dados foram analisados por meio de questionários, entrevistas e entrevistas. Análise de Dados Bayesiana (3ª ed.) . Imprensa da CRC: Nova York.
Rasmussen, CE, e Williams, CKI (2006). Processos gaussianos para aprendizado de máquina . Imprensa do MIT: Boston, MA.
rstan
.