2014-10-20 10 views
6

मैं अजगर

आर

पर मैं क्या एसटीएल समारोह अजगर के साथ क्या करने की कोशिश कर रहा हूँ के साथ लेस द्वारा समय श्रृंखला की मौसमी अपघटन आर आदेशों

fit <- stl(elecequip, s.window=5) 
plot(fit) 

हैं मैं अजगर में ऐसा कैसे करते हैं ? मैंने जांच की कि statmodels.tsa में कुछ समय श्रृंखला विश्लेषण कार्य हैं लेकिन मुझे विशेष रूप से दस्तावेज में "लोई द्वारा टाइम सीरीज़ का मौसमी अपघटन" मिल सकता है। इसी प्रकार Python.org पर टाइम्सरीज़ 0.5.0 नामक एक लाइब्रेरी है, लेकिन इसमें दस्तावेज नहीं है और यह होम साइट दिखती है। मुझे पता है कि एक रैपर का उपयोग कर rpy2 के साथ एक विकल्प है, लेकिन मुझे नहीं पता कि रैपर का उपयोग कैसे करें।

धन्यवाद।

उत्तर

10

मैं एक ऐसी ही समस्या हो रही किया गया है और सबसे अच्छा रास्ता आगे खोजने की कोशिश कर रहा हूँ।

Here is a github repo for an STL decomposition based on the Loess procedure। यह मूल किलर कोड पर आधारित है जो this paper के साथ उपलब्ध था। यह वास्तव में मूल फोरट्रान कोड के चारों ओर एक अजगर आवरण है, इसलिए आप इसकी संभावित काम अच्छी तरह से जानते हैं और छोटी नहीं है।

आप कुछ अधिक अजगर केंद्रित करना चाहते हैं और एक से थोड़ा सरल अपघटन दिनचर्या के साथ जाने के लिए तैयार हैं, तो StatsModels एक है:

एक Pandas DataFrame में अपना डेटा ले जाने का प्रयास करें और फिर StatsModelstsa.seasonal_decompose कहते हैं। देखें following example:

import statsmodels.api as sm 

dta = sm.datasets.co2.load_pandas().data 
# deal with missing values. see issue 
dta.co2.interpolate(inplace=True) 

res = sm.tsa.seasonal_decompose(dta.co2) 
resplot = res.plot() 

Three plots produced from above input

फिर आप से अपघटन के व्यक्तिगत घटकों को ठीक कर सकते हैं:

res.resid 
res.seasonal 
res.trend 

मुझे आशा है कि इस मदद करता है!

+2

का हवाला देते हुए StatsModels 0.6.0 रिलीज नोट: "हम आर के विघटित ही नस में एक अनुभवहीन मौसमी अपघटन उपकरण जोड़ा।" तो मान लें कि यह उत्पादन तैयार नहीं हो सकता है। –

+0

मुझे नहीं लगता कि विघटन मॉडल आधारित दृष्टिकोण या कम प्रक्रिया के रूप में शक्तिशाली है, लेकिन ऐसा लगता है कि उत्पादन तैयार है। बग की रिपोर्ट नहीं की गई है और ऐसा लगता है कि मैंने किए गए परीक्षणों पर काम किया है। आप और क्या देख रहे हैं जो आपको कहता है कि यह उत्पादन तैयार नहीं है? – AN6U5

+0

"बेवकूफ मौसमी अपघटन" बस, और, ठीक है, इसका मतलब है कि थोड़ा (भद्दा बेयस, बेवकूफ है, लेकिन अगर डेटा परिकल्पना फिट बैठता है तो अच्छा काम करता है)। कोड में टिप्पणियों को उद्धृत करते हुए "यह एक बेवकूफ अपघटन है। अधिक परिष्कृत तरीकों को प्राथमिकता दी जानी चाहिए।" तो अगर यह आपके लिए अच्छा काम करता है, तो बढ़िया है, लेकिन ध्यान रखें कि आप क्या उपयोग कर रहे हैं। –

0

एक अन्य पायथन विकल्प seasonal पैकेज (PyPI, github) है। यह StatsModels seasonal_decompose के समान है और आपके डेटा की आवधिकता का भी अनुमान लगाएगा।

0

तुम भी rpy2 का उपयोग कर

from rpy2.robjects import r 
def decompose(series, frequency, s_window, **kwargs): 
    df = pd.DataFrame() 
    df['date'] = series.index 
    s = [x for x in series.values] 
    length = len(series) 
    s = r.ts(s, frequency=frequency) 
    decomposed = [x for x in r.stl(s, s_window, **kwargs).rx2('time.series')] 
    df['observed'] = series.values 
    df['trend'] = decomposed[length:2*length] 
    df['seasonal'] = decomposed[0:length] 
    df['residual'] = decomposed[2*length:3*length] 
    return df 

ऊपर समारोह मानता है कि अपने श्रृंखला एक datetime सूचकांक है अजगर से आर कॉल कर सकते हैं। यह अलग-अलग घटकों के साथ डेटाफ्रेम देता है जिसे आप अपनी पसंदीदा ग्राफिंग लाइब्रेरी के साथ ग्राफ़ कर सकते हैं।

आप here एसएलएल के लिए पैरामीटर पास कर सकते हैं, लेकिन किसी भी अवधि को अंडरस्कोर में बदल सकते हैं, उदाहरण के लिए उपरोक्त फ़ंक्शन में स्थितित्मक तर्क s_window है, लेकिन उपरोक्त लिंक में यह s.window है। इसके अलावा, मुझे उपर्युक्त कोड में से कुछ this भंडार पर मिला।