2012-10-04 37 views
16

Tôi đang làm việc trên chuỗi thời gian trong python. Các thư viện mà tôi thấy hữu ích và đầy hứa hẹn làGói phân tích chuỗi thời gian trong python

  • gấu trúc;
  • thống kê mô hình (cho ARIMA);
  • làm mịn theo hàm mũ đơn giản được cung cấp từ gấu trúc.

Ngoài ra để hiển thị: matplotlib

Có ai biết một thư viện cho mịn mũ?

+1

liên quan: [tính trung bình trượt hàm mũ trong python] (http://stackoverflow.com/questions/488670/comput-exponential-moving-average-in-python) – jfs

Trả lời

22

Pandas đã theo cấp số nhân trọng di chuyển thời điểm chức năng

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

Bằng cách này, không nên có bất kỳ còn sót lại chức năng trong gói scikits.timeseries đó không phải là cũng trong gấu trúc.

Sửa: Vì đây vẫn là một câu hỏi phổ biến, bây giờ có một công việc trong yêu cầu tiến độ kéo muốn thêm đầy đủ hơn tính năng làm mịn mũ để statsmodels here

+1

cảm ơn bạn rất nhiều vì đã cập nhật và cho công việc tốt. – foc

8

Bằng cách nào đó một số câu hỏi đã được hợp nhất hoặc bị xóa, vì vậy tôi sẽ đăng câu trả lời của tôi ở đây.

Làm mịn Exp bằng Python nguyên bản.

''' 
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) 
Các vấn đề liên quan