डेटा बिंदुओं के औसत से दो समय-श्रृंखला का संयोजन


10

मैं मीन स्क्वेरेड प्रीडिक्शन एरर को कम करके एक टाइम-सीरीज़ में सेट किए गए टाइम-सीरीज़ डेटा के पूर्वानुमानित और बैककास्टेड (अर्थात पिछले मूल्यों की भविष्यवाणी) को संयोजित करना चाहूंगा।

कहो कि मेरे पास 2001-2010 से वर्ष 2007 के अंतराल के साथ समय श्रृंखला है। मैं 2001-2007 डेटा (लाल रेखा - इसे ) और 2008-2009 डेटा (हल्का नीला) का उपयोग करके बैककास्ट का उपयोग करके 2007 का पूर्वानुमान लगाने में सक्षम रहा हूं । लाइन - इसे कहते हैं )।Y YfYb

मैं प्रत्येक महीने के लिए और के डेटा बिंदुओं को एक बाधित डेटा बिंदु Y_i में संयोजित करना चाहूंगा। आदर्श रूप से मैं वेट इस तरह प्राप्त करना चाहूंगा कि यह Y_i के मीन स्क्वेर्ड प्रेडिक्शन एरर (MSPE) को कम से कम । यदि यह संभव नहीं है, तो मैं दो समय-श्रृंखला के डेटा बिंदुओं के बीच औसत कैसे पाऊंगा?Y W य Y YfYbwYi

Yi=wYf+(1w)Yb

एक त्वरित उदाहरण के रूप में:

tt_f <- ts(1:12, start = 2007, freq = 12)
tt_b <- ts(10:21, start=2007, freq=12)

tt_f
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007   1   2   3   4   5   6   7   8   9  10  11  12
tt_b
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2007  10  11  12  13  14  15  16  17  18  19  20  21

मैं प्राप्त करना चाहूंगा (केवल औसत दिखा रहा हूं ... आदर्श रूप से न्यूनतम MSPE)

tt_i
     Jan Feb Mar Apr May Jun  Jul  Aug  Sep  Oct  Nov  Dec
2007 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5

यहां छवि विवरण दर्ज करें


पूर्वानुमान मॉडल (अरिमा, ईटीएस, कुछ अन्य) क्या है? (+1) दृष्टिकोण के सुझाव के लिए, मैंने एक बार इस तरह के बारे में सोचा था, लेकिन प्रक्षेप के बाद उम्मीद-अधिकतमकरण के भीतर रहा। सिद्धांत रूप में सीखने की अवधि मायने रखती है, बड़ी जानकारी (चित्र में लाल पूर्वानुमान) के आधार पर मॉडल के लिए उच्च वजन देने के लिए। वज़न बनाने के लिए कुछ सटीकता मापदण्ड भी संभावित रूप से उपयोगी हो सकते हैं, ताकि समय श्रृंखला की लंबाई के अनुसार नियतात्मक रूप से जुड़ा न हो।
१२:०२ पर पापेल सेलोव ov

पूर्वानुमान मॉडल को छोड़ने के बारे में क्षमा करें। ऊपर वाला केवल predictपूर्वानुमान पैकेज के कार्य का उपयोग कर रहा है । हालांकि, मुझे लगता है कि मैं HoltWinters पूर्वानुमान मॉडल का उपयोग करने जा रहा हूं भविष्यवाणी करने और बैककास्ट करने के लिए। मेरे पास थोड़ा <50 काउंट के साथ समय श्रृंखला है, और पॉइसन प्रतिगमन पूर्वानुमान की कोशिश की - लेकिन किसी कारण से बहुत कमजोर भविष्यवाणियों के लिए।
OSlOlSO

मायने रखता है कि आपके द्वारा दिखाए जाने वाले स्थान पर डेटा का ठीक-ठीक विराम लगता है, पूर्वानुमान और बैक-कास्ट भी एक ही बात का वर्णन करते हैं। Poisson में आपने समय की प्रवृत्ति पर का प्रतिगमन बनाया ? tlog(counts)t
पैपर सेलोव

क्या आपके पास NAमूल्यों के बिना सिर्फ मायने रखता है या कुछ अतिरिक्त संबंधित समय श्रृंखला है? ऐसा लगता है कि लर्निंग पीरियड बनाना MSPE को भ्रामक हो सकता है क्योंकि सब-पीरियड्स 'लीनियर टेंडेंसीज़ द्वारा अच्छी तरह से बताए गए हैं, लेकिन मिस्ड पीरियड में कहीं न कहीं एक गिरावट आती है और यह वास्तव में कोई भी बिंदु हो सकता है। यह भी ध्यान दें कि चूंकि पूर्वानुमान प्रवृत्ति में टकरा रहे हैं, इसलिए उनका औसत एक प्रतीत होने के बजाय दो संरचनात्मक विराम पेश करेगा।
Cel में

केवल अब वापस मिलने के लिए क्षमा करें @Dmitij यह 'ब्रेक ’क्या आप बात कर रहे हैं? मैंने GLM रिग्रेशन के लिए लॉग (काउंट्स) किया था। और गिनती डेटा का एक सबसेट है जिसकी गिनती <6 से कम है जो मुझे इसका उपयोग करने के लिए मजबूर करेगा। मेरे पास केवल गिनती है। यदि आप इस प्रश्न को देखते हैं तो आपको मेरे पास मौजूद डेटा का अंदाजा हो जाएगा। उपरोक्त गणना केवल '15up' एजग्रुप के लिए है। अगर यह समझ में आता है?
OSlOlSO

जवाबों:


0

मान लें कि आपके पास पूर्वानुमान के लिए चुकता पूर्वानुमान त्रुटियां हैं और मैं व्यक्तिगत रूप से इसकी सिफारिश करूंगा: आइए w एक लंबाई 12 का वेक्टर हो, उस महीने को m में रहने दें जिसमें आप रुचि रखते हैं।

w=rep(NA,12);
for(w in 1:12){
w[m]=SPE_Backcast[m]/(SPE_Backcast[m]+SPE_Forecast[m]);
}

अब w पूर्वानुमान के लिए वजन है और 1-w बैककास्ट के लिए भार है।


यह केवल सबसे कम मूल्य को बहुत अधिक वजन करने के लिए प्रतीत होता है (इस बिंदु पर कि ऋणात्मक संख्याएं वजन> 1 हो सकती हैं)। क्या बात है? इसके अलावा, लाइन दोs/w/m/
naught101

आपको नकारात्मक चुकता पूर्वानुमान संबंधी त्रुटियां कैसे होंगी?
Owe Jessen

3

आपका उद्देश्य समय श्रृंखला का एक निश्चित अंतराल (FI) चौरसाई करना है। समय में अवलोकन के समतल मूल्य एक सशर्त उम्मीद के रूप में परिभाषित किया गया है वाई टी : = ( वाई टी | Y 1 : आर ,t जहां संकेतन Y u : v :=[ Y u ,

Y^t:=E(Yt|Y1:r,Ys:n)
-समय पर टिप्पणियों के वेक्टर के लिए है यू -समय पर वी । ऊपर, अंतराल को r + 1 से s - 1 तक अंतराल माना जाता है, और n पूरी श्रृंखला की लंबाई है। समय टी अंतराल में है और उम्मीद लिखा जा सकता है Y टी | 1 : r , s : n इसकी सशर्त प्रकृति को याद करने के लिए।Yu:v:=[Yu,Yu+1,,Yv]uvr+1s1ntY^t|1:r,s:n

Y^tt

αt टीYtt

दिलचस्प बात यह है कि, एफआई स्मूथिंग को दो फिल्टर के संयोजन के रूप में लिखा जा सकता है: एक आगे और एक पिछड़ा, जिस तरह की आप की अपेक्षा के एक सूत्र के लिए अग्रणी है, लेकिन छिपे हुए राज्य के अनुमान के लिए (पूर्वानुमान और बैककास्ट,) लेकिन अवलोकन के लिए नहीं । इसे राउच-तुंग-स्ट्राइबेल फ़िल्टरिंग के रूप में जाना जाता है ।Y tαtYt

कम से कम गुणात्मक संस्करणों में, होल्ट-विंटर्स जैसी 'तदर्थ' पूर्वानुमान प्रक्रियाएं स्टोकेस्टिक मॉडल पर भरोसा करती हैं, जिसमें कोई सरल एफआई एल्गोरिदम नहीं होता है क्योंकि उन्हें एसएस के रूप में नहीं रखा जा सकता है। चौरसाई सूत्र शायद एसएस मॉडल का उपयोग करके अनुमानित किया जा सकता है, लेकिन लॉग ट्रांसफॉर्मेशन के साथ स्ट्रक्चरल टाइम सीरीज मॉडल का उपयोग करना बहुत सरल है । 'KalmanSmooth', 'tsSmooth' और आर के 'StructTS' कार्यों आँकड़े पैकेज काम कर सकते हैं। आपको हार्वे या डर्बिन और कोपमैन की पुस्तकों पर एक नजर डालनी चाहिए, जो आर हेल्प पेज में दी गई हैं। चौरसाई एल्गोरिथ्म अनुमानित लिए एक सशर्त विचरण प्रदान कर सकता हैYtऔर चौरसाई अंतराल के निर्माण के लिए इस्तेमाल किया जा सकता है, जो आमतौर पर अंतराल के बीच में बड़ा होता है। हालांकि ध्यान दें कि Stuctural मॉडल का अनुमान मुश्किल हो सकता है।

AP <- log10(AirPassengers) 
## Fit a Basic Structural Model
fit <- StructTS(AP, type = "BSM")

## Fit with a gap
AP.gap <- AP
AP.gap[73:96] <- NA
fit.gap <- StructTS(AP.gap, type = "BSM", optim.control = list(trace = TRUE))

# plot in orginal (non-logged) scale
plot(AirPassengers, col = "black", ylab = "AirPass")
AP.missing <- ts(AirPassengers[73:96], start=1955, , freq=12)
lines(AP.missing, col = "grey", lwd = 1)

## smooth and sum 'level' and 'sea' to retrieve series
sm <- tsSmooth(fit.gap)
fill <- apply(as.matrix(sm[ , c(1,3)]), 1, sum)
AP.fill <- ts(fill[73:96], start=1955, , freq=12)
lines(10^AP.fill, col = "red", lwd = 1)

चिकना भरा हुआ


2

मुझे आपके सुझाए गए दृष्टिकोण का पता चलता है, सामने वाले और पीछे के कलाकारों के साधनों को लेने का, दिलचस्प।

एक बात जो इंगित करने लायक हो सकती है, वह यह है कि किसी भी प्रणाली में अव्यवस्थित संरचना का प्रदर्शन कम अवधि में पूर्वानुमान के अधिक सटीक होने की संभावना है। यह सभी प्रणालियों के लिए मामला नहीं है, उदाहरण के लिए एक नम पेंडुलम को गलत अवधि के साथ एक फ़ंक्शन द्वारा मॉडलिंग किया जा सकता है, इस मामले में सभी मध्यम अवधि के पूर्वानुमान गलत होने की संभावना है, जबकि दीर्घकालिक सभी होने जा रहे हैं बहुत सटीक, क्योंकि सिस्टम शून्य में परिवर्तित होता है। लेकिन यह मुझे लगता है, इस प्रश्न में ग्राफ से, कि यह यहाँ बनाने के लिए एक उचित धारणा हो सकती है।

तात्पर्य यह है कि हम लापता अवधि के पूर्व भाग के पूर्वानुमान डेटा पर अधिक भरोसा कर सकते हैं और बाद वाले भाग के लिए बैक-कास्ट डेटा पर अधिक निर्भर हो सकते हैं। ऐसा करने का सबसे सरल तरीका यह होगा कि पूर्वानुमान के लिए रैखिक रूप से घटते वजन का उपयोग किया जाए, और बैक-कास्ट के लिए विपरीत:

> n <- [number of missing datapoints] 
> w <- seq(1, 0, by = -1/(n+1))[2:(n+1)]

यह पहले तत्व पर बैककास्ट का थोड़ा वजन देता है। आप अंत में सबस्क्राइब के बिना भी n-1 का उपयोग कर सकते हैं, यदि आप पहले प्रक्षेपित बिंदु पर केवल पूर्वानुमान मूल्य का उपयोग करना चाहते थे।

> w
 [1] 0.92307692 0.84615385 0.76923077 0.69230769 0.61538462 0.53846154
 [7] 0.46153846 0.38461538 0.30769231 0.23076923 0.15384615 0.07692308

मेरे पास आपका डेटा नहीं है, तो चलिए R में AirPassenger डेटासेट पर इसे आज़माते हैं। मैं अभी केंद्र में दो साल की अवधि निकालूंगा:

> APearly <- ts(AirPassengers[1:72], start=1949, freq=12)
> APlate <- ts(AirPassengers[97:144], start=1957, freq=12)
> APmissing <- ts(AirPassengers[73:96], start=1955, freq=12)
> plot(AirPassengers)
# plot the "missing data" for comparison
> lines(APmissing, col="#eeeeee")
# use the HoltWinters algorithm to predict the mean:
> APforecast <- hw(APearly)[2]$mean
> lines(APforecast, col="red")
# HoltWinters doesn't appear to do backcasting, so reverse the ts, forecast, 
# and reverse again (feel free to edit if there's a better process)
> backwards <- ts(rev(APlate), freq=12)
> backcast <- hw(backwards)[2]$mean
> APbackcast <- ts(rev(backcast), start=1955, freq=12)
> lines(APbackcast, col='blue')
# now the magic: 
> n <- 24 
> w <- seq(1, 0, by=-1/(n+1))[2:(n+1)]
> interpolation = APforecast * w + (1 - w) * APbackcast
> lines(interpolation, col='purple', lwd=2)

और वहाँ आपका प्रक्षेप है।

ग्राफ आउटपुट

बेशक, यह सही नहीं है। मुझे लगता है कि डेटा के पिछले हिस्से में पैटर्न का एक परिणाम है, जो बाद के हिस्से में उन लोगों के लिए अलग है (जूल-ऑग पीक पहले के वर्षों में इतना मजबूत नहीं है)। लेकिन जैसा कि आप छवि से देख सकते हैं, यह स्पष्ट रूप से केवल पूर्वानुमान या अकेले बैक कास्टिंग से बेहतर है। मुझे लगता है कि आपके डेटा को थोड़ा कम विश्वसनीय परिणाम मिल सकते हैं, क्योंकि इस तरह के मजबूत मौसमी बदलाव नहीं हैं।

मेरा अनुमान है कि आप इसे आत्मविश्वास के अंतराल सहित भी आज़मा सकते हैं, लेकिन मैं इसे बस इस तरह से करने की वैधता के बारे में निश्चित नहीं हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.