2012-10-04 72 views
16

Estoy trabajando en series de tiempo en python. Las bibliotecas que encontré útiles y prometedoras sonPaquete para análisis de series de tiempo en python

  • pandas;
  • statsmodel (para ARIMA);
  • suavizado exponencial simple se proporciona desde pandas.

también para la visualización: matplotlib

¿Alguien sabe de una biblioteca de suavizado exponencial?

+1

relacionados: [calcular la media móvil exponencial de pitón] (http://stackoverflow.com/questions/488670/calculate-exponential-moving-average-in-python) – jfs

Respuesta

22

pandas ha ponderado exponencialmente momento moviendo funciones

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

Por cierto, no debería haber ningún restos de funcionalidad en el paquete scikits.timeseries que no sea también en los pandas.

Editar: Puesto que esto sigue siendo una pregunta popular, ahora hay una obra en la solicitud de progreso tirón para agregar contó con más detalle suavizado exponencial a statsmodels here

+1

muchas gracias por la actualización y por el buen trabajo. – foc

8

De alguna manera algunas preguntas se combinaron o eliminaron, así que publicaré mi respuesta aquí.

Exp alisado en Python de forma nativa.

''' 
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) 
Cuestiones relacionadas