Bagaimana saya bisa menghitung R-kuadrat dari regresi dengan kesalahan arima menggunakan R?

8

Jika saya memiliki objek arima seperti 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

Bagaimana menghitung R kuadrat dari regresi ini?

fmark
sumber

Jawaban:

16

Setelah Anda memiliki kesalahan ARMA, itu bukan regresi linier sederhana lagi. Jadi, Anda harus mendefinisikan apa yang Anda maksud denganR2. Mungkin korelasi kuadrat pas dengan aktual? Dalam hal itu:

cor(fitted(a),x3)^2

The fitted()Fungsi hanya akan bekerja jika Anda telah dimuat forecastpaket, tapi sepertinya Anda telah melakukan itu kalau dilihat dari output dalam pertanyaan Anda.

Dalam kasus Anda, Anda tidak memiliki kesalahan ARMA, tetapi Anda memang memiliki perbedaan. Jadi itu setara dengan model linier

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 

Tentu saja, itu adalah nilai yang sangat berbeda R2 daripada hanya menggunakan korelasi seperti di atas karena sekarang sedang dihitung pada perbedaan.

Anda perlu mendefinisikan apa yang Anda maksud dengan R2, dan untuk apa Anda ingin menggunakannya. Setelah Anda menjauh dari regresi yang biasanya diatur dengan kesalahan intersep dan iid,R2 tidak lagi didefinisikan secara unik dan tidak terlalu berguna.

Rob Hyndman
sumber
Oke, terima kasih atas jawaban yang bermanfaat. Mungkin saya seharusnya mengulangi pertanyaan saya, tetapi Anda menjawabnya dengan sempurna :)
fmark