Функция Sarima r возвращает ошибку: длины 'x' и 'xreg' не совпадают - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь изменить код учебника, чтобы добавить регрессор, значение которого было получено за 4 недели до этого, при этом предполагается, что ошибка больше не является белым шумом.Я пытаюсь объединить два примера из книги, оба из которых работают сами по себе, но у меня проблемы с их объединением.Вот код, который включает в себя включение значения за 4 недели до этого: partL4.

temp = tempr-mean(tempr)
ded = ts.intersect(cmort, trend=time(cmort), temp, temp2=temp^2, part, partL4=lag(part,-4))
summary(fit <- lm(cmort~trend + temp + temp2 + part + partL4, data=ded))
pairs(ded) # easiest way is to do all of them
cor(ded)
AIC(fit)/nrow(ded) - log(2*pi)
BIC(fit)/nrow(ded) - log(2*pi)

Затем, вот код из книги, который использует ту же самую предыдущую регрессию, но без запаздывающего термина:

trend = time(cmort); temp = tempr - mean(tempr); temp2 = temp^2
fit = lm(cmort~trend + temp + temp2 + part, na.action=NULL)
acf2(resid(fit), 52) # implies AR2
sarima(cmort, 2,0,0, xreg=cbind(trend, temp, temp2, part) )

Наконец, вот моя попытка объединить их:

temp = tempr-mean(tempr)
temp2=temp^2
trend=time(cmort)
partL4=lag(part, -4)

ded = ts.intersect(cmort, trend, temp, temp2, part, partL4)

summary(fit <- lm(cmort~trend + temp + temp2 + part + partL4, data=ded, na.action=NULL))

acf2(resid(fit)) #implies AR2
sarima(cmort, 2,0,0, xreg=cbind(trend, temp, temp2, part, partL4))
pairs(ded) # easiest way is to do all of them
cor(ded)
AIC(fit)/nrow(ded) - log(2*pi)
BIC(fit)/nrow(ded) - log(2*pi)

Однако, когда я пытаюсь запустить его, я получаю следующую ошибку:

Ошибка в статистике:: arima (xdata, order = c (p, d, q), сезонный = список (order = c (P,: длины 'x' и 'xreg' не совпадают

Я неполностью уверен в том, почему я получаю эту ошибку, и я был бы признателен за некоторое понимание ее исправления. Спасибо!

...