Neu in

Stata schneller machen

Stata legt Wert auf Genauigkeit und Geschwindigkeit. Es gibt oft einen Kompromiss zwischen den beiden, aber Stata strebt danach, den Benutzern das Beste aus beiden Welten zu bieten. Wir optimieren und verbessern kontinuierlich unsere Routinen, um moderne Rechenleistung und Algorithmen zu nutzen, damit Stata noch schneller läuft.
In Stata 17 haben wir die Algorithmen hinter sort und collapse aktualisiert, um diese Befehle schneller zu machen. Viel schneller. Da der Befehl sort von vielen anderen Stata-Befehlen verwendet wird, sind auch diese Befehle schneller. sort ist irgendwo zwischen 1,5 und 6 Mal schneller, wie in Tabelle 1 unten gezeigt wird. Bei 10 Millionen Beobachtungen und 20 Variablen sank die Zeit beispielsweise von fast 20 Sekunden in Stata/SE 16 auf fast 3 Sekunden in Stata/SE 17!

Höhepunkte

    • sortieren ist viel schneller.
    • collapse ist viel viel schneller.
    • MKL-gestützte Mata-Funktionen und -Operatoren sind schneller.
    • Gemischte Modelle sind schneller.

import delimited is now parallelized in Stata/MP.

Table 1: Stata 17 versus Stata 16 timings in seconds for 20 variables and different observation numbers and edition combinations
  Mean timings in seconds
Observations and edition Stata 17 Stata 16 Speedup
10,000  
SE 0.08 0.35 4.42
MP4 0.07 0.14 2.02
MP8 0.06 0.10 1.79
100,000  
SE 0.14 0.54 3.75
MP4 0.10 0.23 2.36
MP8 0.08 0.16 1.97
1,000,000  
SE 0.25 0.77 3.14
MP4 0.16 0.44 2.83
MP8 0.14 0.32 2.54
10,000,000  
SE 3.34 19.76 5.92
MP4 2.06 6.90 3.35
MP8 1.89 5.50 2.91
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Der Befehl „Kollaps“ erstellt einen Datensatz mit zusammenfassenden Statistiken und ist einer der am häufigsten verwendeten Datenverwaltungsbefehle. Mit der Größe der Daten wächst zwangsläufig auch die Laufzeit. In Stata 17 erreicht collapse je nach Größe des Datensatzes Geschwindigkeitssteigerungen zwischen 6 und 13 Mal für die Berechnung eines einfachen Mittelwerts und zwischen 40 und 70 Mal für die Berechnung von Statistiken wie Medianen und Standardabweichungen. Tabelle 2 zeigt die Ergebnisse für das Kollabieren eines Datensatzes mit 10.000.000 Beobachtungen und einer unterschiedlichen Anzahl von kollabierten Variablen für den Fall, dass wir Mediane und Standardabweichungen berechnen.

Table 2: Stata 17 versus Stata 16 timings in seconds for 10,000,000 observations for different variable number and edition combinations
Variables and edition Stata 17 Stata 16 Speedup
10  
SE .3412143 13.96871 40.96581
MP4 .23 16.39493 71.29675
MP8 .2091429 13.41664 64.17162
100  
SE .3068571 13.86514 45.1849d
MP4 .2205714 16.06886 72.86166
MP8 .196 13.41314 68.43816
1,000  
SE .3437143 13.994 40.73298
MP4 .2277143 16.34614 71.79339
MP8 .2117143 13.39286 63.26852
10,000  
SE .3392857 13.92886 41.09007
MP4 .2287143 16.149 70.61243
MP8 .207 13.36543 64.58582
100,000  
SE .3177143 13.97943 44.03442
MP4 .224 16.22057 72.43024
MP8 .1944286 13.38586 68.85059
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Für Stata 17 haben wir auch Geschwindigkeitsverbesserungen bei der Schätzung erreicht. Das lineare Algebra-Paket (LAPACK), das vielen Funktionen und Operatoren von Stata zugrunde liegt, wird jetzt von der Intel Math Kernel Library (MKL) unterstützt. Wie viel schneller ist die neue MKL? Die Multiplikation einer reellen 5.000-mal-5.000-Matrix in Stata/SE mit einer reellen Matrix der gleichen Dimension dauert mit MKL in Stata 17 etwa 13 Sekunden im Vergleich zu 70 Sekunden in Stata 16.
Zeitliche Abfolge der Multiplikation von zwei reellen Matrizen in Sekunden:

Edition Size MKL non-MKL
MP8 5,000 by 5,000 2.55 10.26
MP8 10,000 by 10,000 17.28 85.60
   
MP4 5,000 by 5,000 3.62 15.95
MP4 10,000 by 10,000 28.22 127.24
   
SE 5,000 by 5,000 13.64 70.61
SE 10,000 by 10,000 108.33 566.99
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Timing von cholesky() in Sekunden:

Edition Size MKL non-MKL
MP8 5,000 by 5,000 0.42 16.69
MP8 10,000 by 10,000 2.91 133.60
   
MP4 5,000 by 5,000 0.69 16.69
MP4 10,000 by 10,000 5.03 133.70
   
SE 5,000 by 5,000 2.41 18.62
SE 10,000 by 10,000 16.66 133.63
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

LAPACK wird von vielen Abschätzungsbefehlen bei Berechnungen verwendet, so dass diese automatisch auch schneller sind.
Der Befehl „import delimited“ zum Importieren von Daten aus CSV- und anderen begrenzten Textdateien ist jetzt in Stata/MP parallelisiert. Er importiert große Datensätze bis zu viermal schneller in Stata 17.
Nicht zuletzt ist der Befehl „Mixed“ für die Anpassung von mehrstufigen Mixed-Effects-Modellen schneller. In unseren Zeitmessungen laufen Modelle mit 10.000 Panels, 10 Zeitperioden und 5 zufälligen Steigungsparametern in Stata 17 2 bis 3 Mal schneller als in Stata 16. Ähnliche Geschwindigkeitsverbesserungen traten für unterschiedliche Anzahlen von Panels, Zeitperioden und Steigungskoeffizienten auf.
Wir suchen ständig nach Möglichkeiten, Stata schneller zu machen. Wir untersuchen, kodieren und testen aktiv neue Algorithmen in der Datenverwaltung und in den Schätzungsroutinen, und wir halten Sie über die neuesten Entwicklungen auf dem Laufenden.

Referenzen

Hunter, J. D. 2007. Matplotlib: A 2D Graphics Environment. Computing in Science & Engineering 9: 90–95.
McDowell, A., A. Engel, J. T. Massey, and K. Maurer. 1981. Plan and operation of the Second National Health and Nutrition Examination Survey, 1976–1980. Vital and Health Statistics 1(15): 1–144.
Mckinney, W. 2010. Data Structures for Statistical Computing in Python. Proceedings of the 9th Python in Science Conference, 56–61. (publisher link).
Oliphant, T. E. 2006. A Guide to NumPy, 2nd ed. Austin, TX: Continuum Press.
Péz, F., and B. E. Granger. 2007. IPython: A System for Interactive Scientific Computing, Computing in Science and Engineering 9: 21–29. DOI:10.1109/MCSE.2007.53 (publisher link)