Comment puis-je calculer le R au carré d'une régression avec des erreurs arima en utilisant R?

8

Si j'ai un objet arima comme 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

Comment calculer le R au carré de cette régression?

fmark
la source

Réponses:

16

Une fois que vous avez des erreurs ARMA, ce n'est plus une simple régression linéaire. Il vous faudrait donc définir ce que vous entendez par . Peut-être la corrélation quadratique des ajustés aux réels? Dans ce cas:R2

cor(fitted(a),x3)^2

La fitted()fonction ne fonctionnera que si vous avez chargé le forecastpackage, mais il semble que vous l'ayez déjà fait à en juger par la sortie de votre question.

Dans votre cas, vous n'avez pas d'erreurs ARMA, mais vous avez une différenciation. Il est donc équivalent au modèle linéaire

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 

Bien sûr, c'est une valeur très différente de que d'utiliser simplement les corrélations comme ci-dessus car elle est maintenant calculée sur les différences.R2

Vous devrez définir ce que vous entendez par et à quoi vous voulez l'utiliser. Une fois que vous vous éloignez de la régression habituelle configurée avec une interception et des erreurs iid, cesse d'être défini de manière unique et n'est pas particulièrement utile.R2R2

Rob Hyndman
la source
D'accord, merci pour la réponse utile. J'aurais peut-être dû reformuler ma question, mais vous y avez parfaitement répondu :)
fmark