2012-06-18 3 views
5

मैं सटीकता उपायों की गणना करने के लिए forecast पैकेज से accuracy फ़ंक्शन का उपयोग कर रहा हूं। मैं इसे एआईआरएमए या घातीय चिकनाई जैसे फिट टाइम श्रृंखला मॉडल के उपायों की गणना करने के लिए उपयोग कर रहा हूं। जैसा कि मैं अलग-अलग आयामों और एकत्रीकरण स्तरों पर विभिन्न मॉडल प्रकारों का परीक्षण कर रहा हूं, मैं एमएएसई का उपयोग कर रहा हूं, इसका मतलब है कि पूर्ण स्केल की गई त्रुटि, हाइंडमैन एट अल (2006, "पूर्वानुमान सटीकता के उपायों पर एक और नजर) द्वारा पेश की गई है, अलग-अलग तुलना करने के लिए विभिन्न स्तरों पर मॉडल।पूर्वानुमान सटीकता: तर्क के रूप में दो वैक्टरों के साथ कोई MASE

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

च: वर्ग की एक वस्तु "पूर्वानुमान", या भविष्यवाणी वाले एक संख्यात्मक वेक्टर। यदि 0 एक्स छोड़ा गया है तो अरिमा, एट्स और एलएम ऑब्जेक्ट्स के साथ भी काम करेगा - इस मामले में नमूना सटीकता उपायों को वापस कर दिया जाता है।

x: एक वैकल्पिक संख्यात्मक वेक्टर जिसमें ऑब्जेक्ट की समान लंबाई के वास्तविक मान होते हैं।

लेकिन मुझे इस तथ्य से आश्चर्य हुआ कि सभी उपायों को वापस कर दिया गया है, एमएएसई की उम्मीद है। तो मैं सोच रहा था कि क्या कोई जानता है कि इसके लिए क्या कारण है? accuracy फ़ंक्शन में तर्क के रूप में दो वैक्टरों का उपयोग करते समय एमएएसई क्यों नहीं लौटाया जाता है?

उत्तर

11

MASE स्केलिंग कारक गणना करने के लिए ऐतिहासिक डेटा की आवश्यकता है। यह भविष्य में डेटा से गणना के रूप में @FBE द्वारा उत्तर में है। इसलिए यदि आप ऐतिहासिक डेटा को accuracy() पर पास नहीं करते हैं, तो MASE की गणना नहीं की जा सकती है। उदाहरण के लिए,

> library(forecast) 
> fcast <- snaive(window(USAccDeaths,end=1977.99)) 
> accuracy(fcast$mean,USAccDeaths) 
     ME  RMSE   MAE   MPE  MAPE  ACF1 
225.1666667 341.1639391 259.5000000 2.4692164 2.8505546 0.3086626 
    Theil's U 
    0.4474491 

लेकिन अगर आप पूरे fcast वस्तु (जो ऐतिहासिक डेटा होता है) उत्तीर्ण करने पर आपको

> accuracy(fcast,USAccDeaths) 
     ME  RMSE   MAE   MPE  MAPE  MASE 
225.1666667 341.1639391 259.5000000 2.4692164 2.8505546 0.5387310 
     ACF1 Theil's U 
    0.3086626 0.4474491 
+0

क्या एमएएसई पूर्वानुमान प्राप्त करने के लिए 'पूर्वानुमान' ऑब्जेक्ट के अलावा अन्य वस्तुओं को पार करना संभव है। उदाहरण के लिए, मैं पूर्वानुमान बनाने और एमएएसई की गणना करने के लिए 'वर्स' पैकेज का उपयोग करना चाहता हूं। संबंधित प्रश्न देखें: http://stackoverflow.com/questions/18244506/measuring-var-accuracy-using-accuracy-from-forecast – Harsh

+0

डॉ। हाइडमैन। समय श्रृंखला पूर्वानुमान में आपके काम के लिए धन्यवाद।'पूर्वानुमान' वर्ग वस्तु का उपयोग किये बिना एमएएसई खोजने के लिए कृपया मेरे उत्तर का मूल्यांकन करें। यह बहुत अच्छा होगा अगर आप इसे अपने पैकेज में भी शामिल कर सकते हैं! –

+0

डॉ। हाइंडमैन, क्या वास्तविक डेटा के साथ परीक्षण सेट (टीएस प्रारूप) डेटा के लिए एमएएसई त्रुटि मीट्रिक प्राप्त करना संभव है? – mike

0

अपने आप को थोड़ा सा मदद करने के लिए, मैंने एमएएसई की गणना करने के लिए एक फ़ंक्शन बनाया, जैसा कि "भविष्य सटीकता के उपायों पर एक और नजरिया" (2006) में हाइंडमैन एट अल द्वारा वर्णित है।

calculateMASE <- function(f,y) { # f = vector with forecasts, y = vector with actuals 
    if(length(f)!=length(y)){ stop("Vector length is not equal") } 
    n <- length(f) 
    return(mean(abs((y - f)/((1/(n-1)) * sum(abs(y[2:n]-y[1:n-1])))))) 
} 

संदर्भ के लिए, देखें:

10

मिल MASE पर कागज स्पष्ट रूप से बताता है कि यह कैसे लगता है (यहां तक ​​कि गैर समय के लिए - श्रृंखला डेटा)

computeMASE <- function(forecast,train,test,period){ 

    # forecast - forecasted values 
    # train - data used for forecasting .. used to find scaling factor 
    # test - actual data used for finding MASE.. same length as forecast 
    # period - in case of seasonal data.. if not, use 1 

    forecast <- as.vector(forecast) 
    train <- as.vector(train) 
    test <- as.vector(test) 

    n <- length(train) 
    scalingFactor <- sum(abs(train[(period+1):n] - train[1:(n-period)]))/(n-period) 

    et <- abs(test-forecast) 
    qt <- et/scalingFactor 
    meanMASE <- mean(qt) 
    return(meanMASE) 
} 
+0

यह बहुत उपयोगी काम है +1 – forecaster

+0

यदि मेरे पास एक से अधिक सत्रों के साथ मौसमी डेटा है तो फ़ंक्शन का उपयोग करने का कोई तरीका है? जैसे दैनिक डेटा एक सप्ताह के पैटर्न (7) और एक वार्षिक पैटर्न (365) के साथ। – RandomDude

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