Avaliando o desempenho da previsão de séries temporais

9

Eu tenho um modelo dinâmico ingênuo de Bayes treinado em algumas variáveis ​​temporais. A saída do modelo é a previsão de P(Event) @ t+1, estimada em cada um t.

O gráfico de P(Event)versus timeé como mostrado na figura abaixo. Nesta figura, a linha preta representa P(Event)como previsto pelo meu modelo; a linha vermelha horizontal representa a probabilidade anterior do evento acontecer; e as linhas verticais pontilhadas representam as (cinco) ocorrências de eventos na série temporal.

Idealmente, desejo ver o P(Event)pico previsto antes de observar qualquer evento e permanecer próximo de zero quando não houver perspectiva de um evento.

Gráfico P (Evento) versus Tempo

Quero poder relatar o desempenho do meu modelo (a linha preta) na previsão das ocorrências de eventos. Um candidato óbvio para comparar meu modelo é a probabilidade anterior de evento (a linha vermelha), que, se usada como preditor, preveria o mesmo valor de probabilidade para todos t.

Qual é o melhor método formal para alcançar essa comparação?

PS: Atualmente, estou usando a pontuação (intuitiva) conforme codificado abaixo, onde uma pontuação geral mais baixa indica melhor desempenho da previsão. Descobri que é realmente muito difícil superar o anterior com esta pontuação:

# Get prediction performance
model_score = 0; prior_score=0; 

for t in range(len(timeSeries)):

   if(timeSeries[t]== event):  # event has happened
      cur_model_score = 1- prob_prediction[t]; 
      cur_prior_score = 1 - prior
   else: # no event
      cur_model_score = prob_prediction[t] - 0;
      cur_prior_score = prior - 0;

   model_score = model_score + abs(cur_model_score);
   prior_score = prior_score + abs(cur_prior_score);
Zhubarb
fonte
Você acha que poderia impor uma função de perda significativa? Existe uma maneira de dizer quanto você ganha / perde ao adivinhar corretamente / incorretamente?
James
Pensei nisso, mas não quero inventar uma função de perda arbitrária que possa ser ajustada para obter desempenho baixo ou alto, como eu desejar.
Zhubarb

Respostas:

1

Você pode criar uma curva ROC. Para um determinado valor de p entre 0 e 1, você prevê que o evento ocorrerá se a probabilidade prevista for maior que p. Então você calcula o TPR e o FPR, o que fornece um único ponto na curva ROC. Ao variar p entre zero e um, você obtém toda a curva. Por exemplo, para p <0,005, o preditor prévio sempre dirá que o evento ocorrerá o tempo todo.

Para mais informações, consulte:

http://en.wikipedia.org/wiki/Receiver_operating_characteristic

James
fonte
Apenas para adicionar que a AUC está disponível como uma estatística resumida para essas curvas.
conjectures