Pergunta

I têm um estacionárias série de tempo aos quais Quero ajustar um modelo linear com um termo auto-regressivo para corrigir a correlação de série, ou seja, utilizando a fórmula para a = c1 * Bt + C2 * CT + ut, onde ut = r * ut -1 + et

(ut é um AR (1) termo para corrigir a correlação em série em termos de erro)

Alguém sabe o que usar em R modelar isso?

Graças Karl

Foi útil?

Solução

O href="http://cran.r-project.org/web/packages/GLMMarp/index.html" rel="noreferrer"> GLMMarp pacote arima() onde as co-variáveis ??são especificados via o argumento xreg.

Outras dicas

Existem várias maneiras de fazer isso em R. Aqui são dois exemplos usando o "cintos" conjunto de dados de séries temporais na pacote de conjuntos de dados que vem com R.

A função arima() vem no pacote: estatísticas que está incluído com R. A função recebe um argumento do order=c(p, d, q) formulário onde você pode especificar a ordem do, e o componente de média móvel auto-regressivo, integrado. Em sua pergunta, você sugere que você deseja criar um modelo AR (1) para corrigir a autocorrelação de primeira ordem nos erros e é isso. Podemos fazer isso com o seguinte comando:

arima(Seatbelts[,"drivers"], order=c(1,0,0),
      xreg=Seatbelts[,c("kms", "PetrolPrice", "law")])

O valor para especifica ordem que queremos um modelo AR (1). O compontent xreg deve ser uma série de outros Xs que deseja adicionar como parte de uma regressão. A saída é um pouco como a saída do summary.lm() virou de lado.

Um outro processo alternativo pode estar mais familiarizado com a maneira que você tem modelos de regressão de ajuste é usar gls() na nlme pacote . O código a seguir transforma o objeto de séries temporais Cinto de segurança em uma trama de dados e, em seguida, extratos e adiciona uma nova coluna ( t ) que é apenas um contador no objeto de série temporal ordenada:

Seatbelts.df <- data.frame(Seatbelts)
Seatbelts.df$t <- 1:(dim(Seatbelts.df)[1])

As duas linhas acima está apenas recebendo os dados em forma. Como a função arima() é projetado para séries temporais, pode ler séries temporais objetos com mais facilidade. Para ajustar o modelo com nlme você iria em seguida, executar:

library(nlme)
m <- gls(drivers ~ kms + PetrolPrice + law,
         data=Seatbelts.df,
         correlation=corARMA(p=1, q=0, form=~t))
summary(m)

A linha que começa com "correlação" é a maneira como você passar a estrutura de correlação ARMA para GLS. Os resultados não será exatamente o mesmo porque usos arima() máxima verossimilhança para estimar modelos e usos gls() máxima verossimilhança restrita por padrão. Se você adicionar method="ML" à chamada para gls() você vai obter estimativas idênticas que você tem com a função ARIMA acima.

Qual é a sua função de ligação?

A forma como você descreve soa como uma regressão linear básica com erros autocorrelacionados. Nesse caso, uma opção é a utilização lm para obter uma estimativa consistente de seus coeficientes e uso Newey-West HAC erros padrão .

Eu não tenho certeza que a melhor resposta para GLM em geral.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top