No seu sistema em tempo real, os tempos de observação são homogêneos e os dados não estacionários? Se você quiser algo simples e rápido, sugiro usar os operadores não homogêneos do tipo EMA:
Operadores em séries temporais não homogêneas
Eles atualizam a EMA ( ) a cada nova observação de acordo com,valor
valor+ = α( newData - value ) ,α = 1 - exp( - Δ tτ)
com um parâmetro de suavização / sintonia. É uma maneira simples de estimar uma expectativa.τ
Também é possível criar uma estimativa mediana online simples através da atualização
sgmed += s gn ( newData - med )= ϵ( sg - med )
Na prática, você deseja pequeno (ou decadente com mais observações). Idealmente, deve depender de quão desatadas as atualizações estão se tornando; isto é, se realmente igual à mediana, então deve ser uniforme em . Você pode estender isso para uma estrutura de tipo de árvore binária balanceada em profundidade para obter quantis uniformemente espaçados.ϵϵmedsg{ - 1 , 1 }d2d+ 1- 1
A combinação dos itens acima deve fornecer uma distribuição online decente dos seus dados. A árvore é complicada de acertar, eu tenho implementações de ambos em C ++, se você estiver interessado. Eu uso muito na prática (dados financeiros de ticks em tempo real) e eles funcionaram bem.