Für PSPP braucht man nicht unbedingt eine GUI (siehe Blog Beitrag). Man kann PSPP auch Headless auf der Kommandozeil ausführen.
Die Kommandozeile in PSPP funktioniert ähnlich wie die in anderen Statistikprogrammen wie SPSS. Sie ermöglicht es Ihnen, SPSS-Syntaxbefehle direkt einzugeben und auszuführen, um Datenverarbeitung und -analyse durchzuführen.
Hier zeige ich an zwei Beispielen (Flughöhe und Bluttransfusionen/Eigenblutspende) wie die Kommandozeile in PSPP verwendet wird
Wir brauchen nur mit
sudo apt install pspp
das Programm installieren und können Testen ob es läuft mit
pspp -h
Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
pspp -h PSPP, ein Programm zur statistischen Analyse von Stichproben. Befehl: pspp [OPTIONEN]... DATEI... Die gezeigten Argumente für die Langform der Optionen finden auch in der entsprechenden Kurzform der Optionen Anwendung. Ausgabeoptionen: -o, --output=DATEI Ausgabe in DATEI, Voreinstellung des Dateiformats aus dem Dateinamen -O format=FORMAT überschreibt das Format aus der vorhergehenden Option -o -O OPTION=WERT setzt die Ausgabeoption um die vorhergehende Option -o anzupassen -O device={terminal|listing} überschreibt den Gerätetyp der vorhergehenden Option -o -e, --error-file=DATEI Fehler, Warnungen und Mitteilungen werden an DATEI angehängt --no-output das voreingerstellte Ausgabegerät wird ausser Kraft gesetzt Unterstützte Ausgabeformate: csv html list odt pdf ps spv svg txt Sprachoptionen: -I, --include=VERZEICHNIS füge das VERZEICHNIS dem Suchpfad hinzu -I-, --no-include Löschung des Suchpfads -r, --no-statrc Ausführung der rc-Datei beim Start wird deaktiviert -a, --algorithm={compatible|enhanced} auf `compatible' setzen, um auch von fehlerhaften Algorithmen Ausgaben erzeugen zu lassen -x, --syntax={compatible|enhanced} auf `compatible' setzen, um PSPP-Erweiterungen auszuschalten -b, --batch interpretiere die Syntax im Batch-Modus -i, --interactive interpretiere die Syntax im interaktiven Modus --syntax-encoding=KODIERUNG legt die Kodierung der Syntaxdatei fest -s, --safer unterbindet unsichere Operationen Voreigestellter Suchpfad: . /home/pi/.pspp /usr/share/pspp Information: -h, --help Anzeige dieses Hilfetextes -V, --version Anzeige der Versionsinformationen Argumente ohne Optionen werden als Syntaxdateien interpretiert und ausgeführt. |
Fangen wir mit dem Beispiel der Flughöhe aller im Moment fliegende Flugzeugen an. Die Daten habe ich über die REST-API von flightradar24 abgefragt und mit einem Javaprogramm formatiert (siehe in diesem Block). Da es nur ein paar Zeilen sind, wollen wir sie gleich in der Kommandodatei einfügen. Wir erstellen eine flug-daten.sps Datei mit folgenden Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
* * Thomas Wenzlaff (c) 2023 * * Variable Hoehe in Meter und die Anzahl der Flugzeuge DATA List List /Hoehe (a12) Anzahl (f8) Begin Data Parken 804 1-500 591 500-1000 685 1000-2000 996 2000-3000 752 3000-4000 435 4000-5000 313 5000-6000 305 6000-7000 337 7000-8000 422 8000-9000 357 9000-10000 597 10000-10500 748 10500-11000 1121 11000-11500 681 11500-12000 691 12000-13000 383 über-13000 171 End Data List /VARIABLES = Hoehe Anzahl FREQUENCIES /VARIABLES= Hoehe Anzahl /FORMAT=AVALUE TABLE /STATISTICS=DEFAULT MEDIAN SUM examine Anzahl /statistics=descriptives Display variables ECHO 'Daten ermittelt von flightradar24.com' ECHO '(c) 2023 Thomas Wenzlaff, www.wenzlaff.info' |
Diese Datei können wir nun mit pspp ausführen:
pspp flug-daten.sps
Wir erhalten folgendes Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
Unformatierte Daten werden aus INLINE gelesen. ╭────────┬──────╮ │Variable│Format│ ├────────┼──────┤ │Hoehe │A12 │ │Anzahl │F8.0 │ ╰────────┴──────╯ Datenliste ╭───────────┬──────╮ │ Hoehe │Anzahl│ ├───────────┼──────┤ │Parken │ 804│ │1-500 │ 591│ │500-1000 │ 685│ │1000-2000 │ 996│ │2000-3000 │ 752│ │3000-4000 │ 435│ │4000-5000 │ 313│ │5000-6000 │ 305│ │6000-7000 │ 337│ │7000-8000 │ 422│ │8000-9000 │ 357│ │9000-10000 │ 597│ │10000-10500│ 748│ │10500-11000│ 1121│ │11000-11500│ 681│ │11500-12000│ 691│ │12000-13000│ 383│ │über-13000 │ 171│ ╰───────────┴──────╯ Statistiken ╭────────────────┬────────╮ │ │ Anzahl │ ├────────────────┼────────┤ │N Gültig │ 18│ │ Fehlende Werte│ 0│ │Mittelwert │ 577,17│ │Median │ 594,00│ │Std Abw │ 256,14│ │Minimum │ 171│ │Maximum │ 1121│ │Summe │10389,00│ ╰────────────────┴────────╯ Hoehe ╭──────────────────┬──────────┬───────┬────────────────┬───────────────────╮ │ │Häufigkeit│Prozent│Gültige Prozente│Kumulierte Prozente│ ├──────────────────┼──────────┼───────┼────────────────┼───────────────────┤ │Gültig 1-500 │ 1│ 5,6%│ 5,6%│ 5,6%│ │ 1000-2000 │ 1│ 5,6%│ 5,6%│ 11,1%│ │ 10000-10500│ 1│ 5,6%│ 5,6%│ 16,7%│ │ 10500-11000│ 1│ 5,6%│ 5,6%│ 22,2%│ │ 11000-11500│ 1│ 5,6%│ 5,6%│ 27,8%│ │ 11500-12000│ 1│ 5,6%│ 5,6%│ 33,3%│ │ 12000-13000│ 1│ 5,6%│ 5,6%│ 38,9%│ │ 2000-3000 │ 1│ 5,6%│ 5,6%│ 44,4%│ │ 3000-4000 │ 1│ 5,6%│ 5,6%│ 50,0%│ │ 4000-5000 │ 1│ 5,6%│ 5,6%│ 55,6%│ │ 500-1000 │ 1│ 5,6%│ 5,6%│ 61,1%│ │ 5000-6000 │ 1│ 5,6%│ 5,6%│ 66,7%│ │ 6000-7000 │ 1│ 5,6%│ 5,6%│ 72,2%│ │ 7000-8000 │ 1│ 5,6%│ 5,6%│ 77,8%│ │ 8000-9000 │ 1│ 5,6%│ 5,6%│ 83,3%│ │ 9000-10000 │ 1│ 5,6%│ 5,6%│ 88,9%│ │ Parken │ 1│ 5,6%│ 5,6%│ 94,4%│ │ über-13000 │ 1│ 5,6%│ 5,6%│ 100,0%│ │Gesamt │ 18│ 100,0%│ │ │ ╰──────────────────┴──────────┴───────┴────────────────┴───────────────────╯ Anzahl ╭───────────┬──────────┬───────┬────────────────┬───────────────────╮ │ │Häufigkeit│Prozent│Gültige Prozente│Kumulierte Prozente│ ├───────────┼──────────┼───────┼────────────────┼───────────────────┤ │Gültig 171 │ 1│ 5,6%│ 5,6%│ 5,6%│ │ 305 │ 1│ 5,6%│ 5,6%│ 11,1%│ │ 313 │ 1│ 5,6%│ 5,6%│ 16,7%│ │ 337 │ 1│ 5,6%│ 5,6%│ 22,2%│ │ 357 │ 1│ 5,6%│ 5,6%│ 27,8%│ │ 383 │ 1│ 5,6%│ 5,6%│ 33,3%│ │ 422 │ 1│ 5,6%│ 5,6%│ 38,9%│ │ 435 │ 1│ 5,6%│ 5,6%│ 44,4%│ │ 591 │ 1│ 5,6%│ 5,6%│ 50,0%│ │ 597 │ 1│ 5,6%│ 5,6%│ 55,6%│ │ 681 │ 1│ 5,6%│ 5,6%│ 61,1%│ │ 685 │ 1│ 5,6%│ 5,6%│ 66,7%│ │ 691 │ 1│ 5,6%│ 5,6%│ 72,2%│ │ 748 │ 1│ 5,6%│ 5,6%│ 77,8%│ │ 752 │ 1│ 5,6%│ 5,6%│ 83,3%│ │ 804 │ 1│ 5,6%│ 5,6%│ 88,9%│ │ 996 │ 1│ 5,6%│ 5,6%│ 94,4%│ │ 1121│ 1│ 5,6%│ 5,6%│ 100,0%│ │Gesamt │ 18│ 100,0%│ │ │ ╰───────────┴──────────┴───────┴────────────────┴───────────────────╯ Zusammenfassung der Fallverarbeitung ╭──────┬─────────────────────────────────────╮ │ │ Fälle │ │ ├──────────┬───────────────┬──────────┤ │ │ Gültig │ Fehlende Werte│ Gesamt │ │ │ N│Prozent│ N │ Prozent │ N│Prozent│ ├──────┼──┼───────┼─────┼─────────┼──┼───────┤ │Anzahl│18│ 100,0%│ 0│ ,0%│18│ 100,0%│ ╰──────┴──┴───────┴─────┴─────────┴──┴───────╯ Deskriptive Statistiken ╭──────────────────────────────────────────────────────────┬─────────┬──────────────╮ │ │Statistik│Standardfehler│ ├──────────────────────────────────────────────────────────┼─────────┼──────────────┤ │Anzahl Mittelwert │ 577,17│ 60,37│ │ 95% Konfidenzintervall für Mittelwert Untere Grenze│ 449,79│ │ │ Obere Grenze │ 704,54│ │ │ 5% getrimmtes Mittel │ 569,52│ │ │ Median │ 594,00│ │ │ Varianz │ 65606,15│ │ │ Std. Abweichung │ 256,14│ │ │ Minimum │ 171,00│ │ │ Maximum │ 1121,00│ │ │ Spannweite │ 950,00│ │ │ Interquartilsabstand │ 397,00│ │ │ Schiefe │ ,46│ ,54│ │ Kurtosis │ -,33│ 1,04│ ╰──────────────────────────────────────────────────────────┴─────────┴──────────────╯ Variablen ╭──────┬────────┬───────────┬─────────────┬──────────────╮ │Name │Position│Druckformat│Ausgabeformat│Fehlende Werte│ ├──────┼────────┼───────────┼─────────────┼──────────────┤ │Hoehe │ 1│A12 │A12 │ │ │Anzahl│ 2│F8.0 │F8.0 │ │ ╰──────┴────────┴───────────┴─────────────┴──────────────╯ Daten ermittelt von flightradar24.com (c) 2023 Thomas Wenzlaff, www.wenzlaff.info |
Wenn wir das als PDF Report haben wollen, brauch wir nur:
pspp -o flug-daten.pdf -O paper-size=a4 -O left-margin=40 flug-daten.sps
aufrufen und erhalten diese flug-daten.sps.pdf.
Nun eine zweites Beispiel das wir schon mit der GUI gemacht hatten. Wir wollen sehen, ob es eine korrelation zwischen Transfusionen und Eigenblutspenden gibt. Hier das Script
transfusion-eigenblut-korrelation-mit-daten.sps
das wir mit diesem Inhalt füllen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
* * Thomas Wenzlaff (c) 2023 * Daten von © Statistisches Bundesamt (Destatis), 2023 | Stand: 20.10.2023 * DATA List List /Jahr (f4) Transfusion (f8) Eigenblut (f8) Begin Data 2005 837480 105105 2006 891332 107138 2007 944102 109467 2008 986505 112585 2009 1027197 109808 2010 1047431 110148 2011 1049503 106225 2012 1045811 96818 2013 1018993 87138 2014 990725 83387 2015 937456 78699 2016 921206 74299 2017 901548 66893 2018 885351 56275 2019 887309 47195 2020 868073 39902 2021 885640 40033 2022 871999 39149 End Data List /VARIABLES = Jahr Transfusion Eigenblut FREQUENCIES /VARIABLES= Transfusion Eigenblut /FORMAT=AVALUE TABLE /STATISTICS=DEFAULT MEDIAN SUM CORRELATION /VARIABLES = Transfusion Eigenblut /PRINT = TWOTAIL NOSIG Display variables ECHO ' ' ECHO 'Daten von © Statistisches Bundesamt (Destatis)' ECHO '2023 | Stand: 20.10.2023' ECHO '(c) 2023 Thomas Wenzlaff, www.wenzlaff.info' |
Und nun gleich das PDF erzeugen mit:
pspp -o transfusion-eigenblut-korrelation-mit-daten.sps -O paper-size=a4 -O left-margin=40 transfusion-eigenblut-korrelation-mit-daten.sps
Das Ergebnis ist diese PDF Datei: transfusion-eigenblut-korrelation-mit-daten.pdf oder dieser Konsolen Output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
Unformatierte Daten werden aus INLINE gelesen. ╭───────────┬──────╮ │Variable │Format│ ├───────────┼──────┤ │Jahr │F4.0 │ │Transfusion│F8.0 │ │Eigenblut │F8.0 │ ╰───────────┴──────╯ Datenliste ╭────┬───────────┬─────────╮ │Jahr│Transfusion│Eigenblut│ ├────┼───────────┼─────────┤ │2005│ 837480│ 105105│ │2006│ 891332│ 107138│ │2007│ 944102│ 109467│ │2008│ 986505│ 112585│ │2009│ 1027197│ 109808│ │2010│ 1047431│ 110148│ │2011│ 1049503│ 106225│ │2012│ 1045811│ 96818│ │2013│ 1018993│ 87138│ │2014│ 990725│ 83387│ │2015│ 937456│ 78699│ │2016│ 921206│ 74299│ │2017│ 901548│ 66893│ │2018│ 885351│ 56275│ │2019│ 887309│ 47195│ │2020│ 868073│ 39902│ │2021│ 885640│ 40033│ │2022│ 871999│ 39149│ ╰────┴───────────┴─────────╯ Statistiken ╭────────────────┬───────────┬─────────╮ │ │Transfusion│Eigenblut│ ├────────────────┼───────────┼─────────┤ │N Gültig │ 18│ 18│ │ Fehlende Werte│ 0│ 0│ │Mittelwert │ 944314,5│ 81681,33│ │Median │ 85262,50│ 85262,50│ │Std Abw │ 71217,01│ 27434,86│ │Minimum │ 837480│ 39149│ │Maximum │ 1049503│ 112585│ │Summe │ 16997661│ 1470264│ ╰────────────────┴───────────┴─────────╯ Transfusion ╭──────────────┬──────────┬───────┬────────────────┬───────────────────╮ │ │Häufigkeit│Prozent│Gültige Prozente│Kumulierte Prozente│ ├──────────────┼──────────┼───────┼────────────────┼───────────────────┤ │Gültig 837480 │ 1│ 5,6%│ 5,6%│ 5,6%│ │ 868073 │ 1│ 5,6%│ 5,6%│ 11,1%│ │ 871999 │ 1│ 5,6%│ 5,6%│ 16,7%│ │ 885351 │ 1│ 5,6%│ 5,6%│ 22,2%│ │ 885640 │ 1│ 5,6%│ 5,6%│ 27,8%│ │ 887309 │ 1│ 5,6%│ 5,6%│ 33,3%│ │ 891332 │ 1│ 5,6%│ 5,6%│ 38,9%│ │ 901548 │ 1│ 5,6%│ 5,6%│ 44,4%│ │ 921206 │ 1│ 5,6%│ 5,6%│ 50,0%│ │ 937456 │ 1│ 5,6%│ 5,6%│ 55,6%│ │ 944102 │ 1│ 5,6%│ 5,6%│ 61,1%│ │ 986505 │ 1│ 5,6%│ 5,6%│ 66,7%│ │ 990725 │ 1│ 5,6%│ 5,6%│ 72,2%│ │ 1018993│ 1│ 5,6%│ 5,6%│ 77,8%│ │ 1027197│ 1│ 5,6%│ 5,6%│ 83,3%│ │ 1045811│ 1│ 5,6%│ 5,6%│ 88,9%│ │ 1047431│ 1│ 5,6%│ 5,6%│ 94,4%│ │ 1049503│ 1│ 5,6%│ 5,6%│ 100,0%│ │Gesamt │ 18│ 100,0%│ │ │ ╰──────────────┴──────────┴───────┴────────────────┴───────────────────╯ Eigenblut ╭─────────────┬──────────┬───────┬────────────────┬───────────────────╮ │ │Häufigkeit│Prozent│Gültige Prozente│Kumulierte Prozente│ ├─────────────┼──────────┼───────┼────────────────┼───────────────────┤ │Gültig 39149 │ 1│ 5,6%│ 5,6%│ 5,6%│ │ 39902 │ 1│ 5,6%│ 5,6%│ 11,1%│ │ 40033 │ 1│ 5,6%│ 5,6%│ 16,7%│ │ 47195 │ 1│ 5,6%│ 5,6%│ 22,2%│ │ 56275 │ 1│ 5,6%│ 5,6%│ 27,8%│ │ 66893 │ 1│ 5,6%│ 5,6%│ 33,3%│ │ 74299 │ 1│ 5,6%│ 5,6%│ 38,9%│ │ 78699 │ 1│ 5,6%│ 5,6%│ 44,4%│ │ 83387 │ 1│ 5,6%│ 5,6%│ 50,0%│ │ 87138 │ 1│ 5,6%│ 5,6%│ 55,6%│ │ 96818 │ 1│ 5,6%│ 5,6%│ 61,1%│ │ 105105│ 1│ 5,6%│ 5,6%│ 66,7%│ │ 106225│ 1│ 5,6%│ 5,6%│ 72,2%│ │ 107138│ 1│ 5,6%│ 5,6%│ 77,8%│ │ 109467│ 1│ 5,6%│ 5,6%│ 83,3%│ │ 109808│ 1│ 5,6%│ 5,6%│ 88,9%│ │ 110148│ 1│ 5,6%│ 5,6%│ 94,4%│ │ 112585│ 1│ 5,6%│ 5,6%│ 100,0%│ │Gesamt │ 18│ 100,0%│ │ │ ╰─────────────┴──────────┴───────┴────────────────┴───────────────────╯ Korrelationen ╭───────────────────────────────┬───────────┬─────────╮ │ │Transfusion│Eigenblut│ ├───────────────────────────────┼───────────┼─────────┤ │Transfusion Pearson Korrelation│ 1,000│ ,611[a]│ │ Sig. (2-seitig) │ │ ,007│ │ N │ 18│ 18│ ├───────────────────────────────┼───────────┼─────────┤ │Eigenblut Pearson Korrelation│ ,611[a]│ 1,000│ │ Sig. (2-seitig) │ ,007│ │ │ N │ 18│ 18│ ╰───────────────────────────────┴───────────┴─────────╯ a. Signifikant bei 0.05 Grenze Variablen ╭───────────┬────────┬───────────┬─────────────┬──────────────╮ │Name │Position│Druckformat│Ausgabeformat│Fehlende Werte│ ├───────────┼────────┼───────────┼─────────────┼──────────────┤ │Jahr │ 1│F4.0 │F4.0 │ │ │Transfusion│ 2│F8.0 │F8.0 │ │ │Eigenblut │ 3│F8.0 │F8.0 │ │ ╰───────────┴────────┴───────────┴─────────────┴──────────────╯ Daten von © Statistisches Bundesamt (Destatis) 2023 | Stand: 20.10.2023 (c) 2023 Thomas Wenzlaff, www.wenzlaff.info |
Es gibt eine korrelation von .611 zwischen Transfusionen und Eigenblutspenden.
Wir können die Korrelation auch mit diesem Online-Rechner ohne PSPP berechnen um den Wert zu validieren.
Es gibt also einen großen Effekt von r = .611
Die Anleitung und alle Parameter gibt es hier.