سؤال

data <-c(88, 84, 85, 85, 84, 85, 83, 85, 88, 89, 91, 99, 104, 112, 126, 138, 146,151,   150, 148, 147, 149, 143, 132, 131, 139, 147, 150, 148, 145, 140, 134, 131, 131, 129, 126, 126, 132, 137, 140, 142, 150, 159, 167, 170, 171, 172, 172, 174, 175, 172, 172, 174, 174, 169, 165, 156, 142, 131, 121, 112, 104, 102, 99, 99, 95, 88, 84, 84, 87, 89, 88, 85, 86, 89, 91, 91, 94, 101, 110, 121, 135, 145, 149, 156, 165, 171, 175, 177, 182, 193, 204, 208, 210, 215, 222, 228, 226, 222, 220)

لماذا تختلف نماذج ARMA في الاختلافات الأولى في البيانات عن نماذج أريما المقابلة؟

for (p in 0:5)
{
for (q in 0:5)
{
#data.arma = arima(diff(data), order = c(p, 0, q));cat("p =", p, ", q =", q, "AIC =",  data.arma$aic, "\n");
data.arma = arima(data, order = c(p, 1, q));cat("p =", p, ", q =", q, "AIC =", data.arma$aic, "\n");
}
}

نفسه مع Arima(data,c(5,1,4)) و Arima(diff(data),c(5,0,4)) في حزمة التوقعات. يمكنني الحصول على الاتساق المطلوب مع

auto.arima(diff(data),max.p=5,max.q=5,d=0,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE);
auto.arima(data,max.p=5,max.q=5,d=1,approximation=FALSE, stepwise=FALSE, ic ="aic", trace=TRUE);

ولكن يبدو أن صاحب الحد الأدنى من تقدير AIC لم يتم النظر في خوارزمية Auto.Arima؛ ومن هنا جاء الاختيار المنخفض الأمثل ل ARMA (3،0) بدلا من Arma (5،4) يتصرف في الاختلافات الأولى. سؤال ذو صلة هو مقدار تقديرات AIC لا ينبغي أن تختلف قبل أن يعتبر المرء نموذج واحد أفضل من الآخر ليس لديه القليل للقيام برمجة Wuth - يجب النظر في أصغر حامل AIC على الأقل / على الأقل، على الرغم من أن 9 معاملات قد تكون أكثر من اللازم لتوقعات من 100 ملاحظة.

أسئلتي الخاصة هي:

1) نسخة متجهة من حلقة مزدوجة لذلك هو أسرع؟

2) لماذا arima(5,1,4) يتصرف على البيانات تختلف arma(5,4) يتصرف في الاختلافات الأولى للبيانات؟ أي واحد يجب الإبلاغ عنه؟

3) كيف يمكنني فرز إخراج AICS بحيث يأتي أصغر أولا؟

شكرا.

هل كانت مفيدة؟

المحلول

هناك الكثير من الأسئلة والمشكلات التي أثيرت هنا. سأحاول الرد على كل منهم.

Arima() هو مجرد التفاف ل arima(), ، لذلك سوف يعطي نفس النموذج.

يعالج ARIMA () نموذجا مع اختلاف باستخدام منتشر قبل. هذا ليس هو نفسه فقط اختلاف البيانات قبل تركيب النموذج. وبالتالي، سوف تحصل على نتائج مختلفة قليلا من arima(x,order=c(p,1,q)) و arima(diff(x),order=c(p,0,q)).

auto.arima() يعالج الاختلاف بشكل مباشر ولا يستخدم منتشرا قبل التركيب. لذلك سوف تحصل على نفس النتائج من auto.arima(x,d=1,...) و auto.arima(diff(x),d=0,...)

auto.arima() لديه حجة max.order الذي يحدد الحد الأقصى P + Q. بشكل افتراضي، max.order=5, ، بحيث arima(5,1,4) لن يعتبر. زيادة max.order إذا كنت ترغب في النظر في هذه النماذج الكبيرة (على الرغم من أنني لن أوصي به).

لا يمكنك من توحيد الحلقة التي تنطوي على التحسين غير الخطي في كل تكرار.

إذا كنت ترغب في فرز الإخراج الخاص بك، فستحتاج إلى حفظه إلى data.Frame ثم فرز في العمود ذي الصلة. يكتشف الرمز حاليا النتائج حيث يذهب ويتم حفظ أي شيء باستثناء أحدث طراز مزود.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top