multinominale Variable in einzelne Ausprägungen umkodieren

Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
Antworten
geomo
Beiträge: 2
Registriert: 26.09.2013, 19:29

multinominale Variable in einzelne Ausprägungen umkodieren

Beitrag von geomo »

Hallo zusammen,

ich habe einen Datensatz mit mehreren multinominalen Variablen. Für meine spätere Analyse benötige allerdings nur dichotome Variablen.
Bisher bin ich wie folgt vorgegangen:

Transformieren --> umkodieren in andere Variable

Allerdings haben einige Variablen mehr als 100 Ausprägungen, sodass ein manuelles Vorgehen unheimlich lange dauert. Eine beispielhafte Transformation wäre die Umwandlung der Variable "Staatsangehörigkeit" (1= Deutschland, 2= Frankreich, 3= Italien, ...., 162=Nepal) in einzelne dichotome Variablen nach der Form "Staatsangehörigkeit: Deutschland" (0= trifft nicht zu, 1= trifft zu).....
Gibt es hierfür eine Anwendung in SPSS bzw. eine Syntax die das Vorgehen automatisieren könnte?


Danke im vorraus!

Gruß
Geomo
Tünnes
Beiträge: 20
Registriert: 23.09.2013, 18:02

Beitrag von Tünnes »

ich glaube schon, statt alle 162 Länder aufzuzählen nur das erste und letzte nennen und mit THRU verbinden, also komplett:
recode staatsang (2 thru 162 = 2).
Das müsste eigentlich reichen, da die 1 ja eine 1 bleibt.
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

@Tünnes: das war nicht die Frage

Ja, es gibt drei Möglichkeiten: Eine von IBM, eine umständliche per Excel und eine von mir. IBM und meine Lösung benötigen Python. Dazu musst du dir die "Python Essentials" von der IBM Website herunterladen und installieren. Je nach Version von SPSS und 32 bit oder 64 bit. Bei der neuesten Version von SPSS lässt sich das wohl auch direkt über das SPSS GUI herunterladen.


https://www.ibm.com/developerworks/comm ... Statistics

(Der Download Link ist hier etwas sehr versteckt: "here" anklicken, je nach Version).

Die Installation von Python Essentials ist übrigens sehr leicht (nur die exe anklicken).



Dann gibt es drei Möglichkeiten:

[1]
IBM-Version: IBM bietet etwas Ähnliches wie 'PlugIns' . Diese müssen in SPSS eingebunden werden. Dann verfügst du über ein Pull-Down Menü, mit dem du das bequem machen kannst. Der Syntax Befehl wäre dann auch sehr einfach, da dieser dann nur das interne PlugIn aufrufen muss.

Hier ist das Dummy Programm von IBM herunterladbar:

https://www.ibm.com/developerworks/comm ... e20ae424d4

Installation: (engl. GUI) Utilities -> Extension Bundles -> Install Extension Bundles

Code: Alles auswählen

SPSSINC CREATE DUMMIES VARIABLE=month 
ROOTNAME = month_
/OPTIONS ORDER=A USEVALUELABELS=YES.

[2]
Du bastelst dir die vielen IF - Abfrage mit Hilfe von Excel zusammen. Excel hat diese wundersame Ergänzungsfunktion, wenn man Spalten oder Zeilen ergänzt.

[3]
Das folgende Programm habe ich mir geschrieben. Es benötigt die Python Essentials. Nenne einfach deine Variable um in "workflow" und dann geht alles automatisch.

Code: Alles auswählen


AUTORECODE VARIABLES=workflow 
  /INTO workflow_rec
  /PRINT.

BEGIN PROGRAM.
import spss, spssaux

variable="workflow_rec"          #    <--  put in the variable name here!
#variable="variable"
laufvariable="NBDPJLDAEHJFAOCHDGDFKFIL54848184463901c2dd25340dfcdbdf39"
dummy="dummy_" + variable +"_"

spss.Submit(r"""AUTORECODE VARIABLES="""+variable+"""  /INTO """+laufvariable+""" .""")
n = len(spssaux.VariableDict([laufvariable])[0].ValueLabels)

spss.Submit(r""" 
VECTOR """+dummy+"""("""+str(n)+""").
COMPUTE """+dummy+"""("""+laufvariable+""")=1.
EXECUTE .
""")

spss.Submit(r"""
RECODE """+dummy+str(1)+""" to """+dummy+str(n)+""" (MISSING=0).
EXECUTE.
""")     

mydict = spssaux.VariableDict([laufvariable])[0].ValueLabels
for code, label in mydict.items():
    befehl = "VARIABLE LABELS "+dummy+code+" ' "+label+" '."
    print befehl
    spss.Submit(befehl)

spss.Submit(r"""DELETE VARIABLES """+laufvariable+""".""")

END PROGRAM.
drfg2008
geomo
Beiträge: 2
Registriert: 26.09.2013, 19:29

Beitrag von geomo »

vielen Dank drfg2008!
Genau solch eine Anwendung habe ich gesucht.
Leider taucht folgende Fehlermeldung auf wenn ich Option [1] und [3] ausführe:

">Fehlernummer 6887. Befehlsname: BEGIN PROGRAM
>Das externe Programm ist während der Initialisierung fehlgeschlagen.
>Die Ausführung dieses Befehls wurde gestoppt.
Please make sure that Essentials for Python has been successfully installed."

Hast du hierzu irgendwelche Tips?
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

dann ist Python nicht richtig insalliert und kann nicht richtig gestartet werden:

Welche Version von SPSS hast du? (genaue Nummer, also etwa 20.02)
Welches Betriebssystem hast du (hoffentlich nicht Vista)
Welche Version der Essentials hast du heruntergeladen?

dann kommen wir ein Stück weiter
drfg2008
Anzeige:Statistik und SPSS: Die besten Bücher
Als Buch oder E-Book - Jetzt bestellen
spss datenanalyse
SPSS - Moderne Datenanalyse - Jetzt bestellen!
statistik datenanalyse
Statistik - Der Weg zur Datenanalyse - Jetzt bestellen!
Antworten