¿Cómo puedo calcular el R cuadrado de una regresión con errores de arima usando R?

8

Si tengo un 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

¿Cómo calcular la R al cuadrado de esta regresión?

fmark
fuente

Respuestas:

16

R2

cor(fitted(a),x3)^2

La fitted()función solo funcionará si ha cargado el forecastpaquete, pero parece que ya lo hizo a juzgar por el resultado de su pregunta.

En su caso, no tiene errores ARMA, pero sí tiene diferencias. Por lo tanto, es equivalente al modelo lineal.

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 

R2

R2R2

Rob Hyndman
fuente
Bien, gracias por la útil respuesta. Tal vez debería haber reformulado mi pregunta, pero la respondiste perfectamente :)
fmark