পার্থক্যযুক্ত সিরিজে ARIMA বনাম এআরএমএ


13

আর (২.১৫.২) এ আমি একবারের সিরিজে একবার আরিমা (৩,১,৩) এবং একবারের আলাদা টাইমসিরিজে একবার এআরএমএ (৩,৩) একবার লাগিয়েছিলাম। লাগানো পরামিতিগুলি পৃথক, যা আমি আরিমায় ফিটিং পদ্ধতির জন্য দায়ী করেছি।

এছাড়াও, এআরএমএ (3,3,3) হিসাবে একই ডেটাতে একটি এআরআইএমএ (3,0,3) ফিট করার ফলে অভিন্ন পরামিতিগুলির ফলসই হবে না, আমি যে ফিটিং পদ্ধতি ব্যবহার করি তা বিবেচনা করে না।

আমি পার্থক্যটি কোথা থেকে এসেছে তা সনাক্ত করতে আগ্রহী এবং আমি কী প্যারামিটারগুলির সাথে এআরএমএ থেকে ফিট হবার একই মানের গুণাগুলি পেতে (যদি আদৌ) আরিমাকে ফিট করতে পারি।

নমুনা কোড প্রদর্শনের জন্য:

library(tseries)
set.seed(2)
#getting a time series manually
x<-c(1,2,1)
e<-c(0,0.3,-0.2)
n<-45
AR<-c(0.5,-0.4,-0.1)
MA<-c(0.4,0.3,-0.2)
for(i in 4:n){
tt<-rnorm(1)
t<-x[length(x)]+tt+x[i-1]*AR[1]+x[i-2]*AR[2]+x[i-3]*AR[3]+e[i-1]*MA[1]+e[i-2]*MA[2]+e[i-3]*MA[3]
x<-c(x,t)
e<-c(e,tt)
}
par(mfrow=c(2,1))
plot(x)
plot(diff(x,1))

#fitting different versions. What I would like to get is fit1 with ARIMA()
fit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)
fit2<-arima(x,c(3,1,3),include.mean=F)
fit3<-arima(diff(x,1),c(3,0,3),include.mean=F)
fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F)
fit5<-arima(diff(x,1),c(3,0,3),method="CSS",include.mean=F)

cbind(fit1$coe,fit2$coe,fit3$coe,fit4$coe,fit5$coe)

সম্পাদনা করুন: বর্গক্ষেত্রের শর্তসাপেক্ষ যোগটি ব্যবহার করে খুব কাছাকাছি আসে তবে এটি খুব বেশি থাকে না। ফিট 1 এর ইঙ্গিতটির জন্য ধন্যবাদ!

সম্পাদনা 2: আমি এটি একটি সদৃশ বলে মনে করি না। 2 এবং 3 পয়েন্টগুলি আমার থেকে পৃথক সমস্যার সমাধান করে এবং আমি পয়েন্ট 1 দ্বারা উল্লিখিত সূচনাটি ওভাররাইড করেও

fit4<-arima(x,c(3,1,3),method="CSS",include.mean=F,init=fit1$coe)

আমি এখনও বিভিন্ন সহগ আছে


fit1কেবলমাত্র 1 এমএ এবং 1 এআর প্যারামিটার রয়েছে: আপনার অর্থ কি fit1<-arma(diff(x,1,lag=1),c(3,3),include.intercept=F)?
স্কর্চচি - মনিকা পুনরায় ইনস্টল করুন

1
আমি ধরে নেব যে আপনি স্কোয়ার ত্রুটির শর্তসাপেক্ষ সংক্ষিপ্ত পরিমাণটি হ্রাস করে নির্দিষ্ট করে দিলে এমনকি ফিটিং অ্যালগরিদমে কিছুটা পার্থক্য রয়েছে। সহায়তার পৃষ্ঠাগুলি arimaউল্লেখ করার জন্য একটি n.condযুক্তি সিরিজের শুরুতে পর্যবেক্ষণের সংখ্যা দেয় যখন এটি গণনা করার সময় উপেক্ষা করা হয় - সম্ভবত এটিই তাই। (কি যাহাই হউক না কেন সর্বোচ্চ সম্ভাবনা ব্যবহার সঙ্গে ভুল?)
পুনর্বহাল মনিকা - Scortchi

AFAIK n.cond মাপসই প্রথম কয়েকটি পর্যবেক্ষণ ব্যবহার করে না। এটি সেখানে আমাকে সাহায্য করেনি। এমএল এর সাথে মোটেও কোনও ভুল নেই। আমি শুধু পার্থক্য বুঝতে চাই।
ব্যবহারকারী 1965813

উত্তর:


10

এর tseries::armaতুলনায় তিনটি ছোট ছোট সমস্যা রয়েছে stats::arimaযার ফলে আর এআরএমএ-তে ভিন্ন ভিন্ন সিরিজের জন্য এআরএমএ মডেলটিতে কিছুটা আলাদা ফলাফল tseries::armaআসে stats::arima

  • সহগের stats::arimaপ্রাথমিক মান: প্রাথমিক আরআর এবং এমএ সহগগুলি শূন্যতে সেট করে, tseries::armaহান্নান এবং রিসানেন (1982) এ বর্ণিত পদ্ধতিটি সহগের প্রাথমিক মানগুলি অর্জন করার জন্য নিযুক্ত করা হয়।

  • উদ্দেশ্য ফাংশনটির স্কেল: উদ্দেশ্যমূলক ফাংশন tseries::armaবর্গক্ষেত্রের শর্তসাপেক্ষ অঙ্কের মান, আরএসএসকে প্রদান করে; stats::arimaআয় 0.5*log(RSS/(n-ncond))

  • অপ্টিমাইজেশন অ্যালগরিদম: ডিফল্টরূপে, নেল্ডার-মাড ব্যবহৃত হয় tseries::arma, যখন stats::arimaবিএফজিএস অ্যালগরিদম নিয়োগ করে।

গত এক যুক্তি মাধ্যমে পরিবর্তন করা যাবে optim.methodমধ্যে stats::arimaকিন্তু অন্যরা কোড পরিবর্তন করতে হবে। নীচে, আমি উত্স কোডের একটি সংক্ষিপ্ত সংস্করণ দেখাব (এই নির্দিষ্ট মডেলের ন্যূনতম কোড) stats::arimaযেখানে উপরে উল্লিখিত তিনটি সমস্যা সংশোধন করা হয়েছে যাতে সেগুলি একই হয় tseries::armaএই বিষয়গুলি সমাধান করার পরে, একই ফলাফল tseries::armaপ্রাপ্ত হয়।


এর ন্যূনতম সংস্করণ stats::arima(উপরে বর্ণিত পরিবর্তনগুলি সহ):

# objective function, conditional sum of squares
# adapted from "armaCSS" in stats::arima
armaCSS <- function(p, x, arma, ncond)
{
  # this does nothing, except returning the vector of coefficients as a list
  trarma <- .Call(stats:::C_ARIMA_transPars, p, arma, FALSE)
  res <- .Call(stats:::C_ARIMA_CSS, x, arma, trarma[[1L]], trarma[[2L]], as.integer(ncond), FALSE)
  # return the conditional sum of squares instead of 0.5*log(res), 
  # actually CSS is divided by n-ncond but does not relevant in this case
  #0.5 * log(res)
  res
}
# initial values of coefficients  
# adapted from function "arma.init" within tseries::arma
arma.init <- function(dx, max.order, lag.ar=NULL, lag.ma=NULL)
{
  n <- length(dx)
  k <- round(1.1*log(n))
  e <- as.vector(na.omit(drop(ar.ols(dx, order.max = k, aic = FALSE, demean = FALSE, intercept = FALSE)$resid)))
      ee <- embed(e, max.order+1)
      xx <- embed(dx[-(1:k)], max.order+1)
      return(lm(xx[,1]~xx[,lag.ar+1]+ee[,lag.ma+1]-1)$coef) 
}
# modified version of stats::arima
modified.arima <- function(x, order, seasonal, init)
{
  n <- length(x)
  arma <- as.integer(c(order[-2L], seasonal$order[-2L], seasonal$period, order[2L], seasonal$order[2L]))
      narma <- sum(arma[1L:4L])
      ncond <- order[2L] + seasonal$order[2L] * seasonal$period
      ncond1 <- order[1L] + seasonal$period * seasonal$order[1L]
      ncond <- as.integer(ncond + ncond1)
      optim(init, armaCSS, method = "Nelder-Mead", hessian = TRUE, x=x, arma=arma, ncond=ncond)$par
}

এখন, উভয় পদ্ধতির তুলনা করুন এবং পরীক্ষা করুন যা একই ফলাফল দেয় ( xপ্রশ্নের মূল অংশে ওপি দ্বারা উত্পন্ন সিরিজটি প্রয়োজন )।

এতে নির্বাচিত প্রাথমিক মানগুলি ব্যবহার করে tseries::arima:

dx <- diff(x)
fit1 <- arma(dx, order=c(3,3), include.intercept=FALSE)
coef(fit1)
#         ar1         ar2         ar3         ma1         ma2         ma3 
#  0.33139827  0.80013071 -0.45177254  0.67331027 -0.14600320 -0.08931003 
init <- arma.init(diff(x), 3, 1:3, 1:3)
fit2.coef <- modified.arima(x, order=c(3,1,3), seasonal=list(order=c(0,0,0), period=1), init=init)
fit2.coef
# xx[, lag.ar + 1]1 xx[, lag.ar + 1]2 xx[, lag.ar + 1]3 ee[, lag.ma + 1]1 
#        0.33139827        0.80013071       -0.45177254        0.67331027 
# ee[, lag.ma + 1]2 ee[, lag.ma + 1]3 
#       -0.14600320       -0.08931003 
all.equal(coef(fit1), fit2.coef, check.attributes=FALSE)
# [1] TRUE

stats::arima(জিরো) এ নির্বাচিত প্রাথমিক মানগুলি ব্যবহার করে :

fit3 <- arma(dx, order=c(3,3), include.intercept=FALSE, coef=rep(0,6))
coef(fit3)
#         ar1         ar2         ar3         ma1         ma2         ma3 
#  0.33176424  0.79999112 -0.45215742  0.67304072 -0.14592152 -0.08900624 
init <- rep(0, 6)
fit4.coef <- modified.arima(x, order=c(3,1,3), seasonal=list(order=c(0,0,0), period=1), init=init)
fit4.coef
# [1]  0.33176424  0.79999112 -0.45215742  0.67304072 -0.14592152 -0.08900624
all.equal(coef(fit3), fit4.coef, check.attributes=FALSE)
# [1] TRUE

মহান কাজ. আপনাকে অনেক ধন্যবাদ! আমার জন্য আমি সহনশীলতার যুক্তি যুক্ত করেছি যাতে আপনার দুটি সমাধানকে সাধারণ আরিমা ফাংশনের সাথে তুলনা করতে সক্ষম হতে পারি এবং এটি সমস্ত মনোযোগের মতো কাজ করে। অনেক ধন্যবাদ!
ব্যবহারকারী 1965813

0

আমি যতদূর বলতে পারি পার্থক্য সম্পূর্ণ এমএ শর্তাদির কারণে। এটি হ'ল আমি যখন আপনার ডেটাটি কেবল এআর শর্তের সাথে ফিট করি তখন পার্থক্যযুক্ত সিরিজের আরএমএ এবং এআরিএমএ সম্মত হয়।

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