Como posso calcular o R-quadrado de uma regressão com erros de arima usando R?

8

Se eu tiver um objeto arima como a:

set.seed(100)
x1 <- cumsum(runif(100))
x2 <- c(rnorm(25, 20), rep(0, 75))
x3 <- x1 + x2

dummy = c(rep(1, 25), rep(0, 75))

a <- arima(x3, order=c(0, 1, 0), xreg=dummy)
print(a)

.

Series: x3 
ARIMA(0,1,0)                    

Call: arima(x = x3, order = c(0, 1, 0), xreg = dummy) 

Coefficients:
        dummy
      17.7665
s.e.   1.1434

sigma^2 estimated as 1.307:  log likelihood = -153.74
AIC = 311.48   AICc = 311.6   BIC = 316.67

Como calcular o R ​​ao quadrado dessa regressão?

fmark
fonte

Respostas:

16

Depois de ter erros ARMA, não é mais uma regressão linear simples. Então você teria que definir o que você quer dizer com . Talvez a correlação quadrada de ajustado a reais? Nesse caso:R2

cor(fitted(a),x3)^2

A fitted()função funcionará apenas se você carregou o forecastpacote, mas parece que você já fez isso a julgar pela saída da sua pergunta.

No seu caso, você não possui erros ARMA, mas possui diferenciação. Portanto, é equivalente ao modelo linear

b <- lm(diff(x3) ~ diff(dummy) - 1)
summary(b)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
diff(dummy)   17.766      1.149   15.46   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 1.149 on 98 degrees of freedom
Multiple R-squared: 0.7092,     Adjusted R-squared: 0.7062 
F-statistic:   239 on 1 and 98 DF,  p-value: < 2.2e-16 

Obviamente, esse é um valor muito diferente de que apenas usar as correlações como acima, porque agora está sendo computado nas diferenças.R2

Você precisará definir o que você quer dizer com e para o qual deseja usá-lo. Depois que você se afasta da regressão usual configurada com erros de interceptação e iid, deixa de ser definido de maneira única e não é particularmente útil.R 2R2R2

Rob Hyndman
fonte
Ok, obrigado pela resposta útil. Talvez eu devesse ter reformulado a minha pergunta, mas você respondeu perfeitamente :)
fmark