Ergebnis eines Tests in eine Matrix extrahieren

Methoden der Zeitreihenanalyse

Moderator: schubbiaschwilli

Antworten
daten_tim

Ergebnis eines Tests in eine Matrix extrahieren

Beitrag von daten_tim »

Liebe Leute,
ich will mit einer Schleife recht viele des folgenden Einheitswurzel-Tests für entsprechende Zeitreihen machen:

Code: Alles auswählen

out = ur.df(residuals(test), type = c("none"), lags = 3, selectlags = c("BIC"))
store.adf[i,] = out
Gern würde ich die Ergebnisse, also wirklich nur den t-value des Einheitswurzeltests, speichern - z.B. in meiner Matrix store.adf. Das geht aber nicht.
Mir bringt es aber gar nichts, in der console zigmal die Ergebnisse so angezeigt zu bekommen:

Code: Alles auswählen

> print(out)

############################################################### 
# Augmented Dickey-Fuller Test Unit Root / Cointegration Test # 
############################################################### 

The value of the test statistic is: -2.9106 


hat jemand eine Idee, wie ich die t-statistic da einzeln in meine Matrix schreiben kann?

beste Grüße

tim
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: Ergebnis eines Tests in eine Matrix extrahieren

Beitrag von jogo »

Hallo Tim,

aus welchem Paket ist denn die Funktion ur.df() :?:
Nachdem Du das Paket geladen hast mit library("...") kannst Du im Hilfetext zu der Funktion nachsehen, was für ein Objekt von der Funktion zurückgeliefert wird:

Code: Alles auswählen

help(ur.df)
Schau also im Abschnitt Value nach, wie das Objekt aufgebaut ist und greife auf einzelne Teile des Objektes zu, z.B. mit $ oder [..] oder [[..]] :idea:

Gruß, Jörg
Nachtrag: Inzwischen weiß ich, dass es wohl das Paket urca ist. https://cran.r-project.org/web/packages/urca/urca.pdf
Im Hilfetext steht, dass das Ergebnis der Funktion ein Objekt der Klasse ur.df ist. Wenn man dem Link zu der Beschreibung der Klasse folgt, steht dort:
Description
This class contains the relevant information by applying the augmented Dickey-Fuller unit root test
to a time series.
Slots
y: Object of class "vector": The time series to be tested.
model: Object of class "character": The type of the deterministic part, either "none", "drift"
or "trend". The latter includes a constant term, too.
lags: Object of class "integer": Number of lags for error correction.
cval: Object of class "matrix": Critical values at the 1%, 5% and 10% level of significance.
teststat: Object of class "matrix": Value of the test statistic.
testreg: Object of class "ANY": The summary output of the test regression.
res: Object of class "vector": The residuals of the test regression.
test.name: Object of class "character": The name of the test, i.e ‘Augmented-Dickey-Fuller
Test’.

Das Wort Slots deutet auf ein S4-Objekt hin. Man muss also mit @ auf die einzelnen Slots zugreifen. Der/das Dich interessierende Slot ist teststat
Die Lösung lautet:

Code: Alles auswählen

out@teststat
Liebe Leute,
ich will mit einer Schleife recht viele des folgenden Einheitswurzel-Tests für entsprechende Zeitreihen machen: ...
Da gibt es bestimmt auch etwas mit ~apply() ..., das man an dieser Stelle machen könnte.
daten_tim

Re: Ergebnis eines Tests in eine Matrix extrahieren

Beitrag von daten_tim »

Super. Vielen Dank. Das mit dem S4-Objekt hatte ich auch schon gesehen, aber das mit dem @ wusste ich nicht.
Das funktioniert jetzt super.
danke
tim
Antworten