আর-তে বিদেশী সনাক্তকারী কীভাবে পূর্বাভাস করবেন? - সময় সিরিজ বিশ্লেষণ পদ্ধতি এবং পদ্ধতি


16

আমার কাছে মাসিক টাইম সিরিজের ডেটা রয়েছে এবং বিদেশীদের সনাক্তকরণের সাথে পূর্বাভাসটি করতে চাই।

এটি আমার ডেটা সেটের নমুনা:

       Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
2006  7.55  7.63  7.62  7.50  7.47  7.53  7.55  7.47  7.65  7.72  7.78  7.81
2007  7.71  7.67  7.85  7.82  7.91  7.91  8.00  7.82  7.90  7.93  7.99  7.93
2008  8.46  8.48  9.03  9.43 11.58 12.19 12.23 11.98 12.26 12.31 12.13 11.99
2009 11.51 11.75 11.87 11.91 11.87 11.69 11.66 11.23 11.37 11.71 11.88 11.93
2010 11.99 11.84 12.33 12.55 12.58 12.67 12.57 12.35 12.30 12.67 12.71 12.63
2011 12.60 12.41 12.68 12.48 12.50 12.30 12.39 12.16 12.38 12.36 12.52 12.63

পূর্বাভাসের বিভিন্ন মডেলের একটি সিরিজ করতে আমি টাইমসারিজ বিশ্লেষণ পদ্ধতি এবং পদ্ধতিগুলি উল্লেখ করেছি , তবে এটি সঠিক বলে মনে হচ্ছে না। অতিরিক্ত হিসাবে, আমি কীভাবে এর মধ্যে সসুটলিয়ারগুলি অন্তর্ভুক্ত করতে পারি তা নিশ্চিত নই।

আমি উপর tsoutliers আমার তদন্ত এবং Arima মডেলিং এবং পদ্ধতি সংক্রান্ত অন্য একটা পোস্টে পেয়েছি এখানে হিসাবে ভাল।

সুতরাং এই বর্তমানে আমার কোড, যা লিঙ্ক নং 1 অনুরূপ।

কোড:

product<-ts(product, start=c(1993,1),frequency=12)

#Modelling product Retail Price

#Training set
product.mod<-window(product,end=c(2012,12))
#Test set
product.test<-window(product,start=c(2013,1))
#Range of time of test set
period<-(end(product.test)[1]-start(product.test)[1])*12 + #No of month * no. of yr
(end(product.test)[2]-start(product.test)[2]+1) #No of months
#Model using different method
#arima, expo smooth, theta, random walk, structural time series
models<-list(
#arima
product.arima<-forecast(auto.arima(product.mod),h=period),
#exp smoothing
product.ets<-forecast(ets(product.mod),h=period),
#theta
product.tht<-thetaf(product.mod,h=period),
#random walk
product.rwf<-rwf(product.mod,h=period),
#Structts
product.struc<-forecast(StructTS(product.mod),h=period)
)

##Compare the training set forecast with test set
par(mfrow=c(2, 3))
for (f in models){
    plot(f)
    lines(product.test,col='red')
}

##To see its accuracy on its Test set, 
#as training set would be "accurate" in the first place
acc.test<-lapply(models, function(f){
    accuracy(f, product.test)[2,]
})
acc.test <- Reduce(rbind, acc.test)
row.names(acc.test)<-c("arima","expsmooth","theta","randomwalk","struc")
acc.test <- acc.test[order(acc.test[,'MASE']),]

##Look at training set to see if there are overfitting of the forecasting
##on training set
acc.train<-lapply(models, function(f){
    accuracy(f, product.test)[1,]
})
acc.train <- Reduce(rbind, acc.train)
row.names(acc.train)<-c("arima","expsmooth","theta","randomwalk","struc")
acc.train <- acc.train[order(acc.train[,'MASE']),]

 ##Note that we look at MAE, MAPE or MASE value. The lower the better the fit.

এটি আমার বিভিন্ন পূর্বাভাসের চক্রান্ত যা লাল "পরীক্ষার সেট" এবং নীল "পূর্বাভাস" সেটটির তুলনা করে খুব নির্ভরযোগ্য / নির্ভুল বলে মনে হয় না। বিভিন্ন পূর্বাভাসের প্লট বিভিন্ন পূর্বাভাস

পরীক্ষা এবং প্রশিক্ষণের সেট সম্পর্কিত মডেলগুলির বিভিন্ন নির্ভুলতা

Test set
                    ME      RMSE       MAE        MPE     MAPE      MASE      ACF1 Theil's U
theta      -0.07408833 0.2277015 0.1881167 -0.6037191 1.460549 0.2944165 0.1956893 0.8322151
expsmooth  -0.12237967 0.2681452 0.2268248 -0.9823104 1.765287 0.3549976 0.3432275 0.9847223
randomwalk  0.11965517 0.2916008 0.2362069  0.8823040 1.807434 0.3696813 0.4529428 1.0626775
arima      -0.32556886 0.3943527 0.3255689 -2.5326397 2.532640 0.5095394 0.2076844 1.4452932
struc      -0.39735804 0.4573140 0.3973580 -3.0794740 3.079474 0.6218948 0.3841505 1.6767075

Training set
                     ME      RMSE       MAE         MPE     MAPE      MASE    ACF1 Theil's U
theta      2.934494e-02 0.2101747 0.1046614  0.30793753 1.143115 0.1638029  0.2191889194        NA
randomwalk 2.953975e-02 0.2106058 0.1050209  0.31049479 1.146559 0.1643655  0.2190857676        NA
expsmooth  1.277048e-02 0.2037005 0.1078265  0.14375355 1.176651 0.1687565 -0.0007393747        NA
arima      4.001011e-05 0.2006623 0.1079862 -0.03405395 1.192417 0.1690063 -0.0091275716        NA
struc      5.011615e-03 1.0068396 0.5520857  0.18206018 5.989414 0.8640550  0.1499843508        NA

মডেলগুলির নির্ভুলতা থেকে, আমরা দেখতে পাচ্ছি যে সবচেয়ে নির্ভুল মডেলটি হবে থেটা মডেল। পূর্বাভাসটি কেন খুব ত্রুটিযুক্ত তা আমি নিশ্চিত নই এবং আমি মনে করি যে এর অন্যতম কারণ হ'ল, আমি আমার ডেটা সেটে "আউটলিয়ার "দের সাথে চিকিত্সা করি নি, ফলস্বরূপ সমস্ত মডেলের খারাপ ধারণা করা হয়েছিল।

এটি আমার বহিরাগতদের চক্রান্ত

আউটলিয়ার্স প্লট outliers

tsoutliers আউটপুট

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

আমি জানতে চাই যে এই প্রাসঙ্গিক ডেটা সেট এবং বিদেশী সনাক্তকরণ ইত্যাদির সাহায্যে আমি কীভাবে আমার ডেটা "বিশ্লেষণ" / পূর্বাভাস করতে পারি ইত্যাদি অনুগ্রহ করে আমার পূর্বাভাসটি করার জন্য আমার বিদেশীদের চিকিত্সা করতে আমাকে সহায়তা করুন।

শেষ অবধি, আমি কীভাবে এক সাথে বিভিন্ন মডেল পূর্বাভাসের সাথে একত্রে জড়িত তা জানতে চাই, @ ফরেস্টকাস্টার লিঙ্ক নং 1-এ যা উল্লেখ করেছেন, তার থেকে ভিন্ন মডেলটির সংমিশ্রণটি সম্ভবত আরও ভাল পূর্বাভাস / ভবিষ্যদ্বাণী হিসাবে দেখা দেয়।

সম্পাদিত

আমি অন্য মডেলগুলিতে আউটলিয়ারদের অন্তর্ভুক্ত করতে চাই।

আমি কিছু কোড চেষ্টা করেছি, যেমন।

forecast.ets( res$fit ,h=period,xreg=newxreg)
Error in if (object$components[1] == "A" & is.element(object$components[2], : argument is of length zero

forecast.StructTS(res$fit,h=period,xreg=newxreg)
Error in predict.Arima(object, n.ahead = h) : 'xreg' and 'newxreg' have different numbers of columns

কিছু ত্রুটি উত্পাদিত হয়েছে, এবং আমি বিদেশিদের রেজিস্ট্রার হিসাবে অন্তর্ভুক্ত করার সঠিক কোড সম্পর্কে নিশ্চিত নই। তদ্ব্যতীত, পূর্বাভাস না থাকায় আমি কীভাবে থেটাফ বা আরডাব্লুএফের সাথে কাজ করব?


1
অবিচ্ছিন্ন পুনরায় সম্পাদনা কাজ করে না বলে মনে হতে পারে আপনার সাহায্য পাওয়ার জন্য অন্য পদ্ধতির অবলম্বন করা উচিত
আইরিশস্ট্যাট

আমি @irishstat এর সাথে একমত, নীচের উভয় উত্তরই আপনার প্রশ্নের সরাসরি উত্তর সরবরাহ করে এবং মনে হয় সামান্য মনোযোগ পেয়েছে।
পূর্বাভাসকারী

নির্দিষ্ট ফাংশনগুলির ডকুমেন্টেশন পড়ার চেষ্টা করুন যা আপনাকে ত্রুটি দিচ্ছে, ইটিএস এবং থিটাফ-এ রেজিস্ট্রারগুলি পরিচালনা করার ক্ষমতা নেই।
পূর্বাভাসকারী

উত্তর:


7

এই উত্তরটি আপনার অন্যান্য প্রশ্নের 6 এবং 7 পয়েন্টের সাথেও সম্পর্কিত

প্রবর্তকরা এমন পর্যবেক্ষণ হিসাবে বোঝা যা মডেল দ্বারা ব্যাখ্যা করা হয়নি, সুতরাং পূর্বাভাসে তাদের ভূমিকা এই অর্থেই সীমাবদ্ধ যে নতুন বিদেশিদের উপস্থিতির পূর্বাভাস দেওয়া হবে না। আপনাকে যা করতে হবে তা হ'ল এই বাহ্যিকদের পূর্বাভাস সমীকরণের অন্তর্ভুক্ত করা।

অ্যাডিটিভ আউটলেটারের ক্ষেত্রে (যা কোনও একক পর্যবেক্ষণকে প্রভাবিত করে) এর ক্ষেত্রে এই আউটলেট যুক্ত ভেরিয়েবলটি কেবল জিরো দিয়ে পূর্ণ হবে, যেহেতু বহিরাগতটি নমুনায় পর্যবেক্ষণের জন্য সনাক্ত করা হয়েছিল; লেভেল শিফ্টের ক্ষেত্রে (ডেটাতে স্থায়ী পরিবর্তন), পরিবর্তনটি পূর্বাভাসে রাখার জন্য ভেরিয়েবলগুলি পূরণ করা হবে।


এরপরে, আমি দেখাব যে কীভাবে 'tsoutliers' দ্বারা সনাক্ত করা outliers সঙ্গে একটি আরিমা মডেল উপর আর মধ্যে পূর্বাভাস পেতে। যুক্তিটি সঠিকভাবে যুক্তির সংজ্ঞা দেওয়া হয়newxreg হয়predict

(এটি কেবল পূর্বাভাস দেওয়ার সময় কীভাবে বহিরাগতদের সাথে চিকিত্সা করা উচিত সে সম্পর্কে আপনার প্রশ্নের জবাব চিত্রিত করার জন্য, আমি ফলাফলটি মডেল বা পূর্বাভাস সর্বোত্তম সমাধান কিনা তা নিয়ে আমি সমস্যাটির সমাধান করি না))

require(tsoutliers)
x <- c(
  7.55,  7.63,  7.62,  7.50,  7.47,  7.53,  7.55,  7.47,  7.65,  7.72,  7.78,  7.81,
  7.71,  7.67,  7.85,  7.82,  7.91,  7.91,  8.00,  7.82,  7.90,  7.93,  7.99,  7.93,
  8.46,  8.48,  9.03,  9.43, 11.58, 12.19, 12.23, 11.98, 12.26, 12.31, 12.13, 11.99,
 11.51, 11.75, 11.87, 11.91, 11.87, 11.69, 11.66, 11.23, 11.37, 11.71, 11.88, 11.93,
 11.99, 11.84, 12.33, 12.55, 12.58, 12.67, 12.57, 12.35, 12.30, 12.67, 12.71, 12.63,
 12.60, 12.41, 12.68, 12.48, 12.50, 12.30, 12.39, 12.16, 12.38, 12.36, 12.52, 12.63)
x <- ts(x, frequency=12, start=c(2006,1))
res <- tso(x, types=c("AO","LS","TC"))

# define the variables containing the outliers for
# the observations outside the sample
npred <- 12 # number of periods ahead to forecast 
newxreg <- outliers.effects(res$outliers, length(x) + npred)
newxreg <- ts(newxreg[-seq_along(x),], start = c(2012, 1))

# obtain the forecasts
p <- predict(res$fit, n.ahead=npred, newxreg=newxreg)

# display forecasts
plot(cbind(x, p$pred), plot.type = "single", ylab = "", type = "n", ylim=c(7,13))
lines(x)
lines(p$pred, type = "l", col = "blue")
lines(p$pred + 1.96 * p$se, type = "l", col = "red", lty = 2)  
lines(p$pred - 1.96 * p$se, type = "l", col = "red", lty = 2)  
legend("topleft", legend = c("observed data", 
  "forecasts", "95% confidence bands"), lty = c(1,1,2,2), 
  col = c("black", "blue", "red", "red"), bty = "n")

পূর্বাভাস

সম্পাদন করা

predictউপরের হিসাবে ব্যবহৃত ফাংশনটি নির্বাচিত আরিমা মডেল, আরিমা (২,০,০) res$fitএবং সঞ্চিত আউটলিয়ার্স, এর উপর ভিত্তি করে পূর্বাভাস দেয় res$outliers। আমাদের মতো মডেল সমীকরণ রয়েছে:

Yটি=Σ=1মিωএল(বি)আমিটি(টি)+ +θ(বি)φ(বি)α(বি)εটি,εটি~এনআমিডি(0,σ2),

এলtsoutliersআমিটি


সুতরাং আপনি যা করেছেন তা হল "নিউএক্সগ্রেগ" যুক্তিতে আউটলিয়ারদের যুক্ত করা। এটাকে কি রেজিস্ট্রার বলা হয়? আমি কি রেজিস্ট্রার ব্যবহার জানতে পারি? অতিরিক্ত হিসাবে, "পূর্বাভাস" ফাংশনে রেজিস্টার ব্যবহারের মাধ্যমে, এটি এখনও আরিমা ব্যবহার করে? বা এটি বিভিন্ন পূর্বাভাস পদ্ধতি? Tsoutliers ব্যবহারে আপনার সহায়তার জন্য অনেক ধন্যবাদ। = ডি
টেড

অন্যান্য মডেলগুলিতেও পূর্বাভাসের ক্ষেত্রে আউটলিয়ারদের রেজিস্ট্রার হিসাবে অন্তর্ভুক্ত করা সম্ভব? বেসিক স্ট্রাকচারাল মডেল, থেটা, র‌্যান্ডম ওয়াক এবং ইত্যাদির মতো?
টেড

@ টেড হ্যাঁ, পূর্বাভাসগুলি একটি এআরএমএ মডেলের উপর ভিত্তি করে। আমি এই সম্পর্কে কিছু বিবরণ সহ আমার উত্তর সম্পাদনা করেছি।
javlacalle

আপনি অন্যান্য মডেলগুলিতে লেভেল শিফট, অ্যাডিটিভ আউটলিয়ার্স, ... এর মতো প্রভাব সম্বলিত রেজিস্ট্রার ভেরিয়েবলগুলি অন্তর্ভুক্ত করতে পারেন, উদাহরণস্বরূপ, এলোমেলো পদচারনা, কাঠামোগত সময় সিরিজের মডেল, ... যদি আপনি এটি করতে কিছু সফ্টওয়্যার ব্যবহার করতে চান তবে আপনি সম্ভবত এটি অন্য পোস্টে জিজ্ঞাসা করা উচিত এবং স্ট্যাকওভারফ্লোয়ের মতো প্রশ্ন অন্যান্য সাইটের জন্য আরও উপযুক্ত কিনা তা বিবেচনা করা উচিত ।
javlacalle

ওহ ঠিক আছে. আরেকটি প্রশ্ন হবে, আপনি কি জানেন যে ভবিষ্যদ্বাণী এবং পূর্বাভাস ব্যবহারের মধ্যে পার্থক্য রয়েছে ? যদি থাকে তবে পার্থক্য কী
টেড

2

আপনার 72 টি পর্যবেক্ষণের জন্য একটি যুক্তিসঙ্গত মডেল বিকাশে সহায়তা করেছিলাম এমন একটি সফ্টওয়্যার ব্যবহার করে একটি পাওয়ার ট্রান্সফর্ম (লগস) অন্তর্ভুক্ত করা যায় কারণ ত্রুটির বৈকল্পিক প্রত্যাশিত মানের সাথে সংযোগযোগ্য। এটি মূল প্লট থেকেও স্পষ্টতই স্পষ্ট যেখানে চোখ উচ্চ স্তরের বর্ধিত বৈচিত্রটি সনাক্ত করতে পারে। এখানে চিত্র বর্ণনা লিখুনআসল.ফিট / ফরেস্টকাস্ট এখানে চিত্র বর্ণনা লিখুনএবং চূড়ান্ত এখানে চিত্র বর্ণনা লিখুনঅবশিষ্টাংশের প্লট সহ । পাওয়ার ট্রান্সফর্মটিকে বিবেচনায় নিয়ে আরও বাস্তবসম্মত আত্মবিশ্বাসের সীমাটি নোট করুন। যদিও এই প্রতিক্রিয়াটি আর ব্যবহার করে না এটি এটি ব্যবহার করে যুক্তিসঙ্গত মডেলটি কী অন্তর্ভুক্ত করতে পারে তা বাড়িয়ে তোলে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.