Brauche Hilfe: Erstellung einer Syntax

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
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Brauche Hilfe: Erstellung einer Syntax

Beitrag von Elwood »

Hallo,

ich brauche Eure Hilfe:
Ich muss für einen kleinen SPSS-Datensatz eine Syntax verfassen. Eins sag ich gleich: Bin auf dem Gebiet ziemlicher Neuling.

Folgendes ist Ziel:

- Ich habe einen kleinen Datensatz von 100 Familien. Es gibt 9 Variablen, die Werte zwischen 0 und 3 annehmen können.

- Ich will, dass SPSS eine neue Variable erstellt, die für die einzelnen Familien nur dann als 1 gesetzt wird, wenn mindestens 6 der 9 Variablen >= 2 sind.

Bisher bin ich so vorgegangen: Ich habe für jede der 9 Variablen über den Befehl "Variable berechnen" eine neue Variable definiert, die als 1 gesetzt wird, wenn sie >= 2 ist. Das klappt und stimmt soweit auch.

Jetzt dachte ich, ich addiere einfach die 9 neuen Werte und wenn sie >= 6, dann kann die neue Variable gleich 1 gesetzt werden.
Aber das klappt irgendwie nicht.

Versteht jemand, was ich will und wie ich das lösen kann?

Gruß,
Elwood
Noonen
Beiträge: 818
Registriert: 26.09.2006, 14:52

Beitrag von Noonen »

dein weg sollte funktionieren. kopiere doch mal deine syntax - dann kann man dir sicher helfen.

gruss
patrick
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Beitrag von Elwood »

Herzlichen Dank für die Antwort.

Die Syntax lautet wie folgt:

IF (AKe3adhs1 = 1) ADHS_Diag1 = 1 .
EXECUTE .

IF (AKe3adhs1.1 >= 2) ADHS_Diag1.1 = 1 .
EXECUTE .
IF (AKe3adhs1.2 >= 2) ADHS_Diag1.2 = 1 .
EXECUTE .
IF (AKe3adhs1.3 >= 2) ADHS_Diag1.3 = 1 .
EXECUTE .
IF (AKe3adhs1.4 >= 2) ADHS_Diag1.4 = 1 .
EXECUTE .
IF (AKe3adhs1.5 >= 2) ADHS_Diag1.5 = 1 .
EXECUTE .
IF (AKe3adhs1.6 >= 2) ADHS_Diag1.6 = 1 .
EXECUTE .
IF (AKe3adhs1.7 >= 2) ADHS_Diag1.7 = 1 .
EXECUTE .
IF (AKe3adhs1.8 >= 2) ADHS_Diag1.8 = 1 .
EXECUTE .
IF (AKe3adhs1.9 >= 2) ADHS_Diag1.9 = 1 .
EXECUTE .

IF ((ADHS_Diag1.1 + ADHS_Diag1.2 + ADHS_Diag1.3 + ADHS_Diag1.4 +
ADHS_Diag1.5 + ADHS_Diag1.6 + ADHS_Diag1.7 + ADHS_Diag1.8 + ADHS_Diag1.9)
>= 6) ADHS_Diagnose = 1 .
EXECUTE .
FREQUENCIES
VARIABLES=ADHS_Diagnose
/ORDER= ANALYSIS .

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Wenn ich jetzt die Häufigkeiten für die Variable "ADHS_Diagnose" berechne wird folgendes im Ausgabefenster ausgeworfen:

ADHS_Diagnose
N Gültig 0
Fehlend 267

ADHS_Diagnose
Häufigkeit Prozent
Fehlend System 267 100,0

Das kann ja nicht stimmen. Es sind ja Personen dabei, auf die das zutrifft.
Jemand Hilfe parat?
Gruß und Dank!!
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Beitrag von Elwood »

Keiner ne Ahnung, warum das nix wird?

Gruß!!
Noonen
Beiträge: 818
Registriert: 26.09.2006, 14:52

Beitrag von Noonen »

gibt es missings?

ich bilde summen immer mit:

COMPUTE adhs_tot = SUM(ADHS_Diag1.1,ADHS_Diag1.2,ADHS_Diag1.3, [etc. bis ADHS_Diag1.9 immer mit Komma getrennt) .
EXE.
IF adhs_tot=1 ADHS_Diagnose=1.
EXE.

vielleicht geht es so.
Wenndie diag1.x-variablen untereinander stehen könnte es auch kürzer gehen:
COMPUTE adhs_tot = SUM(ADHS_Diag1.1 TO ADHS_Diag1.9).

gruss
patrick
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Beitrag von Elwood »

Vielen Dank, werds gleich mal probieren.
Aber wo steht in der Syntax, dass die Summe größer gleich 6 sein muss?

Gruß,
max
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Beitrag von Elwood »

Jau, jetzt hab ichs!
Vielen Dank.
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Beitrag von Elwood »

Und direkt ein neues Problem!
Wie kann ich folgende Bedingung in eine Syntax umwandeln:

Vier oder mehr der unter F91 angegebenen Symptome müssen vorliegen, aber nicht mehr als zwei der Symptome von 9-23


Hier mein Syntaxversuch:

COMPUTE opp_tot1 = SUM(OPP_A1.1,OPP_A1.2,OPP_A1.3,OPP_A1.4,OPP_A1.7,OPP_A1.8,SOZ_A1.1,SOZ_A1.2,SOZ_A1.3,SOZ_A1.4,SOZ_A1.5,SOZ_A1.6,SOZ_A1.7,SOZ_A1.8,SOZ_A1.9,SOZ_A1.10,SOZ_A1.11,SOZ_A1.12,SOZ_A1.13,SOZ_A1.14,SOZ_A1.15).
EXECUTE .
IF opp_tot1 >= 4 OPP_B1 = 1 .
EXECUTE .

COMPUTE opp_tot2 = SUM(SOZ_A1.1,SOZ_A1.2,SOZ_A1.3,SOZ_A1.4,SOZ_A1.5,SOZ_A1.6,SOZ_A1.7,SOZ_A1.8,SOZ_A1.9,SOZ_A1.10,SOZ_A1.11,SOZ_A1.12,SOZ_A1.13,SOZ_A1.14,SOZ_A1.15).
EXECUTE .
IF opp_tot2 <= 2 OPP_B2 = 1 .
EXECUTE .

IF (OPP_B1 + OPP_B2 = 2) OPP_B = 1 .
EXECUTE .

Problem ist dabei nur, dass SPSS alle diejenigen Teilnehmer übergeht, bei der z.B. opp_tot2 gleich null ist (und somit ja auch kleiner als 2, womit die Bedingung ja erfüllt ist)!

Jemand ne Lösung?
Gruß und Danke
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Beitrag von Elwood »

Kann mir niemand helfen?

Ziel ist einfach, dass SPSS auch den Inhalt der "leeren" Felder, in denen keine Ziffer steht, als kleiner zwei erkennt.

Oder hat jemand ne andere Lösung für das Problem?

Danke!!
Elwood
Beiträge: 18
Registriert: 17.02.2008, 15:45

Beitrag von Elwood »

Hallo!

Nochmal die Frage, ob irgendwer bereits oben genanntes Problem lösen kann?

Der genutzte Fragebogen erfragt 23 Symptome.
Vier oder mehr der Symptome müssen vorliegen, aber nicht mehr als zwei der Symptome von 9-23.


Wie kann ich das in einer Syntax umsetzen?

Bisher hab ich das hier:
  • *Zunächst der Test, ob mindestens 4 Symptome vorliegen:

    COMPUTE symp_ges1 = SUM(S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23).
    EXECUTE .
    IF (symp_ges1>= 4) BED_A = 1 .
    EXECUTE .

    *Jetzt die Summe der Symptome 9-23:

    COMPUTE symp_ges2 = SUM(S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23)).
    EXECUTE .
    IF (symp_ges2 <= 2) BED_B = 1 .
    EXECUTE .

    IF (BED_A = 1 AND BED_B = 1) SYMP = 1 .
    EXECUTE .
Soweit so gut. Alles kein Problem, wenn symp_ges2 gleich 2 oder gleich 1 ist. Dann funktioniert die Syntax. Ist die Summe gleich 0 trägt SPSS in das Feld aber leider keine Null ein, sondern lässt das Feld leer. Dann wird Bedingung BED_B in der Syntax nicht erfüllt, obwohl die Bedingung an sich ja passt.
Anders gefragt: Wie krieg ich es hin, dass SPSS in Felder, in denen die Summe 0 ist, eine 0 setzt?
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