2010-01-14 19 views
7

Tôi đang tìm cách điều chỉnh theo mùa hàng tháng dữ liệu, sử dụng Python. Như bạn có thể thấy từ loạt bài này: www.emconfidential.com, có một thành phần theo mùa cao cho dữ liệu. Tôi muốn điều chỉnh cho điều này để tôi có thể tốt hơn guage nếu xu hướng loạt đang tăng hoặc giảm. Bất kỳ ai biết làm thế nào để làm điều này dễ dàng bằng cách sử dụng thư viện scipy hoặc Python khác?Điều chỉnh theo mùa trong Python và Scipy

Trả lời

3

Không có thư viện python huyền diệu nào sẽ thực hiện các điều chỉnh theo mùa cho bạn. Các ứng dụng thực hiện loại điều này có xu hướng là rather large.

Bạn cần phải tính toán số yourself và sau đó sử dụng scipy để tính phần còn lại cho bạn.

+0

Cảm ơn tôi nghĩ rằng bạn đúng rằng tôi sẽ tự mình lập trình. PDF của bạn là một nguồn tốt. Tuy nhiên không hoàn toàn đúng là không có thư viện python nào thực hiện việc này: http://hydroclimpy.sourceforge.net/generated/scikits.hydroclimpy.core.ts_addons.deseasonalize.html#scikits.hydroclimpy.core.ts_addons.deseasonalize Sự cố ở trên không phải là thuật toán tôi muốn. Tôi đang tìm kiếm một thực hiện X12 Arima. –

+2

Thật không may, liên kết pdf dường như bị hỏng hoặc tệp đã bị xóa. Làm thế nào để có được một bản sao của nó? – FaCoffee

0

Không chắc chắn về khía cạnh lập trình của điều này nhưng tôi nghiêm túc xem xét việc di chuyển trung bình để giải quyết vấn đề này.

+2

đó làm việc cho một di chuyển trung bình khoảng thời gian 12, vấn đề duy nhất là những gì nếu tôi muốn ngoại suy từ 3 hoặc 6 tháng cuối của dữ liệu, để bắt đầu có ý tưởng về xu hướng phát triển? Sau đó, tôi cần điều chỉnh theo mùa phù hợp. –

3

Thống kê mô hình có thể thực hiện việc này. Họ có một phân hủy theo mùa cơ bản và cũng là một wrapper để điều chỉnh dân số X13. Bạn cũng có thể sử dụng rpy2 để truy cập một số thư viện SA tuyệt vời của R. Dưới đây là statsmodels decomp mùa:

import pandas as pd 
import statsmodels.api as sm 
import matplotlib.pyplot as plt 
pd.options.display.mpl_style = 'default' 
%matplotlib inline 

dta = sm.datasets.co2.load_pandas().data.resample("M").fillna(method="ffill") 

res = sm.tsa.seasonal_decompose(dta) 

fig = res.plot() 
fig.set_size_inches(10, 5) 
plt.tight_layout() 

http://statsmodels.sourceforge.net/0.6.0/release/version0.6.html

1

Hiện nay, một gói phần mềm đó có vẻ là chính xác những gì bạn đang tìm kiếm! Kiểm tra gói seasonal, đây là link. Cá nhân tôi thấy nó rất hữu ích, tự hỏi những gì người khác nghĩ.

1

Tôi sẽ đề xuất Prophet do nhóm khoa học dữ liệu tại Facebook phát triển. Nó có Python + R API và được sử dụng cho dự đoán chuỗi thời gian mặc dù bạn có thể sử dụng nó chỉ để phân tích chuỗi của bạn thành các thành phần của nó (xu hướng so với mùa vụ). Bạn có thể dễ dàng điều chỉnh và hình dung quá trình phân hủy:

from fbprophet import Prophet 
import numpy as np 
import pandas as pd 

# Create series 
np.random.seed(0) 
x = np.arange(0, 10, .285) 
y_periodic = np.sin(x*np.pi) 
y_random = np.random.normal(size=len(x)) 
y_trend = x/10. 
df = pd.DataFrame({'ds': pd.date_range('01-01-2017', periods=len(x)), 
        'y': y_periodic}) 
df.head() # has to be a DataFrame with columns "ds" and "y" 
df.set_index('ds').plot(style='-*') 

Series with noise

# Estimate the model 
m = Prophet() 
m.fit(df); 
forecast = m.predict(df) 
m.plot_components(forecast); 

Trend and seasonality decomposition

Các vấn đề liên quan