Come calcolare il valore p dei parametri per il modello ARIMA in R?


23

Durante la ricerca di serie temporali in R, ho scoperto che arima fornisce solo i valori dei coefficienti e i loro errori standard del modello montato. Tuttavia, voglio anche ottenere il valore p dei coefficienti.

Non ho trovato alcuna funzione che fornisca il significato di coef.

Quindi desidero calcolarlo da solo, ma non conosco il grado di libertà nella distribuzione t o chisq dei coefficienti. Quindi la mia domanda è come ottenere i valori p per i coefficienti del modello arima montato in R?


9
Perché vuoi il valore p? I test di significatività per i coefficienti di un modello AR non sono particolarmente utili in quanto la significatività non è un buon modo per selezionare l'ordine del modello. Utilizzare invece l'AIC.
Rob Hyndman,

1
Spesso più di un modello si adatta bene ai dati. Quindi in genere è bello avere più di una diagnostica. Quindi, se uso già pacf / acf, AIC / BIC (forse anche l'accuratezza delle previsioni) e non riesco ancora a scegliere tra due modelli - c'è qualcosa di sbagliato nell'osservare anche il significato dei coefficienti?
hans0l0

Risposte:


4

Il "valore t" è il rapporto tra il coefficiente e l'errore standard. I gradi di libertà (ndf) sarebbero il numero di osservazioni meno l'ordine massimo di differenza nel modello meno il numero di coefficienti stimati. Il "valore F" sarebbe il quadrato del "valore t" Per calcolare esattamente la probabilità dovresti chiamare una funzione chi-quadrato non centrale e passare il valore F e i gradi di libertà (1, ndf) o forse semplicemente chiamare una ricerca della funzione F.


Grazie molto! L'ho scritto in questo modo ... Ma con mia sorpresa che quasi tutti i parametri sono insignificanti ... Ma in SAS dice che sono significativi ... Quindi dubito che ci siano errori nelle mie parole di programmazione ...
Lisa,

cosa ho scritto: t = rep (0,5) std = rep (0,5) pvalue = rep (0,5) nobs = 369 npara = 5 for (i in 1: 5) {std [i] = sqrt ( fit coef [i] / std [i] pvalue [i] = 1 - pt (t [i], nobs-npara) }var.coef[i,i])t[i]=fit
Lisa,

L'uso dei risultati di un programma SAS non descritto difficilmente costituisce prova della correttezza statistica. SAS non è un oracolo. Peccato che il popup SO-AskAnExpert introdotto il 1 aprile sia così circolare nella sua strategia di ragionamento, eh.
DWin

22

Poiché arimautilizza la massima probabilità di stima, i coefficienti sono assintoticamente normali. Quindi dividi i coefficienti per i loro errori standard per ottenere le statistiche z e quindi calcolare i valori p. Ecco l'esempio con in R con il primo esempio dalla arima pagina di aiuto:

> aa <- arima(lh, order = c(1,0,0))
> aa

Call:
arima(x = lh, order = c(1, 0, 0))

Coefficients:
         ar1  intercept
      0.5739     2.4133
s.e.  0.1161     0.1466

sigma^2 estimated as 0.1975:  log likelihood = -29.38,  aic = 64.76
> (1-pnorm(abs(aa$coef)/sqrt(diag(aa$var.coef))))*2
         ar1    intercept 
1.935776e-07 0.000000e+00 

L'ultima riga fornisce i valori p.


H0:coef=0.0H1:coef0.0

È possibile farlo tramite il rapporto di verosimiglianza, poiché il modello viene stimato usando la verosimiglianza.
mpiktas,

λ2λχ2nn

10

Puoi anche usare coeftestdal lmtestpacchetto:

> aa <- arima(lh, order = c(1,0,0))

> coeftest(aa)

z test of coefficients:

          Estimate Std. Error z value  Pr(>|z|)    
ar1        0.57393    0.11614  4.9417 7.743e-07 ***
intercept  2.41329    0.14661 16.4602 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.