বয়েশিয়ান স্ট্রাকচারাল টাইম সিরিজের মডেলগুলি সম্পর্কে এই ব্লগ পোস্টটি পড়ার পরে , আমি এর আগে আমি আরিমা ব্যবহার করব এমন সমস্যার প্রসঙ্গে এইটিকে বাস্তবায়নের দিকে নজর দিতে চেয়েছিলাম।
আমার কিছু পরিচিত (তবে গোলমাল) মৌসুমী উপাদানগুলির সাথে কিছু তথ্য রয়েছে - এটির অবশ্যই একটি বার্ষিক, মাসিক এবং সাপ্তাহিক উপাদান রয়েছে এবং বিশেষ দিনগুলির কারণে কিছু প্রভাব রয়েছে (যেমন ফেডারেল বা ধর্মীয় ছুটির দিনগুলি)।
আমি ব্যবহার করেছি bsts
বাস্তবায়নের প্যাকেজটি এবং যতদূর আমি বলতে পারি যে আমি কোনও ভুল করি নি, যদিও উপাদানগুলি এবং ভবিষ্যদ্বাণীটি আমার প্রত্যাশা মতো দেখা যায় না। আমার প্রয়োগটি ভুল, অসম্পূর্ণ বা অন্য কোনও সমস্যা আছে কিনা তা আমার কাছে পরিষ্কার নয়।
পুরো সময়ের সিরিজটি এরকম দেখাচ্ছে:
আমি ডেটাগুলির কিছু উপসেটে মডেলটিকে প্রশিক্ষণ দিতে পারি, এবং মডেলটি ফিটের ক্ষেত্রে সাধারণত ভাল দেখায় (প্লটটি নীচে থাকে)। এটি করার জন্য আমি যে কোডটি ব্যবহার করছি তা এখানে:
library(bsts)
predict_length = 90
training_cut_date <- '2015-05-01'
test_cut_date <- as.Date(training_cut_date) + predict_length
df = read.csv('input.tsv', sep ='\t')
df$date <- as.Date(as.character(df$date),format="%Y-%m-%d")
df_train = df[df$date < training_cut_date,]
yts <- xts(log10(df_train$count), order.by=df_train$date)
ss <- AddLocalLinearTrend(list(), yts)
ss <- AddSeasonal(ss, yts, nseasons = 7)
ss <- AddSeasonal(ss, yts, nseasons = 12)
ss <- AddNamedHolidays(ss, named.holidays = NamedHolidays(), yts)
model <- bsts(yts, state.specification = ss, niter = 500, seed=2016)
মডেলটি যুক্তিসঙ্গত দেখাচ্ছে:
তবে আমি যদি ভবিষ্যদ্বাণীটি প্লট করি তবে প্রথমে প্রবণতাটি পুরোপুরি ভুল, এবং দ্বিতীয়ত অনিশ্চয়তা খুব দ্রুত বাড়ায় - যেখানে আমি লগ- এ অক্ষ অক্ষর না করে ভবিষ্যদ্বাণী হিসাবে একই প্লটে অনিশ্চয়তা ব্যান্ডটি প্রদর্শন করতে পারি না to স্কেল. এই অংশের জন্য কোড এখানে:
burn <- SuggestBurn(0.1, model)
pred <- predict(model, horizon = predict_length, burn = burn, quantiles = c(.025, .975))
খাঁটি ভবিষ্যদ্বাণীটি এরকম দেখাচ্ছে:
এবং তারপরে প্রাথমিক বিতরণে যখন ছোট করে দেওয়া হয় (প্রশিক্ষিত থেকে ভবিষ্যদ্বাণীতে রূপান্তরিত বিন্দুযুক্ত লাইন দিয়ে, সমস্যাগুলি সুস্পষ্ট:
আমি আরও মৌসুমী প্রবণতা যুক্ত করার, মৌসুমী প্রবণতাগুলি সরিয়ে, একটি এআর শব্দ যুক্ত করে, অ্যাডলোক্যাললাইনারমডেলকে অ্যাডজেনারালাইজডলোক্যালাইনারট্রেন্ডে পরিবর্তন করে এবং মডেলটিকে টুইট করার বিষয়ে আরও কয়েকটি বিষয় চেষ্টা করেছি, তবে কিছুই সমস্যার সমাধান করেনি এবং ভবিষ্যদ্বাণীগুলিকে আরও অর্থবহ করে তোলে। কিছু ক্ষেত্রে দিক পরিবর্তন হয়, সুতরাং 0 থেকে নেমে আসার পরিবর্তে ভবিষ্যদ্বাণী কেবল সময়ের ক্রিয়া হিসাবে বৃদ্ধি পেতে থাকে। মডেলটি কেন এভাবে ভেঙে যাচ্ছে তা আমি অবশ্যই বুঝতে পারি না। কোন পরামর্শ খুব স্বাগত হবে।