2012-10-04 17 views
16

Sto lavorando su serie temporali in python. Le librerie che ho trovato utili e promettenti sonoPacchetto per analisi serie temporali in python

  • panda;
  • statsmodel (per ARIMA);
  • il livellamento esponenziale semplice viene fornito dai panda.

anche per la visualizzazione: matplotlib

Qualcuno sa una libreria per livellamento esponenziale?

+1

correlati: [calcolare media mobile esponenziale in python] (http://stackoverflow.com/questions/488670/calculate-esponential-moving-average-in-python) – jfs

risposta

22

Pandas ha ponderata esponenzialmente momento movimento Funzioni di

http://pandas.pydata.org/pandas-docs/dev/computation.html?highlight=exponential#exponentially-weighted-moment-functions

proposito, non ci dovrebbe essere alcun residuo funzionalità nel pacchetto scikits.timeseries che non sia anche in panda.

Edit: Dal momento che questa è ancora una domanda popolare, v'è ora un work in richiesta di progresso di pull per aggiungere più completamente descritto livellamento esponenziale per statsmodels here

+1

grazie mille per l'aggiornamento e per il buon lavoro. – foc

8

In qualche modo alcune domande sono state unite o eliminate, quindi pubblicherò la mia risposta qui.

Exp smoothing in Python in modo nativo.

''' 
simple exponential smoothing 
go back to last N values 
y_t = a * y_t + a * (1-a)^1 * y_t-1 + a * (1-a)^2 * y_t-2 + ... + a*(1-a)^n * y_t-n 
''' 
from random import random,randint 

def gen_weights(a,N): 
    ws = list() 
    for i in range(N): 
     w = a * ((1-a)**i) 
     ws.append(w) 
    return ws 

def weighted(data,ws): 
    wt = list() 
    for i,x in enumerate(data): 
     wt.append(x*ws[i]) 
    return wt 

N = 10 
a = 0.5 
ws = gen_weights(a,N) 
data = [randint(0,100) for r in xrange(N)] 
weighted_data = weighted(data,ws) 
print 'data: ',data 
print 'weights: ',ws 
print 'weighted data: ',weighted_data 
print 'weighted avg: ',sum(weighted_data) 
Problemi correlati