2016-06-25 5 views
1

Ich versuche, das folgende Skript mit the StatsModels library auszuführen:Wie führe ich ein Skript in Python auf mehreren Zeitreihen?

cadf = ts.adfuller(df1.spread) 
print 'Augmented Dickey Fuller test statistic =',cadf[0] 
print 'Augmented Dickey Fuller p-value =',cadf[1] 
print 'Augmented Dickey Fuller 1%, 5% and 10% test statistics =',cadf[4] 

auf meinem Datenrahmen, meine Daten-Rahmen umfasst derzeit von mehreren Zeitreihen (200+), und ich möchte führen Sie das obige Skript auf jede Zeitreihe. Im Folgenden finden Sie ein Beispiel für den Datenrahmen:

Sn.No A-B  B-C   A-C 
    1  10  11.15  13.22 
    2  11  12.36  14.75 
    3  10.75 11.54  14.21 

So würde Ich mag den ADF Testskript auf A-B, B-C und A-C und erhalten die Teststatistik/Ausgabe für jeden von ihnen laufen.

+0

Welche Statistikbibliothek verwenden Sie? – noumenal

+1

Hey Mann. Mit der statsmodel-Bibliothek –

+0

dachte ich mir. Versuchen Sie, Bibliotheken in Ihre Fragen einzubeziehen. Macht es ein bisschen leichter zu beantworten. – noumenal

Antwort

0

Um Spalten einzeln zuzugreifen, anstelle des gesamten Datenrahmen, im Grunde:

df1['A-B'] 

werden Sie die erste Spalte erhalten. Runden Sie sie in einer Liste zusammen:

columns = ['A-B', 'B-C', 'A-C'] 

Wenn Sie mehr als 200 Spalten haben, sollten Sie sie unterschiedlich aufrufen. Angenommen, Sie 200. So etwas haben sollte möglich sein:

columns = range(200) 

In diesem Fall, dass Sie unten nicht brauchen die xrange Funktion, aber wie so:

df1.iloc(column) 

Der Grund, warum ich weiß, das ist weil ich the source code for dataframe in the statmodels library nachgeschlagen habe, was anscheinend ein Pandas dataframe ist. Angenommen, Sie müssen den Spread wie im obigen Beispiel eingeben, sammeln Sie die Ausgabestatistik in einer Liste mit einem List Verständnis Ausdruck.

cadfs = [ts.adfuller(df1[column].spread) for column in columns] 

Stattdessen, wenn Sie mit dem numerischen Index zugreifen:

cadfs = [ts.adfuller(df1.iloc(column).spread) for column in columns] 

Um den Code lesbar Verwendung lokalen Konstanten zu machen.

TEST = 0  
P = 1 
PERCENTILES = 4 

values = [cadfs[column][TEST] for column in xrange(columns)] 
ps  = [cadfs[column][P] for column in xrange(columns)] 
pct = [cadfs[column][PERCENTILES] for column in xrange(columns)] 

print 'Augmented Dickey Fuller Test' 
print 'ADF Test Statistics - p - Percentiles 1%, 5% and 10%' 
print values, ps, pct 
+0

Hi Noumenal, mit der oben genannten Logik, schrieb ich den Code, aber ich bin auf einen Fehler stoßen, ich bin ein img mit dem Code und Fehler, wäre extrem hilfreich, wenn Sie mich in Bezug darauf führen könnte. [Link] (http://imgur.com/SRgUK7A) –

+0

Ich bin mir nicht sicher, warum das passiert, aber es scheint, dass x nicht definiert ist oder dass seine Form keine Länge hat. – noumenal

Verwandte Themen