Compute-Befehl

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
StatSoz
Beiträge: 3
Registriert: 20.02.2013, 14:56

Compute-Befehl

Beitrag von StatSoz »

Zunächst ein Hallo in die Runde,

ich hoffe in diesem Forum eine Lösung für mein mittlerweile zwei Tage andauerndes Problem zu bekommen. Vermutlich werde ich mich in Grund und Boden ärgern, da die Lösung ganz nah ist, aber nichtsdestotrotz komme ich nicht weiter und verzweifle schier. Es geht um eine Variablenoperation, die innerhalb weniger Minuten zu machen sein sollte, aber ich bekomme es schlichtweg nicht hin.

Hier mein Problem:

Ich habe zwei Variablen (q14 und q16) und möchte eine neue Variable aus diesen beiden erstellen.
Dabei soll die neue Variable (Absicherung) den Wert 1 haben, wenn sowohl q14, als auch q16 den Wert 1 haben, also die Befragten bei beiden Fragen mit ja antworteten.

Absicherung soll den Wert 2 erhalten, wenn q14 ODER q16 den Wert 1 erhielten, die Befragten also eine der beiden Fragen positiv beantworteten.
Absicherung soll den Wert 3 erhalten, wenn q14 UND q16 den Wert 2 haben, also beide Fragen seitens der Interviewten mit nein beantwortet wurden.

Ansonsten sollen die fehlenden Werte der neuen Variablen "Absicherung" den Wert 9 erhalten, nämlich dann, wenn sowohl bei q14, als auch bei q16 97 ("weiß nicht") oder 98 ("keine Angabe") genannt wurde.

Hier mal meine, für mich schlüssige Syntax:

COMPUTE Absicherung=0.
IF (q14=1 and q16=1) Absicherung=1.
EXECUTE.
IF (q14=1 or q16=1) Absicherung=2.
EXECUTE.
IF (q14=2 and q16=2) Absicherung=3.
EXECUTE.
IF (q14=97 or q14=98 ) Absicherung=9.
EXECUTE.
IF (q16=97 or q16=98 ) Absicherung=9.
EXECUTE.
MISSING VALUES Absicherung (9).
EXECUTE.


[PS: Die Leerzeile zwischen 98 und ) habe eingefügt, da sonst ein Smily mitb Sonnenbrille in der Syntax herumlungert]

Heraus kommt zwar eine Variable "Absicherung", allerdings eine vollkommen unbrauchbare, der zunächst die Kategorie 1 fehlt (wird mit ,00 angegeben was wohl am Ausdruck 0 der Variable liegt), bei der die fehlenden Werte vollkommen ignoriert werden und die Werte der Kategorien 1-3 (bzw. ,00-3) in Widerspruch zu den Werten der beiden Ausgangsvariablen stehen.

Es ändert sich auch überhaupt nichts, wenn ich bspw. den Syntaxteil der fehlenden Werte weglasse. Eine Fehlermeldung erhalte ich aber auch keine und bin mittlerweile ziemlich ratlos und entnervt, da ich an einer Hausarbeit sitze und es mir im Grunde genommen nicht leisten kann, zwei Tage mit solchen doch eigentlich trivialen Problemen zuzubringen.

Wer kann mir helfen mich von dem Schlauch zu schubsen, auf dem ich ganz offensichtlich stehe?

Tausend Dank im Vorraus!!!
Frido
Beiträge: 346
Registriert: 25.09.2012, 15:04

Beitrag von Frido »

Hallo StatSoz,

dein Fehler liegt hier: IF (q14=1 or q16=1) Absicherung=2.

probiere es doch mal damit:
IF (q14=1 and q16 ne 1) Absicherung=2.

IF (q16=1 and q14 ne 1) Absicherung=2.
StatSoz
Beiträge: 3
Registriert: 20.02.2013, 14:56

Beitrag von StatSoz »

Hallo Frido,

herzlichen Dank für die fixe Antwort. Ein Problem wäre damit behoben. Der Befehl OR schließt wohlnicht nur das "entweder-oder", sondern auch das "sowohl-als-auch" zusätzlich ein, wie ich jetzt mitbekommen habe. Danke!

Allerdings beinhaltet "nicht 1" ja auch die fehlenden Werte (97,98 ), die ich in der neuen Variablen nicht unter 2, sondern wie gehabt unter 9 rausrechnen wollte. Das sollte ja auch eigentlich kein Problem sein, da ich sie als solche definiert habe, aber beim "sollte" bleibt es vorerst; dieses Problem ist geblieben.

Die zwei ursprünglichen Variablen hatten zusammen 77 Fälle, die als fehlend gelten (97 - "weiß nicht" / 98 "keine Angabe") und auch entsprechend als MISSINGVALUE deklariert sind. Die neue Variable (Absicherung) gibt mir allerdings keinen einzigen fehlenden Fall an. Darüber hinaus habe ich noch immer die dubiose ,00-Kategorie statt lediglich 1-3, wobei mir auch rätselhaft ist, wie die sich in Luft auflösen könnte, da die beiden Probleme wohl miteinander verwoben sind.

Ich habe mittlerweile sowohl q14, als auch bei q16 so rekodiert, dass "weiß nicht" (97) und "keine Angabe" (98 ) einfach nur als 9 zusammengefasst sind und als missingvalue deklariert.

Nun Also:

COMPUTE Absicherung=0.
IF (q14=1 and q16=1) Absicherung=1.
EXECUTE.
IF (q14=1 and q16 ne 1) Absicherung=2.
EXECUTE.
IF (q16=1 and q14 ne 1) Absicherung=2.
EXECUTE.
IF (q14=2 and q16=2) Absicherung=3.
EXECUTE.
IF (q14=9) Absicherung=9.
EXECUTE.
IF (q16=9) Absicherung=9.
EXECUTE.
MISSING VALUES Absicherung (9).
EXECUTE.

Dennoch wie gesagt keine fehlenden Werte bei der neuen Variablen.

Frequencies wirft mir also folgendes aus:



Gesamt: 5118
Fehlend: 0

Absicherung

Häufigkeit Prozent Gültige Prozente
Gültig
,00 65 1,3 1,3
1,00 2626 51,3 51,3
2,00 1683 32,9 32,9
3,00 744 14,5 14,5

Gesamt 5118 100,0 100,0



Die fehlenden Werte haben sich also in Luft aufgelöst. Ich dachte zu Beginn es könnte sich dabei um die Fälle handeln, die nicht in den drei Kategorien landeten, also die uner ",00", allerdings stimmt diese Zahl wiederum nicht mit den fehlenden Fällen der beiden Ursprungsvariablen überein, da deren Summe 77 ergeben sollte.

Auch hierzu eine kleine Hilfestellung wäre fantastisch, vielen Dank!


PS: Mir fällt gerade auf, dass die Darstellung der Werte hier nur als unübersichtlicher Kloß abgebildet wird. In meiner Antwortbox ist es schön geordnet. Vielleicht ist es dennoch ersichtlich, auf jeden Fall war ich nicht zu faul ein wenig die Space-Taste zu drücken.






EDIT:

Wieder ein paar haarsträubende Stunden später und es hat weiterhin nichts funktioniert was mir in der Zwischenzeit so in den Sinn gekommen ist. Die Werte verändern sich zudem überhaupt nicht, wenn ich bspw. die gesamten Befehlszeilen, die sich auf fehlende Werte beziehen, einfach weglasse und auch wenn ich den Befehl von Frido ein wenig abändere um die fehlenden Werte (9) explizit nicht mitzuzählen:

COMPUTE Absicherung=0.
IF (q14=1 and q16=1) Absicherung=1.
EXECUTE.
IF (q14=1 and q16=2) Absicherung=2.
EXECUTE.
IF (q16=1 and q14=2) Absicherung=2.
EXECUTE.
IF (q14=2 and q16=2) Absicherung=3.
EXECUTE.

Im Grunde genommen bedeutet das ja, dass bereits alle Werte innerhalb dieser drei Kategorien abgehandelt sind, da die Gesamtsumme der Endvariablen auch denen der Ursprungsvariablen entspricht. Allerdings verstehe ich noch immer nicht, weshalb hier die Variablen 9 beinhaltet sein sollten, wenn sie überhaupt keine Erwähnung finden. Zudem diese Kategorie ",00", die auch weiterhin ein Rätsel bleibt. Es kann doch nciht sein, dass ich zwei Tage der Hausarbeit tatsächlich mit sowas zubringe
:?
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Ich habe zwei Variablen (q14 und q16) und möchte eine neue Variable aus diesen beiden erstellen.
Dabei soll die neue Variable (Absicherung) den Wert 1 haben, wenn sowohl q14, als auch q16 den Wert 1 haben, also die Befragten bei beiden Fragen mit ja antworteten.

Absicherung soll den Wert 2 erhalten, wenn q14 ODER q16 den Wert 1 erhielten, die Befragten also eine der beiden Fragen positiv beantworteten.
Absicherung soll den Wert 3 erhalten, wenn q14 UND q16 den Wert 2 haben, also beide Fragen seitens der Interviewten mit nein beantwortet wurden.
Etwa so:

Code: Alles auswählen

DO IF (q14 eq 1 and q16 eq 1).
compute absicherung = 1.
ELSE IF (q14 eq 1 or q16 eq 1).
compute absicherung = 2.
ELSE IF (q14 eq 2 and q16 eq 2).
compute absicherung = 3.
ELSE.
compute absicherung = 98.
END IF.
EXECUTE.
drfg2008
StatSoz
Beiträge: 3
Registriert: 20.02.2013, 14:56

Beitrag von StatSoz »

Guten Morgen drfg2008,

danke für den Versuch, allerdings bleiben die Ergebnisse exakt identisch.

Das heißt:

-> Weiterhin habe ich die Kategorien 1-3, doch eben auch die ",00" an erster Stelle, die ich nicht wegbekomme und nicht weiß welche Fälle darin sein könnten.
-> Weiterhin habe ich in der neu generierten Variable keinerlei fehlende Werte, obwohl die beiden Ursprungsvariablen zusammen 77 fehlende Fälle beinhalteten.

Ich habe nun schon unzählige unterschiedliche Versionen versucht, es kommt stets dasselbe heraus. Zugegebenermaßen mag es aber auch verwirrend sein, wie ich es hier beschreibe, da es sicherlich einfachere Dinge zu verbalisieren gibt, als Probleme mit SPSS, wenn man das Problem nicht gleichzeitig anschaulich machen kann. Da man hier auch keine konkreten Datensätze ansprechen soll (evt. hat den selbst jemand schon bearbeitet), hoffe ich also, dass doch noch jemandem eine Lösung einfällt.

Der Fehler muss irgendwie mit den fehlenden Werten zusammenhängen. Die Kategorie ,00 wiederum kommt durch meinen eigenen Befehl (compute Absicherung=0), aber eben wohl auch nur deshalb, da die fehlenden Werte noch nirgens sind. Wenn die berücksichtigt werden löst sich diese Kategorie ,00 vielleicht auf?!?!?!
Ich möchte nur ungern meinem Dozenten schreiben, da der in der Benotung schließlich berücksichtigt wie ich SPSS beherrsche und unsere Übungen mit dem Compute-Befehl nie Probleme machten (allerdings auch anders gestaltet waren).
guest
Beiträge: 3
Registriert: 24.02.2013, 05:18

Beitrag von guest »

StatSoz

Möglicherweise hilft diese - wenn auch holprige - Syntax:

COMPUTE Absicherung = 0.
IF ((q14 = 1) AND (q16 = 1)) Absicherung = 1.
IF ((q14 = 1) OR (q16 =1)) Absicherung = 2.
IF ((q14 = 2) AND (q16 = 2)) Absicherung = 3.
IF ((q14 > 96) AND (q16 > 96)) Absicherung = 9.
EXECUTE.

Hinweise:
1.) Mit dem COMPUTE-Befehl am Anfang sagst du "schreibe mir eine Variable Absicherung mit dem Wert 0." Das heisst, dass die Variable grundsätzlich mal 0 ist - daher auch deine 0te-Kategorie.

2.) Da mir nicht ganz klar ist, welchen Range du bei deiner Variable "Absicherung" für missing values definiert hast (z.B. negativ bis und mit null oder fixe Zahlen wie "97" oder "98") musst du unter Umständen die obige Syntax noch anpassen. Gibt es neben "97" und "98" noch weitere Möglichkeiten von Missing Values, z.B. dass eine Eingabe grundsätzlich "vergessen gegangen" sein könnte? Dann wäre die Variable - wie du es definiert hast - gleich 0.

Liebe Grüsse

Guest
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