@ Комментарий Гэвина Симпсона, приведенный выше, о том, что попытка оценить модель с 5 параметрами из 10 наблюдений очень обнадеживающая, верна.Общее правило заключается в том, что вы должны иметь как минимум 10 раз больше точек данных, чем параметров, и это для стандартных фиксированных параметров эффекта / регрессии.(Как правило, параметры структуры отклонения, такие как параметры AR, даже немного сложнее / для оценки требуется немного больше данных, чем параметров регрессии.)
Тем не менее, в идеальном мире можно рассчитывать на оценку параметров даже из переоснащенных моделей.,Давайте просто рассмотрим, что происходит:
archlogfl <- c(2.611840,2.618454,2.503317,
2.305531,2.180464,2.185764,2.221760,2.211320,
2.105556,2.176747)
co2 <- c(597.5778,917.9308,1101.0430,679.7803,
886.5347,597.0668,873.4995,
816.3483,1427.0190,423.8917)
Посмотрите на данные,
plot(archlogfl~co2,type="b")
library(nlme)
g0 <- gls(archlogfl~co2)
plot(ACF(g0),alpha=0.05)
Это автокорреляционная функция остатков,с 95% доверительными интервалами (обратите внимание, что это по кривой доверительные интервалы, поэтому мы ожидаем, что примерно 1/20 точек выйдут за эти границы в любом случае).
Так что действительно есть некоторые(графическое) доказательство некоторой автокорреляции здесь.Мы подберем модель AR (1) с подробным выводом (чтобы понять масштаб, по которому оцениваются эти параметры, вам, вероятно, придется покопаться в Пиньейру и Бейтсе 2000: то, что представлено в распечатке, это неограниченные значения параметров, в сводках напечатаны ограниченные *1021* значения ...
g1 <- gls(archlogfl ~co2,correlation=corARMA(p=1),
control=glsControl(msVerbose=TRUE))
Давайте посмотрим, что осталось после подгонки к AR1:
plot(ACF(g1,resType="normalized"),alpha=0.05)
Теперь установите AR (2):
g2 <- gls(archlogfl ~co2,correlation=corARMA(p=2),
control=glsControl(msVerbose=TRUE))
plot(ACF(g2,resType="normalized"),alpha=0.05)
Как вы правильно заявили, пытаясь перейти к AR (3) не удается.
gls(archlogfl ~co2,correlation=corARMA(p=3))
Вы можете играть с допусками, начальными условиями и т. д., но я не думаю, что это сильно поможет.
gls(archlogfl ~co2,correlation=corARMA(p=3,value=c(0.9,-0.5,0)),
control=glsControl(tolerance=1e-4,msVerbose=TRUE),verbose=TRUE)
Если бы я был совершенно отчаяннымчтобы получить эти значения, я бы написал свою собственную обобщенную функцию наименьших квадратов, построив матрицу корреляции AR (3) с нуля, и попытался бы запустить ее с немного более надежным оптимизатором, но у меня действительно была бы хорошая причина для работычто трудно ...
Еще один измененныйnative должен использовать arima
для подгонки к остаткам из подгонки gls
или lm
без автокорреляции: arima(residuals(g0),c(3,0,0))
.(Вы можете видеть, что если вы сделаете это с arima(residuals(g0),c(2,0,0))
, ответы будут близки (но не совсем равны) к результатам gls
с corARMA(p=2)
.)