2012-05-08 13 views
6

मैं असंगठित फ़ाइल पर प्रति घंटा वर्षा पर विश्लेषण कर रहा हूं।आर में समय श्रृंखला और एसटीएल: त्रुटि केवल univariate श्रृंखला की अनुमति है

Station_ID Guage_Type Lat Long  Date Time_Zone Time_Frame H0 H1 H2 H3 H4 H5  H6  H7  H8  H9  H10  H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 
1 4457700   HI 41.52 124.03 1948-07-01   8  LST 0 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
2 4457700   HI 41.52 124.03 1948-07-05   8  LST 0 1 1 1 1 1 2.0000000 2.0000000 2.0000000 4.0000000 5.0000000 5.0000000 4 7 1 1 0 0 10 13 5 1 1 3 
3 4457700   HI 41.52 124.03 1948-07-06   8  LST 1 1 1 0 1 1 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
4 4457700   HI 41.52 124.03 1948-07-27   8  LST 3 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
5 4457700   HI 41.52 124.03 1948-08-01   8  LST 0 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
6 4457700   HI 41.52 124.03 1948-08-17   8  LST 0 0 0 0 0 0 0.3888889 0.3888889 0.3888889 0.3888889 0.3888889 0.3888889 6 1 0 0 0 0 0 0 0 0 0 0 

कहाँ H23 के माध्यम से H0 प्रति दिन 24 घंटे का प्रतिनिधित्व करते हैं (पंक्ति)

का उपयोग करना: हालांकि, मैं पीछा के रूप में यह साफ है और एक dataframe (सीए 1 कहा जाता है) में संग्रहीत करना जो रूप ले लेता है कामयाब केवल सीए 1 (ऊपर dataframe), मैं 24 अंक के प्रत्येक दिन (पंक्ति) लेने के लिए और शेष दिनों यह खड़ी स्थानांतरित और श्रेणीबद्ध (पंक्तियाँ) एक चर करने के लिए है, जो मैं dat1 फोन:

> dat1[1:48,] 
    H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 4 5 5 4 7 1 1 0 0 10 13 5 1 1 3 

चर dat1 का उपयोग करना , मैं इसे समय श्रृंखला डेटा प्राप्त करने के लिए एक तर्क के रूप में इनपुट करता हूं:

> rainCA1 <- ts(dat1, start = c(1900+as.POSIXlt(CA1[1,5])$year, 1+as.POSIXlt(CA1[1,5])$mon), 
    frequency = 24) 

कुछ बातें ध्यान रखें:

>dim(CA1) 
    [1] 5636 31 
>length(dat1) 
    [1] 135264 

इस प्रकार 5636 * 24 (कुल डेटा बिंदुओं [24] प्रति पंक्ति) = 135,264 कुल अंक। लंबाई (rainCA1) उपरोक्त बिंदुओं से सहमत है। हालांकि, अगर मैं एक अंत ts समारोह में, इस तरह के

>rainCA1 <- ts(dat1, start = c(1900+as.POSIXlt(CA1[1,5])$year, 1+as.POSIXlt(CA1[1,5])$mon), 
    end = c(1900+as.POSIXlt(CA1[5636,5])$year, 1+as.POSIXlt(CA1[5636,5])$mon), 
    frequency = 24) 

के रूप में मैं, अंकों की 1134 कुल लंबाई मिल जहाँ मैं डेटा का एक बहुत याद आ रही है डाल दिया। मुझे लगता है कि यह उन तारीखों के कारण है जो निरंतर नहीं हैं और चूंकि मैं केवल शुरुआती बिंदु के लिए तर्क के रूप में महीने और वर्ष लागू करता हूं।

सतत, क्या मुझे लगता है कि सही रास्ता, अंत तर्क के बिना पहली ts गणना का उपयोग कर में, मैं इसे एसटीएल के इनपुट के रूप आपूर्ति:

>rainCA1_2 <-stl(rainCA1, "periodic") 

दुर्भाग्य से, मैं कोई त्रुटि मिलती है:

Error in stl(rainCA1, "periodic") : only univariate series are allowed 

जो मुझे समझ में नहीं आता है या इसके बारे में कैसे जाना है। हालांकि, अगर मैं टीएस फ़ंक्शन पर वापस आ जाता हूं और अंत तर्क प्रदान करता हूं, तो एसएलएल बिना किसी त्रुटि के ठीक काम करता है।

मैंने कई फ़ोरम में शोध किया है, लेकिन कोई भी (या मेरी समझ में) प्रति घंटा डेटा के डेटा विशेषताओं को प्राप्त करने के लिए एक अच्छा समाधान प्रदान करता है। अगर कोई मेरी मदद कर सकता है, तो मैं इसकी सराहना करता हूं। धन्यवाद!

उत्तर

7

यह त्रुटि आपके डेटा के आकार का परिणाम है। > dim(rainCA1) आज़माएं; मुझे लगता है कि यह > [1] 135264 1 जैसा कुछ देना है। rainCA1 <- ts(dat1 ...rainCA1 <- ts(dat1[[1]] ... द्वारा बदलें, और इसे काम करना चाहिए।

चाहे यह सही ढंग से करता है, मुझे आश्चर्य है ... ऐसा लगता है कि व्यवसाय का आपका पहला क्रम एक सतत प्रारूप का डेटा प्राप्त करना है। सुनिश्चित करें कि ts() सही इनपुट प्राप्त करता है। ts के सटीक विनिर्देश देखें।

ts() दिनांक-समय प्रारूपों की व्याख्या नहीं करता है। ts() को एक निश्चित अंतराल के साथ लगातार डेटा अंक की आवश्यकता है। यह एक प्रमुख काउंटर और एक मामूली काउंटर का उपयोग करता है (जिसमें frequency एक प्रमुख काउंटर में फिट है)। उदाहरण के लिए, यदि आपका डेटा प्रति घंटा है और आप दैनिक स्तर पर मौसमी की उम्मीद करते हैं, तो frequency 24 के बराबर है।start और end, इसलिए मुख्य रूप से कॉस्मेटिक हैं: start केवल प्रमुख काउंटर के लिए टी (0) इंगित करता है, जबकि end टी (अंत) को दर्शाता है।

2

मैं एक और सवाल में त्रुटियों के इन प्रकार से बचने के लिए एक बहुत ही आसान उदाहरण के साथ जिस तरह से लिखने समझाने की कोशिश की, यहां से जुड़ा हुआ:

stl() decomposition won't accept univariate ts object?

0

एक समाधान मैंने पाया time_series_var <- ts(data[, c("var_of_interest")]) है और फिर time_series_var <- ts(as.vector(time_series_var)) और उसके बाद univariate से संबंधित त्रुटि गायब हो जाती है क्योंकि आयाम अब सही हैं।

संबंधित मुद्दे