Frage

Ich erstelle eine einfache Kointegrationsfunktion mit add.test aus tseries-Paketen

cointegration <- function(vals)
{
    library(tseries)

    beta <- coef(lm(vals[,2] ~ vals[,1] + 0, data = vals))[1]
    names(beta) <- NULL
    res <- adf.test(vals[,2] - beta*vals[,1], alternative = "stationary", k = 0)
    return( list(beta = beta, p.value = res$p.value) )
}

Anscheinend hat adf.test eine Untergrenze des gedruckten p-Werts bei 0,01.Jeder Wert, der kleiner als der p-Wert ist, erzeugt eine Warnmeldung:

Warning message:
In adf.test(vals[, 2] - beta * vals[, 1], alternative = "stationary",  :
  p-value smaller than printed p-value

Ist es möglich, dass adf.test stattdessen einen genaueren p-Wert ausdruckt?

Ich weiß, dass die alternative Möglichkeit darin besteht, die Warnmeldung zu unterdrücken:

res <- suppressWarnings(adf.test(vals[,2] - beta*vals[,1],
                        alternative = "stationary", k = 0))

Aber es wäre schön, einen genaueren p-Wert zu drucken.

Danke

War es hilfreich?

Lösung

Aus der Hilfedatei von ?adf.test:

Die p-Werte werden aus Tabelle 4.2, S. 1, interpoliert.103 von Banerjee et al.(1993).Wenn sich die berechnete Statistik außerhalb der Tabelle kritischer Werte befindet, wird eine Warnmeldung generiert.

Die kurze Antwort lautet also: Nein, Sie können keine „genaueren“ p-Werte erhalten.Zumindest nicht direkt.Normalerweise macht es sowieso wenig Sinn, etwas anderes zu melden als p<0.01.

Wenn Sie wirklich den „exakten“ p-Wert erhalten möchten, sollten Sie sich wahrscheinlich die folgende Referenz ansehen.Ich habe keinen Zugriff darauf, aber sie erklären wahrscheinlich, wie sie auf ihre „Tabelle der kritischen Werte“ gekommen sind, sodass es möglicherweise möglich ist, sie zu erweitern.

A.Banerjee, J.J.Dolado, J.W.Galbraith und D.F.Hendry (1993):Kointegration, Fehlerkorrektur und die ökonometrische Analyse nicht-stationärer Daten, Oxford University Press, Oxford.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top