openplanningtools.net > Statistik mit PSPP

Statistische Operationen und Analysen mit PSPP

Contents

  1. Statistische Operationen und Analysen mit PSPP
    1. Einführung
      1. Hintergrund / Über PSPP
      2. Zum Inhalt
      3. Verwendete Software
    2. Allgemeiner Überblick und Umgang mit PSPP
      1. Installation
      2. Vergleich der graphischen Benutzeroberfläche PSPP <-> SPSS
      3. Diskussion der hauptsächlichen Vor- und Nachteile von PSPP
      4. Einführung in die Befehlssyntax von PSPP
    3. Arbeitsteil: Statistische Operationen und Analysen zur Struktur des Öffentlichen Verkehrs im Wiener Umland
      1. Park&Ride Anlagen: Erwerbstätige pro vorhandenen PKW- und Zweirad - Stellplätzen
        1. Importieren eines Textfiles
        2. Umbenennen von Variablen
        3. Aggregieren nach Gemeinden
        4. Fälle zusammenfügen
        5. Sortieren und Speichern (Erwerbstätige)
        6. Erneut Fälle zusammenfügen (Erwerbstätige)
        7. Neue Variablen berechnen: Verhältnisse Erwerbstätige - (unterschiedliche) Stellplätze
      2. "Qualität" des Bahnanschlusses in den Gemeinden, die einen solchen besitzen; Verteilung der Erwerbstätigen auf Gemeinden mit derselben Bahnanschlussqualität
        1. Einführung in Gnumeric
        2. Importieren der 4 Listen mit unterschiedlichen Bahnanschlusstypen in Gnumeric und Berechnen einen 0 / 1 - Matrix
        3. Importieren der Gnumeric-Matrix in PSPP
        4. Variable Bahnanschluss JA/NEIN berechnen
        5. Berechnen der Gesamtqualität des Bahnanschlusses
        6. Anhängen und Aggregieren der Erwerbstätigen nach Gemeinden mit gleicher Bahnanschlussqualität
        7. Prozentuelle Verteilung der Erwerbstätigen: Aggregieren und neue Variable berechnen
      3. Vergleich der Fahrzeiten im MIV und im ÖV für alle Gemeinden
        1. Zusammenhängen
        2. Variable "Differenzen" bilden
        3. Aggregieren dieser Variable
        4. Klassenbildung
      4. Statistische Analysen
        1. Deskriptive Statistik allgemein, Tabellen und Diagramme
        2. Varianzanalyse ÖV Zeitqualität - Quotient ÖV Pendler / MIV - Pendler
          1. Vorbereitungen (Aggregieren, Berechnung des Quotienten, Files zusammenhängen)
          2. Varianzanalyse an sich
        3. Regressionsanalyse Bahnanschlussqualität - PKW-Neuzulassungen
          1. Fälle hinzufügen und Files zusammenhängen
          2. Regressionsanalyse an sich
    4. Impressum

Einführung

pspp_logo.jpg

Hintergrund / Über PSPP

PSPP ist eine freie Software zur Berechnung, Manipulierung, Analyse und Darstellung von statistischen Daten. Es steht nahezu der gesamte Funktionsumfang (Sortieren, Aggregieren, Fälle und Variablen hinzufügen, berechnen, gewichten und auswählen,... sowie vielfältige Analysemöglichkeiten - Regressions- und Varianzanalysen, T-Tests,...) der proprietären Konkurrenzsoftware SPSS zur Verfügung.

Es gibt, gleich wie bei SPSS, eine graphische Benutzeroberfläche und die Möglichkeit der Syntax-Programmierung, wobei erstere derzeit noch sehr eingeschränkte Möglichkeiten bietet, was darauf zurückzuführen ist, dass sich das Programm im Moment noch im Betastadium befindet.

Das PSPP-Projekt wurde initiiert, um Benutzern die Möglichkeit zu geben, die Einschränkungen von SPSS zu vermeiden. Unter den Nutzungsbedingungen von SPSS ist es Kunden nicht nur verboten, das Programm zu kopieren oder zu verändern, sondern auch über eine begrenzte Zeit hinaus zu verwenden. In neueren Versionen von SPSS ist ein digitales Rechtemanagement eingebaut, das dazu dient, die Nutzung der Software nach Ablauf der sechsmonatigen Lizenz zu verhindern und den Nutzer somit zur erneuten Entrichtung von Lizenzgebühren zu bewegen. (http://de.wikipedia.org/wiki/PSPP_(Software)) // Eigene Anmerkung - SPSS ist ja seit geraumer Zeit auch nicht mehr als Studentenversion am LMZ erhältlich - eine gute Alternative ist somit notwendig...

Ein mehr als ausführliches Handbuch, auf das in diesem Tutorial oftmals verwiesen wird, steht in verschiedenen Dateiformaten (u.a. als HTML-Seite und als PDF) unter folgender Adresse zur Verfügung -> http://www.gnu.org/software/pspp/manual/

Zum Inhalt

Das Tutorial beschäftigt sich zunächst mit dem allgemeinen Umgang mit PSPP, beginnend mit dessen Installation. Anschließend werden, um einen grundlegenden Überblick zu bekommen, die graphischen Benutzeroberflächen von SPSS und PSPP verglichen, sowie die speziellen Vor- und Nachteile von PSPP diskutiert. Infolge der (baldigen) Notwendigkeit von Syntax-Programmierung in PSPP wird im darauf folgenden Kapitel kurz auf deren Basics und formalen Regeln eingegangen.

Im Arbeitsteil werden die vielfältigen Möglichkeiten von PSPP anhand von verschiedenen Analysen und Manipulationen der Daten zur Struktur des Öffentlichen Verkehrs im Wiener Umland (auf der HP des Landes NÖ finden sich unendlich viele Daten zu diesem Thema) aufgezeigt. Ziel dessen ist es, für alle darin liegenden Gemeinden vergleichbare Parameter zu finden und zu errechnen, um daraus ein Ranking bezüglich Qualität der Anbindung an das öffentliche Verkehrsnetz bilden zu können. Für ausgewählte Ergebnisse dieser Berechnungen sollen auch die Möglichkeiten der Darstellung in Tabellen und Diagrammen gezeigt werden.

Darüber hinaus wird mittels Regressions- und Varianzanalysen untersucht, ob es einen Zusammenhang zwischen der festgestellten Qualität und den realen Pendlerdaten (Modal Split), bzw. den PKW-Neuzulassungen gibt.

Verwendete Software

PSPP, Gnumeric (Open Source - Ersatz für zb Excel, tw. mit PSPP kompatibel)

Allgemeiner Überblick und Umgang mit PSPP

Installation

PSPP ist GNU-Software und als solche frei über die GNU-Mainpage beziehbar. (http://www.gnu.org/software/pspp/tour.html) Es besteht die Möglichkeit, PSPP selbst zu kompilieren oder es als fertiges Binary-File zu downloaden. (http://pspp.michelboaventura.com/?page_id=147&lang=de) Bei einer Installation unter Windows empfiehlt sich die vorherige Installation von MinGW (http://mingw.org/).

pspp_installation(1).jpg

Vergleich der graphischen Benutzeroberfläche PSPP <-> SPSS

Gleich wie bei der graphischen Benutzeroberfläche von SPSS gibt es in PSPP einerseits eine Data View, in der die einzelnen Ausprägungen der Variablen sichtbar werden, und andererseits eine Variable View, die deren Eigenschaften enthält, diese lassen sich, ebenso wie die Ausprägungen, direkt von Hand bearbeiten.

pspp_dataview.jpg

pspp_variableview.jpg

(links die Data View, rechts die Variable View in PSPP)

Symbole und Schrift fallen standardmäßig in PSPP deutlich größer aus als in SPSS, wodurch es viele Nutzer zunächst als aufgeräumter und leichter zu bedienen empfinden könnten. SPSS wirkt an dieser Stelle dagegen etwas "professioneller".

spss_dataview.jpg

(Zum Vergleich hier die Data View in SPSS)

Der erste Haken an PSPP, der beim anfänglichen Ausprobieren auffällt, ist die Unmöglichkeit, mehrere Variablen oder Ausprägungen von Variablen gleichzeitig zu markieren (und damit zu verschieben oder zu Löschen). Dies ist in der graphischen Benutzeroberfläche immer nur reihen- oder zeilenweise möglich (um etwa mehrere Variablen zu löschen wäre schon Syntax-Programmierung notwendig).

Die Gliederung der Befehlsstrukturen ist hier wie da im Prinzip gleich, die einzelnen Fenster der Kommandozeile haben sogar denselben Namen. Vergleicht man diese nun aber im Detail, so werden nur allzu bald die deutlichen Einschränkungen in der Funktionalität der graphischen Benutzeroberfläche in PSPP sichtbar. Dies beginnt mit den fehlenden "Rückgängig" bzw. "Wiederholen" - Optionen im Fenster "Edit" (vgl. dazu auch nachfolgendes Kapitel").

Etwas näher betrachtet werden sollen nun die drei "Hauptfenster" Data, Transform und Analyze, die ja in SPSS alle wichtigen Möglichkeiten zusammenfassen, die man im Umgang mit Datensätzen hat (Gliederung, Manipulation, Analyse, und und und ...). Hier wird der Unterschied zwischen PSPP und SPSS, insbesondere ersterem Fenster, am deutlichsten:

PSPP bietet unter "Data" nur fünf Optionen: Sortieren, Transponieren oder Aufsplitten des Datensatzes sowie einzelne Fälle auswählen bzw. gewichten. Dagegen bietet SPSS hier eine wahre Fülle, unter anterem so wichtige Funktionen wie Aggregieren oder das Zusammenfügen von Dateien, sowohl bezogen auf Fälle, als auch auf Daten. In PSPP ist dafür unbedingt Syntax-Programmierung (wenn auch nicht sonderlich aufwendig) erforderlich.

pspp_data.jpg

(Das "Data" - Fenster in PSPP oben, zum Vergleich unter dasselbe in SPSS)

spss_daten.jpg

Die beiden anderen Fenster, "Transform" und "Analyze", sind hingegen, zieht man die Unterschiede der beiden "Data" - Fenster zum Vergleich heran, wesentlich mächtiger. Wie auch in SPSS kann man unter "Transform" Variablen neu berechnen oder umcodieren; "Analyze" enthält die wichtigsten statistischen Analyseverfahren, u.a. Deskriptive Statistike, Korrelations- und Regressionsanalyse.

pspp_transform.jpg

(Das "Transform" - Fenster, unter Compute lässt sich eine neue Variable berechnen)

pspp_analyze.jpg

(Unter "Analyze" über die graphische Benutzeroberfläche anwendbare statistische Analyseverfahren)

Festzuhalten bleibt, dass sich nahezu alle statistischen Verfahren, die in diesem Fenster nicht aufgeführt werden, über Syntax-Programmierung durchführen lassen.

Diskussion der hauptsächlichen Vor- und Nachteile von PSPP

Unbedingt zu wiederholen ist an dieser Stelle, dass PSPP 1) Open Source ist und 2) sich noch im Frühstadium der Programmentwicklung befindet. Viele der augenscheinlichen Nachteile gegenüber SPSS lassen sich dadurch erklären, allen voran die doch sehr eingeschränkte graphische Benutzeroberfläche, die nicht-professionelle Statistik-Anwender, etwa Sozial- und Wirtschaftswissenschaftler, möglicherweise abschrecken kann. Andererseits kann die zwangsweise Auseinandersetzung mit Syntax-Programmierung auch zu einem besseren Verständnis der Prozesse führen.

Ein größerer Nachteil liegt mit Sicherheit in den fehlenden Schnittstellen mit anderen Programmen. PSPP kann (derzeit), neben den Standard-Datenformaten .sav und .por (auch von SPSS benutzt) Daten nur aus Textfiles (ASCII, im speziellen auch CSV) oder Gnumeric-Tabellenblättern einlesen. Gnumeric ist ebenfalls ein Open Source Programm, auf das im Verlauf dieses Tutorials auch kurz zurückgegriffen wird, und als nahezu vollständiger Excel-Ersatz anzusehen, es bietet auch dementsprechend viele Schnittstellen, womit sich dadurch fehlende Import-Möglichkeiten in PSPP (vor allem Excel-Files) umgehen lassen. Der PSPP - Output bietet noch weniger Möglichkeiten. Im Gegensatz zum Datenimport ist hier nur die Abspeicherung in den Standardformaten .sav und .pov, sowie als Textfiles (ASCII) möglich, nicht aber als Standardformate für Tabellenkalkulationsprogramme. Überdies gestaltet sich der Export in ein Textformat äußerst kompliziert und zeitaufwändig, da hier sehr viele Parameter beachtet werden müssen, er ist auch, im Gegenzug zu fast allen anderen Programmieraufgaben, im Handbuch nicht sonderlich gut dokumentiert.

Doch damit ist leider noch nicht alles gesagt. PSPP ist, von sich aus, nicht fähig, zwei Datenfiles "nebeneinander" zu öffnen, wie es in SPSS Standard ist. Dies äußert sich nun beispielsweise darin, dass, hat man ein Datenfile manipuliert und noch nicht abgespeichert, und man öffnet aus dem Programm heraus ein weiteres (egal ob neu oder bereits bestehend), so wird das vorherige schlichtweg überschrieben, und alle nicht gespeicherten Arbeitsschritte gehen unwiderruflich verloren. Falls man also paralell an zwei Datenfiles arbeiten, oder solche zwei zusammenhängen will und aus Gründen der Übersicht gleichzeitig offen haben will, ist es zwingend notwendig, die Files getrennt voneinander zu öffnen, sprich PSPP zweimal aufzurufen.

Ferner - ein mindestens gleich großer Ärgernis für den "non-professional User" - gibt es in PSPP im Gegensatz zu SPSS keine "Rückgängig machen" oder "Wiederholen" - Funktionen (in SPSS unter -> Bearbeiten bzw. die beiden Pfeile in der Daten-Editor Symbolleiste), somit ist bei jedem Arbeitsschritt in PSPP größte Sorgfalt geboten.

Nichtsdestotrotz hat PSPP auch Vorteile: Es kennt beispielsweise keine "künstlichen" Einschränkungen der Datengröße, somit ist das Programm fähig, mehr als 1 Milliarde an Variablen und Fällen aufzunehmen und zu verarbeiten.

Außerdem funktioniert der Import von Textfiles absolut einwandfrei, bei SPSS treten im Gegensatz dazu immer wieder Fehlermeldungen auf, die einen ungültigen Variablennamen beschreiben, der sich allerdings ohne Probleme händisch in das Programm eintragen lässt. Darüber hinaus lässt SPSS im Zuge des Importes die Festlegung von nur einem Variablentypen zu (alle weiteren Variablen sind als numerisch voreingestellt und müssen bei Bedarf später umgestellt werden), bei PSPP ist es dagegen möglich, jeder Variable einen eigenen Typen zuzuweisen.

Das nachfolgende Kapitel beschäftigt sich nun mit der Befehlssyntax von PSPP. An dieser Stelle sei bereits vorweggenommen, dass die Syntax-Programmierung leider auch nicht völlig frei von Bugs ist, festgestellt werden konnte nämlich, dass im Syntaxfenster das Kopieren von Befehlskommandos sowohl alleine innerhalb der Syntax, als auch (was Vergleichstests mit SPSS besonders mühsam macht), als auch von außerhalb hinein (beispielsweise eben eine SPSS Befehlssyntax in das PSPP Syntaxfenster) nicht möglich ist, weder durch Strg-C Strg-V noch über die Befehlszeile (EDIT -> Copy bzw EDIT -> Paste).

Einführung in die Befehlssyntax von PSPP

Wer bereits in SPSS Syntax-Programmierung durchgeführt hat, wird sich auch in PSPP rasch zurechfinden, die Befehle sind grundsätzlich dieselben, die Programmstrukturen sind einander sehr ähnlich.

Um Syntax-Programmierung durchführen zu können, muss man zunächst ein neues Syntax-Fenster aufrufen. Dies geschieht in PSPP über File -> New -> Syntax

pspp_syntax.jpg

Hat man bereits ein Syntax-Programm geschrieben und will dieses nun öffnen, kann man über File -> Open oder direkt durch einfaches Klicken auf den Open-Button tun.

Im Beispielfall wird über File -> New -> Syntax ein neues Fenster aufgerufen. Dies erscheint darauf hin über der aktiven PSPP-View:

pspp_syntaxfenster.jpg

Wie funktioniert nun die PSPP-Syntaxprogrammierung im Detail? Jedes Syntaxprogram umfasst einen Befehl (z.B. AGGREGATE) und die dazugehörigen Parameter; es lassen sich ferner einige Grundregeln für Programmstruktur- und Schreibweise zusammenfassen. Nachfolgend das vollständige Syntaxprogramm für den AGGREGATE-Befehl, anhand dessen sich die Regeln sehr gut ableiten lassen.

aggregate.jpg

Wie man sehen kann, wird der Befehl gleich in die erste Zeile des Programms geschrieben, und zwar - notwendigerweise - komplett in Großbuchstaben. Anschließend folgt immer ein Zeilenumbruch.

Nun folgen die Parameter. Generell sind dabei einige Dinge zu beachten:

1) Jeder Parameter selbst wird, so wie der Befehl, ebenfalls in Großbuchstaben geschrieben.

2) Werte bzw. Inhalt der Parameter sind entweder eine vordefinierte Auswahl (Notation wie der Parameter in Großbuchstaben oder Ziffern), Variablen (immer auf gleiche Bezeichnung im Syntaxprogramm und im PSPP File achten) oder Pfadangaben.

2) Zwischen dem linken Fensterrand und dem Parameter selbst muss immer ein Abstand eingehalten werden (entweder Leertaste oder Tabulator - beides ist möglich), andernfalls erscheint im Ausgabe-Fenster eine Fehlermeldung.

3) Die Einleitung eines Parameters erfolgt immer mit einem Schrägstrich (/).

Einer der wichtigsten Parameter vieler Befehle ist OUTFILE, d.h. die Angabe von Speicherort und Namen der Ausgabedatei. Zu beachten ist, dass bei der Angabe des Pfades (egal unter welchem Befehl) immer ein Backslash (\) verwendet werden muss (Tastenkombination Alt Gr + ß). Die Angabe des Pfades muss immer absolut erfolgen (zb C:\Users\XY\Desktop\Ordner1\fileXY.sav)

Hat man alle Parameter eingegeben, so folgt zum Abschluss des Programms immer ein Punkt (als dessen Erkennungszeichen).

Im Handbuch (Link ganz oben) sind alle Programme mitsamt deren Befehlen und Parametern dokumentiert. Die im nun folgenden Arbeitsteil verwendeten Programme werden zum besseren Verständnis ausführlich beschrieben.

Arbeitsteil: Statistische Operationen und Analysen zur Struktur des Öffentlichen Verkehrs im Wiener Umland

Nach so viel Theorie nun aber zur praktischen Anwendung von PSPP. Um den Analysen und Berechnungen einen "praktischen Hintergrund" zu geben, wird folgendes Szenario angenommen: Vor kurzem hat sich die österreichische Bundesregierung entgegen aller Erwartungen dazu entschlossen, massiv in den Ausbau des öffentlichen Verkehrsnetzes zu investieren. Damit die dafür zur Verfügung gestellten Mittel auch richtig eingesetzt werden, hat der Staat beschlossen, das Angebot an öffentlichem Verkehr in allen Gemeinden zu evaluiren. Nach einer längeren Diskussionsphase wurden folgende Kriterien festgelegt.

- Park&Ride Anlagen: Erwerbstätige pro vorhandenen PKW- und Zweirad - Stellplätzen

- "Qualität" des Bahnanschlusses in den Gemeinden, die einen solchen besitzen; Verteilung der Erwerbstätigen auf Gemeinden mit derselben Bahnanschlussqualität

- Vergleich der Fahrzeiten im MIV und im ÖV für alle Gemeinden

Der Leser dieses Tutorials als Mitarbeiter eines führenden Raumplanungsbüros in Niederösterreich hat nun die Aufgabe, die Gemeinden des näheren Wiener Umlandes dahingehend zu analysieren.

Glücklicherweise stehen für die entsprechenden Analysen bereits sehr viele Grundlagedaten (Land NÖ, Statistik Austria,...) zur Verfügung. Nachdem es in der Vergangenheit mehrfach Schwierigkeiten in der Arbeit mit SPSS gegeben hat, vertraut man nun erstmals auf die weite Welt der Open Source und zieht als Software das Statistikprogramm PSPP heran.

Bevor nun mit den Berechnungen und Anaylse begonnen wird, sollten auf dem Desktop zwei Ordner angelegt werden:

- DatenVerwendung

- Resultate

Alle Grundlagedaten, die man innerhalb des Tutorials downloaden kann, werden in den Ordner DatenVerwendung gespeichert. Der Ordner Resultate dient als Speicherort für alle Ergebnisse (d.h. alle Pfade in den in weiterer Folge erklärten Syntaxprogrammen beziehen sich auf diese beiden Ordner).

Ein Tipp vorweg: Es werden in der Folge oftmals Syntaxprogramme verwendet, die einander ähnlich sind bzw. nur auf andere Files zugreifen. Es lohnt sich daher, jedes Syntaxprogramm, das man schreibt, in den Ordner Resultate zu speichern um bei Bedarf wieder darauf zurückzugreifen.

Park&Ride Anlagen: Erwerbstätige pro vorhandenen PKW- und Zweirad - Stellplätzen

Das erste Kriterium beinhaltet die Feststellung des Verhältnisses von PKW- bzw. Zweirad – Stellplätzen zu der Zahl an Erwerbstätigen in allen Gemeinden, die über einen Bahnanschluss und eine dementsprechende Park&Ride Anlage verfügen. Als Grundlagedaten stehen zur Verfügung:

- Eine Liste mit allen Umlandgemeinden und dazugehörigen Gemeindekennziffern; im PSPP (und SPSS) – Standarddateiformat (.sav)

gemeindeliste.sav

- Auflistung aller Park&Ride – Anlagen (selten aber doch gibt es auch mehrere pro Gemeinde), die mittels der Gemeindekennziffer den Gemeinden zugeordnet sind; als Textliste mit Tabstopp – Trennung

parkrideliste.txt

- Liste mit Erwerbstätigen pro Gemeinde im Standarddateiformat

erw01.sav

Zunächst ein Blick auf die Liste mit den Umlandgemeinden:

gemeindeliste.jpg

Die Liste enthält alle Gemeinden des für die Untersuchung relevanten Wiener Umlandes und ist nach den Gemeindekennziffern aufsteigend sortiert.

Die Liste mit allen Park&Ride – Anlagen ist nicht im Standard-Dateiformat vorhanden, sondern als Textliste. Sie enthält 4 Variablen, nämlich GemZiffer, Hst (der Haltestellenname), PKWStp (PKW – Stellplätze) und ZweiradStp. Alle Variablen sind jeweils mittels Tabstopp getrennt, sortiert ist die Liste nach dem Haltestellennamen aufsteigend.

parkrideliste-txt.jpg

Importieren eines Textfiles

Die erste Aufgabe wird es also sein, diese Liste in PSPP reinzuladen. Dazu wird einmal ein neues PSPP – File geöffnet. Das Importieren von Textfiles in PSPP ist bereits eine solche Aufgabe, bei der Syntax-Programmierung zwingend notwendig wird. Somit ist der nächste Schritt das Öffnen eines leeren Syntax – Fensters (über File -> New -> Syntax).

Grundlegender Teil des Befehls für das Importieren von Files ist GET. Will man ein File im Standardformat reinladen, so hätte der zugehörigen Befehl im Grunde gar keine Parameter:

GET FILE="***\***\xy.sav". (Zur Wiederholung: Der Befehl an sich wird in Großbuchstaben geschrieben, die Angabe des Pfades muss absolut sein, und am Ende des Programmes steht ein Punkt.

Da allerdings der Import von Files im Standardformat ohne weiteres über die graphische Benutzeroberfläche möglich ist, ist GET FILE in weiterer Folge nicht sonderlich wichtig.

Will man andere Files importieren (im Grunde eigentlich Daten aus anderen Files), so benötigt man den Befehl GET DATA. An dieser Stelle nun gleich das vollständige Programm zum Importieren eines Textfiles, es wird im Anschluss Zeile für Zeile erklärt.

textimport.jpg

Erster Parameter des GET DATA Befehls ist TYPE. Als Werte zur Auswahl stehen TXT (für Textfiles) oder GNM (für Gnumeric Spreadsheets, siehe nächstes Kapitel).

Danach folgt gleich die Angabe des Speicherortes mittels FILE.

ARRANGEMENT beschreibt die Anordnung der Daten innerhalb des Textfiles. Die Angabe DELIMITED (ist auch die Default-Einstellung, d. h. lässt man den ARRANGEMENT - Parameter weg, wird automatisch DELIMITED angenommen) bedeutet, dass die Ausprägungen der einzelnen Variablen durch ein bestimmtes Trennzeichen (wird später definiert) getrennt sind. Die alternative Angabe wäre FIXED, dies würde bedeuten, dass die Datensätze in Tabellenform mit einer bestimmten Zeichenanzahl als Breite angeordnet sind.

FIRSTCASE bestimmt die erste Zeile, ab der die zu importierenden Werte vorkommen. Default-Einstellung ist 1, in vielen Fällen (so auch hier) steht aber beispielsweise der Variablenname in der erste Zeile, wodurch die Angabe von 2 (Werte befinden sich ab der 2. Zeile) notwendig wird.

Mit IMPORTCASE wird ausgewählt, wieviele der im Textfile vorkommenden Datensätze importiert werden. Die Default-Einstellung ALL ist selbsterklärend. Alternativ möglich ist auch FIRST ** (** für eine bestimmte Zeilenanzahl) oder PERCENT **.

DELIMITERS wird notwendig, wenn ARRANGEMENT=DELIMITED bestimmt wurde (eh klar). Hier erfolgt die Angabe, welches Zeichen denn nun als Trennzeichen für die Ausprägungen steht. "\t" bedeutet Tabstopp, " " wurde ein Leerzeichen als Trennzeichen spezifizieren.

DELCASE bestimmt die Form der Daten-Matrix. Die Default-Einstellung LINE bedeuted, dass in jeder Zeile je eine Ausprägung aller vorkommenden Variablen steht (also dieselbe Form der Anordnung wie in PSPP selbst). Will man "zeilenübergreifend" importieren, so kann man mit VARIABLES ** ein bestimmte Anzahl an Variablen pro Fall definieren.

Neben den Parametern TYPE und FILE ist am Ende noch der VARIABLES - Parameter obligatorisch. Er muss zwingend an letzter Stelle stehen und bestimmt Name und Typ jeder Variablen. Dies erfolgt, wie im Syntaxprogramm ersichtlich, für jede einzelne Variable in einer neuen Zeile. Die erste Variable, die bestimmt wird, steht dann in PSPP ganz link. Zunächst wird der Name der Variable bestimmt, nach einem Leerzeichen erfolg die Bestimmung des Types. A40 bedeutet beispielsweise Typ = String mit maximal 40 Zeichen (A steht für String), F5 meint Typ = Numerisch (F für Standard Numerisch) mit maximal 5 Zeichen. Möglich wäre auch F5.2, dies würde dann eine Zahl mit maximal 5 Stellen und 2 Dezimalstellen erzeugen. Alle weitern Formate sind im Handbuch ab Seite 33 dokumentiert.

Nachdem nun das Syntaxprogramm fertiggeschrieben ist, wird es mittels Klick auf RUN -> ALL in der Befehlszeile des Syntaxfensters gestartet. Die Daten aus dem Textfile sollten nun vollständig importiert werden:

prlistepspp.jpg

Umbenennen von Variablen

In den beiden Files (Gemeindeliste und P&R Liste) hat die wichtige Variable GemCode unterschiedliche Namen, dies soll jetzt geändert werden. Dazu klickt man im P&R File unten links auf Variable View, nun werden die Eigenschaften der Variablen angezeigt. Hier wird die Variable "GemZiffer" in "GemCode", also wie in der Gemeindeliste, umbenannt.

GemCode.jpg

Aggregieren nach Gemeinden

Bei genauer Betrachtung der P&R - Liste kann man erkennen, dass es in manchen Gemeinden zwei oder mehrere Bahnhöfe und Haltestellen, und damit auch P&R - Anlagen, gibt. Da aber Gemeinden als Ganzes und nicht etwa Ortsteile untersucht werden sollen, müssen die Stellplätze gemeindeweise zusammengezählt, d. h. aggregiert, werden.

Auch für die Aggregierung von Daten ist in PSPP Syntax-Programmierung notwendig. Man öffnet also wieder ein neues Syntax-Fenster und tippt das Programm ein:

praggregate.jpg

Erster Parameter des AGGREGATE Befehls ist OUTFILE. Es gibt zwei Möglichkeiten: Entweder man gibt einen Speicherpfad an und benennt die zu speichernde Datei, oder man ersetzt dies durch einen * (/OUTFILE=*), dann würden die aggregierten Variablen direkt in das bestehende File hineingeschrieben werden, und alle darin vorkommenden Variablen, ausgenommen die Break-Variable, werden gelöscht (!).

Leider gibt es an dieser Stelle einen gröberen Bug: Im Handbuch wird zwar ein Parameter DOCUMENT beschrieben, der, will man dieses Verhalten verhindern (d. h. kein neues File erzeugen, aber alle bestehenden Variablen erhalten), eingesetzt werden kann. Leider zeigte er aber auch nach mehrmaligen Tests keine Wirkung, gleich, ob nun das bestehende File überschrieben oder ein neues File erzeugt werden würde. In beiden Fällen wird nur die Break-Variable und die aggregierte Variable erzeugt. Somit bleibt dem User nichts anderes übrig, als die aggregierte Variable im Anschluss mittels MATCH FILES wieder an die Ursprungsdatei anzufügen.

PSPP hat beim Aggregieren einen Vorteil gegenüber SPSS: Es ist hier egal, ob der Datensatz vorsortiert ist oder nicht, bevor aggregiert wird, sortiert PSPP die Daten automatisch nach der Break-Variable. Hat man einen sehr großen (wirklich großen) Datensatz, der bereits nach der Break-Variable vorsortiert ist, kann man den Parameter PRESORTED angeben. Er unterdrückt das automatische Vorsortieren vor dem Aggregierungsvorgang und spart ein wenig Zeit. Genau wie DOCUMENT besitzt auch PRESORTED keine Werte.

Eine weitere Möglichkeit bietet der Parameter MISSING. Im Normalfall reicht es, wenn die zu aggregierende Variable nur in einem einzigen Fall eine Ausprägung besitzt, und etwa alle anderen Fälle keine Werte besitzen. MISSING kehrt dieses Verhalten um, also muss die zu aggregierende Variable in allen Fällen Werte besitzen, andernfalls würde die neue Variable keine Werte besitzen. Der Parameter MISSING besitzt nur einen Wert: COLUMNWISE (Angabe: /MISSING=COLUMNWISE) Die drei Parameter DOCUMENT, PRESORTED und MISSING nicht zwingend notwendig, PRESORTED und MISSING werden auch nur sehr selten verwendet. Auf jeden Fall notwendig ist dagegen die Angabe zumindest einer Break-Variable mittels BREAK, nach der die zu aggregierenden Variablen zusammengefasst werden. Es können aber auch zwei oder mehr Variablen als Break-Variablen dienen, in dem Fall wird jede Break-Variable in eine eigene Zeile geschrieben. Zuletzt werden die neu zu berechnenden Variablen definiert, und zwar in der Form: /Name der neuen Variable=FUNKTION(Zu Aggregierende Variable in Klammern) - siehe Syntaxprogramm. Klassische, oft benutzte Funktionen sind etwa SUM, MIN, MAX oder MEAN. Eine Auflistung aller Funktionen findet sich im Handbuch ab Seite 103.

Durch das vorgegebene Syntaxprogramm werden zwei Variablen - PKWStp und ZweiradStp - anhand der Break-Variable GemCode summiert:

listeaggr.jpg

Wird eine numerische Variable in PSPP aggregiert, so erhält die neue Variable standardmäßig zwei Dezimalstellen (selbiges auch in SPSS). In der Variable View können die Dezimalstellen von zwei auf null gestellt werden.

Fälle zusammenfügen

Der nächste Schritt ist das Zusammenfügen des aktuellen Files mit der Gemeindeliste. Der Befehl dafür lautet MATCH FILES:

matchfiles.jpg

FILE bestimmt die Ausgabedatei. Wird ein * angegeben, so werden die neuen Variablen neben denen der aktuellen Arbeitsdatei geschrieben. Alternativ kann man einen Pfad und einen Dateinamen angeben und so ein neues File erschaffen.

Mit TABLE wird das File angesprochen, das die hinzuzufügenden Variablen enthält.

BY bestimmt die Schlüsselvariable, anhand derer die Variablen zusammengehängt werden. Sie muss in beiden Files vorkommen. Wird BY weggelassen, so werden die Variablen und ihre Ausprägungen einfach zeilenweise zusammengefügt.

Sortieren und Speichern (Erwerbstätige)

Für die Berechnung des verlangten Kriteriums fehlt nun nur mehr die Liste mit den Erwerbstätigen. Hier nun eine kurze Betrachtung dieser Liste (sollte zu Beginn in den Ordner DatenVerwendung gespeichert werden):

erw.jpg

Die Liste ist nach der Zahl der Erwerbstätigen pro Gemeinde aufsteigend sortiert. Um sie mit dem anderen File zusammenhängen zu können, muss sie nach GemCode aufsteigend sortiert werden. Dies lässt sich über die graphische Benutzeroberfläche mittels Data -> Sort Cases bewerkstelligen. Es erscheint nun ein Befehlsfenster, in dem für "Sort By" der Gemeindecode (Var GemCode) ausgewählt wird, und zwar ascending - aufsteigent.

sort.jpg

Anschließend soll die Liste in den Ordner Resultate gespeichert werden. (Filename erw01_sort.sav)

Erneut Fälle zusammenfügen (Erwerbstätige)

Im vorletzten Schritt wird nun die P&R Liste mit den Erwerbstätigen zusammengehängt. Dazu wird im P&R File wieder ein neues Syntax-Fenster geöffnet, das Programm selbst ist vom Prinzip her dasselbe wie schon zuvor:

erw_dran.jpg

Neue Variablen berechnen: Verhältnisse Erwerbstätige - (unterschiedliche) Stellplätze

Ziel ist es ja, herauszufinden, wieviele Erwerbstätige auf einen PKW bzw. Zweirad - Stellplatz kommen. Dafür muss die Zahl der Erwerbstätigen durch die Zahl der Stellplätze dividiert werden, d. h. es werden (in diesem Fall) zwei neue Variablen berechnet. PSPP stellt dafür einen Assistenten zur Verfügung, der über Transform -> Compute aufgerufen wird. Er besitzt dieselbe Struktur wie in SPSS, also eine Taschenrechner-Optik mit zur Auswahl stehenden mathematischen Funktionen.

compute.jpg

Über die Schaltfläche Type&Label kann die berechnete Variable im Vorhinein mit einem Label versehen werden, standardmäßig wird der mathematische Ausdruck als Label angenommen. Man kann darüber hinaus auch zwischen String und Numeric als Format auswählen.

Nachdem beide Endergebnisse berechnet wurden (Variablennamen Erw_pro_PKWStp und Erw_pro_ZweiradStp) kann das File in den Ordner Resultate gespeichert werden (Name parkride_endergebnis.sav)

parkride_endergebnis.jpg

"Qualität" des Bahnanschlusses in den Gemeinden, die einen solchen besitzen; Verteilung der Erwerbstätigen auf Gemeinden mit derselben Bahnanschlussqualität

Als zweites Kriterium soll die Qualität des Bahnanschlusses in den Gemeinden, die einen solchen besitzen, festgestellt werden; anschließend soll die Verteilung der Erwerbstätigen auf Gemeinden gleicher Bahnanschlussqualität berechnet werden. Die Grundlagedaten sollten der Übersicht halber wieder in den Ordner DatenVerwendung gespeichert werden. Es gibt:

- Die bereits bekannte Gemeindeliste im Gnumeric - Format

gemliste.gnumeric

- 4 Listen mit allen Gemeinden, die einen Bahnanschlus von bestimmter "Qualität" verfügen (Intercity, REX, SBAHN, Regionalzug)

Intercity.txt

REX.txt

SBAHN.txt

Regional.txt

Für die Berechnung der Gesamtqualität (mehrere Gemeinden haben Bahnanschlüsse verschiedener Qualitäten) ist es sinnvoll, die Listen zusammenzufügen und in eine 0 / 1 Matrixform zu bringen. Dafür wird im Anschluss auf das Open Source - Tabellenkalkulationsprogramm Gnumeric zurückgegriffen.

Einführung in Gnumeric

Gnumeric ist ein Tabellenkalkulationsprogramm, das ebenso wie PSPP unter der GNU General Public License veröffentlicht ist. Es ist für Unix, GNU/Linux und Microsoft Windows verfügbar. Das Programm verfügt über eine große Anzahl mathematischer Funktionen, die teilweise über die bekannten Möglichkeiten in Excel hinausgehen. Allerdings unterstützt es keine Makros (soll in Zukunft folgen).

Besondere Erwähnung verdienen die weitgehenden Import- und Exportfähigkeiten. So unterstützt Gnumeric unter anderem die Dateiformate von Microsoft Excel, XML, HTML, LaTeX (nur Export), Applix, Quattro Pro, PlanPerfect, Sylk, DIF, StarOffice und Lotus-123. Das eigene Format basiert auf XML, welches mittels gzip komprimiert ist.

Gnumeric kann auf der offiziellen Homepage downgeloaded werden: http://projects.gnome.org/gnumeric/

g0.jpg

(Die Gnumeric - Oberfläche)

Importieren der 4 Listen mit unterschiedlichen Bahnanschlusstypen in Gnumeric und Berechnen einen 0 / 1 - Matrix

Der erste Schritt, um die 0 / 1 Matrixform zu erhalten, ist, die vier Spalten rechts neben dem Gemeindenamen mit Überschriften - den künftigen Variablennamen zu versehen. Diese können etwa lauten: IC, REX, SBAHN und Regional. Diese vier Überschriften werden danach gleichzeitig kopiert und rechts neben den Original-Überschriften eingefügt, mit beliebigem Abstand dazwischen.

g1.jpg

Die nächste Aufgabe wird sein, die 4 Listen in das File zu importieren. Gnumeric bietet dafür einen passenden Assistenten, der über Daten -> Externe Daten anfordern -> Textdatei importieren aufgerufen werden kann. Rechts unten muss von "Tabellenkalkulationen" auf "Alle Dateien" umgestellt werden, anschließend kann die erste Liste (Intercity) ausgewählt werden. In weiterer Folge klick man solange auf "Vor", bis dies nicht mehr möglich ist, und nur mehr die Option "Fertigstellen" möglich ist. Der Assisten wählt so automatisch die richtigen Einstellungen (v.a. Trennzeichen).

Leider ist es nicht möglich, die Liste direkt in das aktive Gnumeric-File zu importieren, es wird ein neues File geöffnet. Die so importierte Liste (im Intercity-Fall ohnehin nur eine Gemeinde) wird nun jeweils unter die entsprechende rechte Variablenüberschrift kopiert (unter den linken Variablenüberschriften soll ja eine 0 / 1 Struktur entstehen). Dieser Vorgang wird sinngemäß für alle Listen wiederholt, bis man am Ende folgendes File erhält:

g2.jpg

Für die Berechnung der notwendigen 0 / 1 Matrix (Bahnanschluss in bestimmter Qualität Ja / Nein) ist die Funktion "Countif" (Dt. Excel-Pendant "Zählenwenn") äußerst hilfreich. Sie untersucht, ob ein bestimmter Wert innerhalb einer Liste vorkommt oder nicht, und gibt 0 oder 1 zurück. Die Formel in C2 (Intercity 0 / 1) lautet als =countif(H:H;$A2) - zuerst wird die Liste bestimmt (in der Spalte H befinden sich die Intercity-Gemeinden), erst danach das Suchkriterium, und kann danach einfach hinunter gezogen werden (Alternative: Alle betreffenden Zellen markieren, Formel in die Befehlszeile eingeben und Strg-Umschalt drücken). Für die anderen Bahnanschlüsse erfolgt die Vorgehensweise analog.

g3.jpg

Die 0 / 1 Matrix liegt nun als Ergebnis einer Formel vor, nicht aber als absolute Werte. Für den Import in PSPP ist dies aber notwendig. Daher muss der zu importierende Bereich (A1:F190) als Werte in ein neues Gnumeric-File kopiert werden.

Vorgehensweise: Entsprechenden Bereich markierend und Strg-C; ein neues Gnumeric-File öffnen, mit der rechten Maustaste in die Zelle A1 klicken und "Einfügen Spezial" auswählen. Es erscheint der Kopier-Assistent, dort im Bereich "Typ einfügen" die Auswahl "Als Wert" treffen (vgl. Excel: Bearbeiten -> Inhalte einfügen -> Werte).

Das File kann nun gespeichert werden (Ordner Resultate, Name: 01Matrix).

Importieren der Gnumeric-Matrix in PSPP

Die eben erstelle 0 / 1 - Matrix soll nun in PSPP importiert werden. Dies funktioniert ähnlich wie der Import einer Textdatei, nämlich mit dem Befehl GET DATA. Also wieder ein neues Syntax-Fenster in einem leeren PSPP-File aufrufen und folgendes Programm ausführen:

g4.jpg

Die Kurzform des Gnumeric-Formats ist, wie ersichtlich, GNM.

Der Parameter SHEET wird notwendig, wenn man ein bestimmtes Sheet des Gnumeric-Files importieren will (Standardmäßig sind ja in einem neuen Gnumeric-File drei Tabellenblätter offen). Es besteht die Möglichkeit, ein Tabellenblatt über seinen Namen anzusprechen (wie im Programm durchgeführt), oder über seine Indexnummer, in der Form /SHEET=INDEX ** (Das erste Tabellenblatt erhält die Indexnummer 1). Wird SHEET weggelassen, so wird automatisch das erste Tabellenblatt in PSPP übernommen.

Über den Parameter CELLRANGE lässt sich angeben, ob man nur einen bestimmten Teilbereich des Gnumeric-Sheets importieren will, und zwar in der Form RANGE "linke obere Zelle : reche untere Zelle". Sollen alle Zellen des Sheets übernommen werden, kann CELLRANGE weggelassen werden.

Der Parameter READNAMES ist überaus nützlich. Mit der Angabe ON wird PSPP mitgeteilt, dass der Variablenname in der ersten Zeile des betreffenden Sheets steht. Wird READNAMES weggelassen, so generiert PSPP automatische Variablennamen.

Für die Übernahme der 0 / 1 Matrix hätten die Parameter SHEET und CELLRANGE im Programm auch weggelassen werden können, sie wurden aber zur Illustration der Möglichkeiten angeführt.

Problematisch ist, dass bei der Übernahme von String-Variablen die maximale Länge anhand der Länge der ersten Ausprägung der ersten String-Variable bestimmt wird (im File ist das Wiener Neustadt -Länge 15 Zeichen), somit wird bereits der dritte Gemeindename - Altenmarkt an der Triesting - abgeschnitten. Lt. Handbuch gebe es zwar einen Parameter, über den die maximale Länge von String-Variablen beim Import selbst bestimmt werden kann, bei der testweisen Verwendung dieses Parameters schlug aber der ganze Import fehl. Numerische Variablen werden standardmäßig mit 2 Dezimalstellen übernommen, es ist daher zweckdienlich, sie in der Variable View auf 0 Dezimalstellen umzustellen. Anschließend sollte das File als 01Matrix.sav in den Ordner Resultate gespeichert werden.

g5.jpg

Variable Bahnanschluss JA/NEIN berechnen

Anhand der 0 / 1 Matrix kann man ablesen, in welchen Gemeinden es überhaupt einen Bahnanschluss gibt oder nicht. Dies soll in eine etwas "kompaktere" Form gegossen werden, nämliche eine einzige 0 / 1 - Variable. Wie machen? Multiplizieren oder Addieren kommt nicht infrage, es wird also bei der Berechnung der neuen Variable mit Sicherheit eine Funktion gebraucht. Infrage kommen die Funktionen

ANY (ist das sinngemäße Pendant zu ZÄHLENWENN in Excel bzw. COUNTIF in Gnumeric, es können praktischerweise auch mehrere Variablen zum Vergleich herangezogen werden)

oder MAX (gibt den maximalen Wert innerhalb eines Settings zurück - zwar enthält die 0 / 1 Matrix für die Gemeinden, die keinen Bahnanschluss besitzen, eigentlich keine Werte, PSPP hat aber die - in dem Fall - angenehme Angewohnheit, nicht vorhandene Werte wie den Wert 0 zu behandeln).

Welche Funktion verwendet wird, ist letztendlich Geschmackssache. Nachfolgend die Codes für beide Varianten, der im "Compute Variable" - Fenster (über Transform -> Compute) eingegeben werden muss. Als Variablenname wird Bahn_ja_nein vorgeschlagen.

mit ANY: ANY(1,IC,REX,SBAHN,Regional)

// Die erste Zahl oder Variable innerhalb der Klammer ist das Suchkriterium, danach folgen alle Variaben oder Auflistungen von Zahlen, in denen nach einer Übereinstimmung gesucht wird. Wenn diese gefunden wird, wird 1 zurückgegeben, wenn nicht, dann 0)

g6.jpg

mit MAX: MAX (IC,REX,SBAHN,Regional)

g7.jpg

Wie auch sonst immer werden neuen Variablen zwei Dezimalstellen zugeordnet. Nachdem das in der Variable View korrigiert wurde, wird das File mit einfachem Save gespeichert.

g8.jpg

Berechnen der Gesamtqualität des Bahnanschlusses

Um langsam zum Ende der Arbeitsaufgabe zu kommen, soll nun für jede Gemeinde eine Gesamtqualität des Bahnanschlusses (wenn vorhanden) bestimmt werden. Die unterschiedlichen Bahnanschlüsse sollen entsprechend differenziert gewichtet werden:

IC - Anschluss: Wertigkeit 10

REX - Anschluss: Wertigkeit 5

SBAHN - Anschluss: Wertigkeit 3

Regionalzug - Anschluss: Wertigkeit 1

Die neu zu berechnende Variable soll den Namen "Gesamtqualitaet" tragen. Es wird also, wie zuvor, das "Compute Variable" - Fenster aufgerufen und mit Folgender Formel die Gesamtqualität berechnet:

g9.jpg

Bitte auch hier wieder die Dezimalstellen korrigieren. Im Anschluss sollte gleich wieder gespeichert werden.

g10.jpg

Anhängen und Aggregieren der Erwerbstätigen nach Gemeinden mit gleicher Bahnanschlussqualität

Schließlich soll festgestellt werden, wie sich die Erwerbstätigen auf die Gemeinden unterteilt nach Bahnanschlussqualität verteilen. Dazu müssen diese zunächst mittels MATCH FILES an die 0 / 1 - Matrix drangehängt werden. Praktischerweise wurden die Erwerbstätigen bereits im ersten Arbeitsteil sortiert und sollten im Ordner Resultate gespeichert sein.

g11.jpg

Um die Absolutwerte zu erhalten, müssen die Erwerbstätigen nach der Gesamtbahnanschlussqualität mittels AGGREGATE aufsummiert werden. Das Ergebnis soll in ein neues File geschrieben werden.

g12.jpg

Das neu berechnete File sollte wie folgt aussehen:

g13.jpg

Prozentuelle Verteilung der Erwerbstätigen: Aggregieren und neue Variable berechnen

Zu guter letzt sollen aus den Absolutwerten die prozentuellen Werte berechnet werden. Dazu ist es notwendig, die Gesamtzahl der Erwerbstätigen zu kennen. Diese erhält man wieder über aufsummieren mittels AGGREGATE. Das Problem an der Sache ist, dass AGGREGATE immer nach einer Break-Variable verlangt, in diesem Beispiel sollen aber alle Werte aufsummiert werden. Lösungsweg: Es wird eine "Hilfsvariable" erstellt, die immer dieselbe Ausprägung erhält (z.B. den Wert 1):

g14.jpg

Nach dieser Hilfsvariable werden dann die Erwerbstätigen aufsummiert. An dieser Stelle wäre es zugegeben sehr praktisch, wenn der Parameter /DOCUMENT funktionieren würde. Tut er aber nicht, somit muss das Ergebnis in ein neues File geschrieben werden (alle_erw) und anschließend mit MATCH FILES angehängt werden.

g15.jpg

g16.jpg

g17.jpg

g18.jpg

Jetzt können die Prozentwerte mittels einfacher Division berechnet werden:

g19.jpg

g20.jpg

Das Ergebnis sollte mit Namen "verteilung_erw_gesamtqual" in den Ordner Resultate gespeichert werden.

Vergleich der Fahrzeiten im MIV und im ÖV für alle Gemeinden

Als letztes Kriterium soll aus den Differenzen zwischen den Fahrzeiten von allen zu allen Gemeinden einerseits im MIV und andererseits im ÖPNV ein Ranking abgeleitet werden.

Die Fahrzeiten im MIV und im ÖPNV zwischen allen Gemeinden, sowie von allen Gemeinden in die Wiener Bezirke (da diese für das Wiener Umland von besonderer Relevanz sind) stehen als Matrizen zur Verfügung (auch wieder in den DatenVerwendung - Ordner zu speichern):

- Fahrzeiten im MIV

fahrzeiten_iv.sav

- Fahrzeiten im ÖPNV

fahrzeiten_ov.sav

Zusammenhängen

Zunächst sollen diese beiden Files zusammengehängt werden. In dem besonderen Fall reicht allerdings nicht VON oder NACH allein als Schlüsselvariable (da ja beide mehrfach vorkommen), sondern es müssen beide Variablen als Schlüsselvariablen angegeben werden. Sie werden im Syntaxprogramm einfach, mit Leerzeichen dazwischen, hintereinander geschrieben.

Der Programmcode sieht also wie folgt aus:

f1.jpg

und das neue File:

f2.jpg

Es sollte gleich mit Namen "fahrzeitmatrix" in den Resultate-Ordner gespeichert werden

Variable "Differenzen" bilden

Zum Vergleich herangezogen werden soll ja die Summe der Differenzen. Die Differenz der Fahrzeiten muss erst einmal gebildet werden. Dies sollte mittlerweile kein Problem mehr darstellen: Über Transform -> Compute den Rechner öffnen und dort die Subtraktion fz_ov - fz_iv eingeben, Variablenname "Differenz".

Hier treten nun auf einmal Kommastellen hervor. Erhöht man in der Variable View die Breite und Dezimalstellenanzahl der Variablen Von und Nach, so kann man erkennen, dass die Werte tatsächlich Sekundenbruchteile enthalten (obwohl im Grunde nicht wirklich sinnvoll). Das soll aber nicht weiter stören, am besten man stellt die Dezimalstellen auf 0 und speichert erneut.

Aggregieren dieser Variable

Auch das Aggregieren wurde bereits oft genug geübt. Zur Sicherheit hier der Programmcode:

f3.jpg

Klassenbildung

Zum Schluss sollen die Gemeinden anhand der aufsummierten Differenzen in Klassen eingeteilt werden. Zur besseren Übersicht werden die Differenzen, derzeit noch in Sekunden gespeichert, durch 3600 dividiert, um den Wert in Stunden zu erhalten. Dies funktioniert wieder über Transform -> Compute, Name diff_stunden.

Wie erfolgt nun die Klasseneinteilung an sich? SPSS-User sollten damit bereits vertraut sein, für alle anderen: Über Transform -> Recode into Different Variables (Recode into Same Variables hat die gleiche Funktion, nur dass hier keine neue Variable berechnet, sondern die alte Variable überschrieben wird). Es öffnet sich folgender Assistent:

f4.jpg

Hier kann man auswählen, welche Variable(n) umcodiert werden soll(en) - es können auch mehrere gleichzeitig und unabhängig voneinander reklassifiziert werden. Im Beispielfall wird die Variable diff_stunden herangezogen. Gleich im Anschluss sollte sie markiert werden und der aus ihr entstehenden neuen Variable im Output Variable - Bereich ein Name (und ev. ein Label) zugewiesen werden, mit "Change" wird der Name bestätigt.

Die Regeln für die Umcodierung werden über einen Unterassistenten unter "Old and New Values" bestimmt.

f5.jpg

In der linken Hälfte wird der "Input" bestimmt, also die Werte der alten Variable (zur Auswahl steht die Angabe eines bestimmten Wertes, einer Spannweite von Werten, Heranziehen von leeren Felder - Missing Values und danach alle übrigen Werte), in der rechten Hälfte der Output (kann ein bestimmter Wert sein, die Umwandlung in einen Missing Value oder schlicht die Übernahme des alten Wertes). Man füllt also für jede bestimmte Umcodierung die linke und die rechte Hälfte aus und klickt anschließend auf "Add". Wenn alle Regeln für die Umcodierung festgelegt sind, wird mit "Continue" und dann im Hauptassistenten mit "OK" bestätigt.

Im Beispielfall sollen vier Klassen, in etwa gleich groß anhand der Differenzen, gebildet werden. Dazu ist notwendig, zu wissen, wie groß die minimale Differenz, und wie groß die maximale Differenz ist. Dies fällt in den Bereich "Deskriptive Statistiken", mehr dazu im letzten Kapitel dieses Tutorials. Die Min und Max - Werte, sowie praktischerweise die Spannweite, erhält man über Analyze -> Descriptives -> Frequencies (derselbe Weg wie in SPSS), zuvor muss allerdings der Recode-Assistent geschlossen werden.

f6.jpg

Unter "Statistics" soll "Min", "Max" und "Range" angehakt, der Rest kann weggelassen werden. Der automatisch generierten Häufigkeitstabelle im Output-Fenster braucht man keine Beachtung schenken, die relevanten Ergebnisse stehen ganz unten.

f7.jpg

Die Spannweite beträgt 181,91 Stunden, geteilt durch 4 (für 4 Klassen) ergibt das einen Wert von etwa 46. Somit ergeben sich die Grenzen für die Klassen (sollen ganzzahlig sein):

Lowest Value (88,93) - 135 (Klasse 1)

135 - 181 (Klasse 2)

181 - 227 (Klasse 3)

227 - Highest Value (270,84) (Klasse 4)

Die Überschneidungen bei den Grenzen sind nicht weiter problematisch, PSPP würde einen Wert von beispielsweise genau 181 der niederen Klasse zurechnen.

Nun muss erneut der Recode - Assistent aufgerufen und die Klassengrenzen festgelegt werden (unter Verwendung aller 3 Range - Optionen):

f8.jpg

Das Ergebnis sollte wie folgt aussehen:

f9.jpg

und im Anschluss als "Klassifizierung_Differenzen" gespeichert werden.

Statistische Analysen

Die folgenden Unterkapitel liefern einen groben Überblick über die wichtigsten statistischen Analyseverfahren. Nicht verschwiegen werden soll, dass bereits ein umfangreiches Tutorial zu diesem Thema in englischer Sprache existiert: http://pspp.kiberpipa.org/wiki/doku.php

Deskriptive Statistik allgemein, Tabellen und Diagramme

Unter der Auswahloption "Descriptive Statistics" sind die 4 wichtigsten Analysegruppen dazu zusammengefassen:

- Descriptives und

- Frequencies

für die Darstellung der wichtigsten statistischen Kenngrößen, etwa Minumum, Maximum, Spannweite, Varianz, Median, Standardabweichung,...

- Explore

für eine explorative Datenanalyse

- Crosstabs (Kreuztabellen)

Unter Frequencies finden sich auch Assistenten zur Erstellung von Kreisdiagrammen, Histogrammen und Häufigkeitstabellen. Dies bleibt leider die einzige Möglichkeit, Ergebnisse in PSPP tabellarisch und graphisch darzustellen. Anhand der vorher fertig gestellten Klassifizierung werden diese Möglichkeiten nun dargestellt.

Im Hilfsfenster "Charts" (über den Button Charts... in Frequencies) können Einstellungen für Histogramme und Pie-Charts (Kreisdiagramme) vorgenommen werden. Es soll nun sowohl ein Histogramm mit einer Normalverteilungskurve, anhand von Häufigkeiten, als auch ein Kreis-Diagramm gezeichnet werden:

s1.jpg

Mit "Continue" wird bestätigt. Auch auf das Hilfsfenster für die Häufigkeitstabellen ("Frequency Tables") soll ein Blick geworfen werden:

s2.jpg

Die Grundeinstellungen passen soweit, nun wieder mit "Continue" bestätigen und im Hauptfenster die Berechnung mit "OK" starten. Hier nun die Ergebnisse:

s3.jpg

s4.jpg

s5.jpg

Schon von weitem ist erkennbar, dass das Ganze optisch nun nicht gerade "ansprechend" wirkt, v.a. wegen fehlender Legende. Histogramm und Pie-Chart dienen also wohl eher dem User allein zur besseren Orientierung. Trotzdem besteht die Möglichkeit, diese Ergebnisse auf vielvältige Weise zu exportieren: Unter File -> Export (direkt im Output-Fenster) kann man u.a. PDF, HTML, ODT oder TXT als Format auswählen. Besonderheiten: Beim Export als HTML-Datei werden Histogramm und Pie-Chart automatisch zu JPG´s generiert, der Export in ein Textfile übernimmt dagegen nur die Häufigkeitstabelle.

Die Berechnung einer weiteren wichtigen statistischen Kenngröße ist leider nicht über die Assistenten der graphischen Benutzeroberfläche mögliche: Die Quantile. Will man beispielsweise die Gemeinden nicht nach festgelegten Klassen an Zeitdifferenzen unterteilen (wie geschehen, sondern 4 von der Anzahl der Gemeinden her gleich große Gruppen bilden, benötigt man das Quartil (=25% Quantil) der Zeitdifferenzen. Dafür wird folgendes Syntaxprogramm notwendig:

s6.jpg

Es wird standardmäßig auch eine Häufigkeitstabelle erzeugt. Die gewünschten Ergebnisse befinden sich ganz unten:

s7.jpg

Varianzanalyse ÖV Zeitqualität - Quotient ÖV Pendler / MIV - Pendler

Es soll nun als erstes überprüft werden, ob zwischen dem Kriterium "ÖV-Zeitqualität", also die zuvor berechnete Klassifizierung der Gemeinden, und dem Quotienten ÖV-Auspendler / MIV-Auspendler jeder Gemeinde ein statistischer Zusammenhang besteht. "ÖV-Zeitqualität" ist eine qualitative Variable, der Quotient eine quantitative, somit kommt hierfür eine Varianzanalyse infrage.

Vorbereitungen (Aggregieren, Berechnung des Quotienten, Files zusammenhängen)

Als Grundlagefile (bitte in den DatenVerwendung - Ordner speichern) steht eine Pendlermatrix zur Verfügung, die Anzahl und Art der Pendlerströme von allen zu allen Gemeinden beschreibt.

- Pendlermatrix

pendlermatrix.sav

Die IV bzw. ÖV-Pendler müssen zunächst gemeindeweise aufsummiert werden:

s8.jpg

Im neu entstandenen File "Pendlerquotient" sollte dieser Quotient auch gleich berechnet werden (Transform -> Compute; Variablenname Quotient, Formel OV_Pendler/IV_Pendler).

s9.jpg

Anschließend wird dieses File mit der Klassifizierung der Differenzen zusammengehängt

s10.jpg

und kann nun einmal gespeichert werden.

Varianzanalyse an sich

Der Assistent für die Varianzanalyse wird über Analyze -> Compare Means -> One Way ANOVA aufgerufen. Die abhängige Variable ist der Quotient, der Faktor die Klassen. Im Zuge der Varianzanalyse sollen auch deskriptive Statistiken erhoben werden (unter Statistic "Descriptives" anhaken).

s11.jpg

Regressionsanalyse Bahnanschlussqualität - PKW-Neuzulassungen

Ein anderer möglicher Zusammenhang, der untersucht werden soll, ist der zwischen der Bahnanschlussqualität aller Gemeinden und den jeweiligen PKW-Beständen. Diese stehen als Grundlagedaten (auch wieder in den DatenVerwendung - Ordner zu speichern), aufgesplittet auf zwei Files, zur Verfügung:

- PKW-Bestände 1.Teil

PKW_Bestand_1.sav

- PKW-Bestände 2.Teil

PKW_Bestand_2.sav

Fälle hinzufügen und Files zusammenhängen

Diese beiden Files müssen zunächst zusammengefügt werden. Der Unterschied zu bereits oft getanen Zusammenhängen (über Schlüsselvariablen) besteht darin, dass hier keine Variablen zusammengehängt werden, sondern Fälle von Variablen.

Somit heißt der Befehl des notwendigen Syntaxprogramms auch anders, und zwar ADD FILES. Dieser Befehl verlangt gleich zweimal den Parameter FILE. Das erste FILE bestimmt den Speicherort (Pfandangabe für Speichern als neue Datei, * für direkten Hineinschreiben in die offene Datei), das zweite FILE bestimmt diejenige Datei, deren Fälle hinzugefügt werden sollen. Es wird also die Datei PKW_Bestand_1 geöffnet und folgendes Syntaxprogramm angewandt:

s12.jpg

Das Ergebnis wird gespeichert als "PKW_Bestand_gesamt" in den Ordner Resultate.

Die Bahnanschlussqualität steht im File "O1Matrix". Dieses wird geöffnet, und mit MATCH FILES werden die PKW-Bestände hinzugefügt.

s13.jpg

Das File kann als "Matrix_Bestand" in den Resultate - Ordner gespeichert werden.

Regressionsanalyse an sich

Eine Regressionsanalyse wird in PSPP über Analyze -> Linear Regression aufgerufen. Abhängige (Dependet) Variable ist der PKW-Bestand, unabhängige (independent) die Bahnanschlussqualität.

s14.jpg

Nachfolgend das Ergebnis (aufgrund der relativ geringen Stichprobengröße nur ein pro-Forma-Ergebnis ohne echte Aussagekraft):

s15.jpg

Impressum

Autor: Thomas Feilmayr

Dieses Wiki wurde im Rahmen der Lehrveranstaltung "280.051 Ausgewählte Kapitel der angewandten Geoinformatik", Studiengang Raumplanung und Raumordnung, TU Wien, WS 2010/2011 erstellt.

Betreuung: Univ. Ass. DI Roman Seidl, DI Stefan Geier

Quellen der Grundlagedaten:

- Statistik Austria (http://www.statistik.at), Zeitraum Dezember 2010 - Jänner 2011

- Homepage des Landes Niederösterreich (http://www.noe.gv.at -> Verkehr und Technik), Zeitraum Dezember 2010 - Jänner 2011

Besonderer Dank an Univ. Ass. DI Dr. Hans Kramar für die Bereitstellung von Datensätzen zu Fahrzeiten (von / nach) und Bevölkerung (Pendler und Erwerbstätige) von Wiener Umlandgemeinden

OpenPlanningTools: Statistik mit PSPP (last edited 2011-02-11 16:01:50 by esrpc39)