আমি আরিমা মডেলিং / বক্স জেনকিন্স (বিজে) এ প্যারামিটারগুলি কীভাবে অনুমান করা হয় তা বোঝার চেষ্টা করছি। দুর্ভাগ্যক্রমে আমি যে বইগুলির মুখোমুখি হয়েছি তার মধ্যে লগ-সম্ভাবনা অনুমানের পদ্ধতি হিসাবে অনুমানের প্রক্রিয়াটি বিশদভাবে বর্ণনা করে না। আমি ওয়েবসাইট / শিক্ষাদানের উপাদানটি পেয়েছি যা খুব সহায়ক ছিল। উপরোক্ত উত্স থেকে সমীকরণটি নীচে বর্ণিত।
আমি নিজেই এআরআইএমএ / বিজে অনুমানটি শিখতে চাই। তাই আমি হাত দিয়ে এআরএমএ অনুমান করার জন্য একটি কোড লিখতে ব্যবহার করেছি । নীচে আমি যা করেছি ,
- আমি এআরএমএ অনুকরণ করেছি (1,1)
- ফাংশন হিসাবে উপরের সমীকরণটি লিখেছিলেন
- এআর এবং এমএ প্যারামিটারগুলি অনুমান করতে সিমুলেটেড ডেটা এবং সর্বোত্তম ফাংশন ব্যবহার করুন।
- আমি স্ট্যাটাস প্যাকেজে এআরআইএমএ চালিয়েছি এবং হাতের কাজ থেকে আরআরএমএ পরামিতিগুলি তুলনা করেছি। নীচে তুলনা করা হয়:
** নীচে আমার প্রশ্নগুলি:
- আনুমানিক এবং গণনাযুক্ত ভেরিয়েবলের মধ্যে কেন সামান্য পার্থক্য রয়েছে?
- আরিমা কি আর ব্যাককাস্টে ফাংশন করে বা আমার কোডের নীচে বর্ণিত রূপগুলির চেয়ে অনুমানের পদ্ধতিটি আলাদা করে?
- আমি পর্যবেক্ষণে ই 1 বা ত্রুটি 0 হিসাবে 0 হিসাবে নির্ধারিত করেছি, এটি কি সঠিক?
- এছাড়াও অপ্টিমাইজেশনের হেসিয়ান ব্যবহার করে পূর্বাভাসের আত্মবিশ্বাসের সীমাটি অনুমান করার কোনও উপায় আছে কি?
বরাবরের মত আপনার সহায়তার জন্য অনেক ধন্যবাদ।
নীচে কোডটি দেওয়া হল:
## Load Packages
library(stats)
library(forecast)
set.seed(456)
## Simulate Arima
y <- arima.sim(n = 250, list(ar = 0.3, ma = 0.7), mean = 5)
plot(y)
## Optimize Log-Likelihood for ARIMA
n = length(y) ## Count the number of observations
e = rep(1, n) ## Initialize e
logl <- function(mx){
g <- numeric
mx <- matrix(mx, ncol = 4)
mu <- mx[,1] ## Constant Term
sigma <- mx[,2]
rho <- mx[,3] ## AR coeff
theta <- mx[,4] ## MA coeff
e[1] = 0 ## Since e1 = 0
for (t in (2 : n)){
e[t] = y[t] - mu - rho*y[t-1] - theta*e[t-1]
}
## Maximize Log-Likelihood Function
g1 <- (-((n)/2)*log(2*pi) - ((n)/2)*log(sigma^2+0.000000001) - (1/2)*(1/(sigma^2+0.000000001))*e%*%e)
##note: multiplying Log-Likelihood by "-1" in order to maximize in the optimization
## This is done becuase Optim function in R can only minimize, "X"ing by -1 we can maximize
## also "+"ing by 0.000000001 sigma^2 to avoid divisible by 0
g <- -1 * g1
return(g)
}
## Optimize Log-Likelihood
arimopt <- optim(par=c(10,0.6,0.3,0.5), fn=logl, gr = NULL,
method = c("L-BFGS-B"),control = list(), hessian = T)
arimopt
############# Output Results###############
ar1_calculated = arimopt$par[3]
ma1_calculated = arimopt$par[4]
sigmasq_calculated = (arimopt$par[2])^2
logl_calculated = arimopt$val
ar1_calculated
ma1_calculated
sigmasq_calculated
logl_calculated
############# Estimate Using Arima###############
est <- arima(y,order=c(1,0,1))
est
g1
+0.000000001