Wie kann ich das R-Quadrat einer Regression mit Arimafehlern mit R berechnen?

8

Wenn ich ein Arima-Objekt habe wie 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

Wie berechnet man das R-Quadrat dieser Regression?

fmark
quelle

Antworten:

16

Sobald Sie ARMA-Fehler haben, ist dies keine einfache lineare Regression mehr. Sie müssten also definieren, was Sie mit meinen . Vielleicht die quadratische Korrelation von angepassten zu tatsächlichen? In diesem Fall:R.2

cor(fitted(a),x3)^2

Die fitted()Funktion funktioniert nur, wenn Sie das forecastPaket geladen haben , aber es sieht so aus, als hätten Sie dies bereits getan, gemessen an der Ausgabe in Ihrer Frage.

In Ihrem Fall haben Sie keine ARMA-Fehler, aber Sie haben Unterschiede. Es entspricht also dem linearen Modell

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 

Das ist natürlich ein ganz anderer Wert von als nur die Verwendung der Korrelationen wie oben, da er jetzt anhand der Differenzen berechnet wird.R.2

Sie müssen definieren, was Sie mit meinen und wofür Sie es verwenden möchten. Sobald Sie sich von der üblichen Regression entfernen, die mit einem Intercept und iid-Fehlern eingerichtet wurde, ist nicht mehr eindeutig definiert und nicht mehr besonders nützlich.R 2R.2R.2

Rob Hyndman
quelle
Okay, danke für die nützliche Antwort. Vielleicht hätte ich meine Frage umformulieren sollen, aber du hast sie perfekt beantwortet :)
fmark