Я пытаюсь ввести отстающее значение переменной, уже находящейся в моей регрессии, и затем использовать модель аримы для этой новой коллекции переменных.Например, я пытаюсь смоделировать взаимосвязь между смертностью, температурой и уровнями частиц загрязнения, используя регрессию коэффициентов смертности по температуре и уровням частиц загрязнения.Затем вводят лаговую переменную уровней частиц четырьмя неделями ранее.Вот код для этого:
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)
Где temp - это центрированные значения температуры, temp2 - это квадратично-центрированная температура, part - уровень загрязнения частиц в воздухе, а partL4 - уровень содержания частиц за четыре недели.до.Эта регрессия работает как задумано и не дает мне никаких проблем.Однако проблемы возникают, когда я пытаюсь использовать модель аримы в этой новой коллекции переменных.Вот код, который я использую для использования модели arima в исходной коллекции переменных без новой переменной lag:
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) )
Эта модель также работает.Однако когда я пытаюсь ввести переменную с запаздыванием partL4, я получаю сообщение об ошибке:
Ошибка в stats :: arima (xdata, order = c (p, d, q), сезонный = список (order =c (P,: длины 'x' и 'xreg' не совпадают
Когда я проверяю длину cmort и новую коллекцию переменных, используемых в xreg, длины немного отклоняются. Однако, когдаЯ удаляю переменную partL4, как это было в исходном коде, длины совпадают.
Я действительно потерялся в том, как решить эту проблему и запустить модель arima для новой коллекции переменных. Единственная библиотека, которая нуждаетсянужно использовать:
library(astsa)
Любая помощь будет принята с благодарностью, так как я не уверен, как выровнять длины или есть другой лучший способ сделать это.
Вот мой полный код на данный момент (выдает ошибку):
library(astsa)
temp = tempr-mean(tempr)
temp2=temp^2
trend=time(cmort)
partly=lag(part, -4)
ded = ts.intersect(cmort, trend, temp, temp2, part, partL4, dframe=TRUE)
fit <- lm(cmort~trend + temp + temp2 + part + partL4, data=ded, na.action=NULL)
summary(fit)
attach(ded)
tsplot(resid(fit))
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)
detach(ded)