Lag-Befehl auf eine Vektor-Variable anwendbar?

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
Leelawadee
Beiträge: 4
Registriert: 27.02.2012, 14:13

Lag-Befehl auf eine Vektor-Variable anwendbar?

Beitrag von Leelawadee »

Ich möchte schauen wann ein Zustand im Längsschnitt bei Personen eines Haushaltes gleichzeitig auftritt...dazu nutze ich zunächst die Loop-Funktion, um diesen Zustand im Längsschnitt abzufassen und möchte dann mit der LAG-Funktion diesen Zustand bei den Personen eines Haushaltes abgleichen. Jedoch sagt SPSS mir, dass "das erste Argument der Funktion LAG eine Variable sein" muss...was sich wohl auf (k(x) = 15) bezieht. Kann ich den LAG-Befehl denn überhaupt auf einen Vektor anwenden? Kann darüber leider nichts finden und komme an dieser Stelle nicht weiter...

meine Syntax lautet:


vector k = SES_1 to SES_624.
compute Zustand = 0.
loop x = 1 to 624.
do if (Haushalt = LAG(Haushalt)) AND (k(x) = 15)
AND (k(x) = LAG(k(x))).
RECODE Zustand (0= 1).
do if (Zustand =1).
BREAK.
End if.
End if.
End loop.
EXECUTE.


Hat jemand einen Tipp?
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

da stecken gleich mehrere Fehler drin:

ein Vektor Befehl lautet so:

vector SES_(624).

und was soll das mit k(x) ?

Das ist nicht kompatibel mit SPSS Syntax.
drfg2008
Leelawadee
Beiträge: 4
Registriert: 27.02.2012, 14:13

re re

Beitrag von Leelawadee »

Also:

mit dem Befehl vector SES_(624) erstellt man 624 Mal die Variable SES.
Ich habe diese Variable bereits 624 Mal (die SES ist in meinem Beispiel die soziale Erwerbssituation für 624 Monate).


Im 1. Schritt habe ich k als Platzhalter definiert, den der Loop für jeden Fall 624 Mal durchlaufen soll. In k(x) spreche ich dann den jeweiligen Schritt an.

Ich habe in meinem Datensatz Personen, die einem Haushalt angehören und diese einzelnen Personen aus einem Haushalt sollen daraufhin untersucht werden wann sie gleichzeitig im Zeitverlauf die Ausprägung 15 aufweisen.

Da der Loop das nur für jeden Fall zeilenweise seperat macht, wollte ich die LAG-Funktion einbeziehen, um auf den Fall dadrüber Bezug zu nehmen. Da jetzt aber Fehlermeldungen von SPSS kommen, frage ich mich ob man LAG-Befehle mit Vektoren/allgemeinen Ausdrücken in Verbindung bringen kann!?

Danke für eure Hilfe!
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

wie gesagt, das ist nicht kompatibel mit SPSS Syntax.

Gute Referenz:

http://www.spsstools.net/

oder:

http://spssx-discussion.1045642.n5.nabble.com/
drfg2008
Leelawadee
Beiträge: 4
Registriert: 27.02.2012, 14:13

Beitrag von Leelawadee »

Da die Antworten bisher weniger hilfreich waren, habe ich inzwischen selbst eine Lösung gefunden:

Den LAG-Befehl benötige ich für meine Frage im Loop zunächst nicht...ich weiß leider auch nicht ob die Antworten von drfg2008 darauf bezogen waren?

Ich habe ich es nun wie folgt gelöst:

1. Zunächst lege ich 4 neue Variablen an:

comp startE1=0.
comp endE1=0.
comp anerE1=0.
comp dauE1=0.
VARIABLE LABELS startE1 'Monat: Beginn des ersten ausgewählten SES-Ereignisses'/ endE1 'Monat: Ende des ersten ausgewählten SES-Ereignisses'/ anerE1 'Anschlussereignis zur ausgewählten Episode'/dauE1'Dauer des ersten ausgewählten SES-Ereignisses'.
EXECUTE.

2. Dann bestimme ich das erste Ereignis (Start, Ende, Dauer des Zustands in der SES, den ich erfassen möchte und welches Ereignis daran anschließt)

*Start des Ereignisses

vector r = SES_1 to SES_624.
loop x= 1 to 624.
if (r(x) = 15) startE1=x.
end loop if (r(x) =15).
EXECUTE.

*Alter bestimmen
do if startE1 gt 0.
compute Jahr = trunc(((startE1-(GBMO-1))+(14*12))/12).
end if.
EXECUTE.
fre Jahr.
do if startE1 gt 0.
compute Monat=((((startE1-(GBMO-1))+(14*12))/12) - trunc(((startE1-(GBMO-1))+(14*12))/12))*12.
end if.
EXECUTE.
fre Monat.

*Ende des Ereignisses

do if startE1 gt 0.
vector l = SES_1 to SES_624.
loop x = startE1 to 624.
if (l(x) =15) endE1=x.
end loop if (l(x) ~= 15).
end if.
EXECUTE.

*Dauer des Ereignisses

do if startE1 gt 0.
vector r = SES_1 to SES_624.
loop x = startE1 to 624.
if (r(x) =15) dauE1 = dauE1+1.
end loop if (r(x) ne 15).
end if.
EXECUTE.

*Anschluss an das Ereignis in der SES

do if startE1 gt 0.
vector s = SES_1 to SES_624.
loop x= startE1 to 624.
if (s(x) ne 15) anerE1= s(x).
end loop if (s(x) ne 15).
end if.
EXECUTE.

3. Mithilfe des LAG-Befehls Start für Personen eines Haushaltes abgleichen.
Und es funktioniert :-)
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Und es funktioniert Smile
>Error # 4258 in column 12. Text: SES_1
>An existing variable named on the VECTOR command is invalid. The variable
>either does not exist or is a system ($) variable. To define a vector
>composed of new variables, use the form VECTOR(5) replacing the "5" with the
>number of variables to define.
>Execution of this command stops.

>Error # 4260 in column 21. Text: SES_624
>An existing variable named on the VECTOR command is invalid. The variable
>either does not exist or is a system ($) variable.

>Error # 4023 in column 5. Text: r
>An expression contains a string of characters followed by a left parenthesis,
>indicating that the string of characters is a function or vector name, but the
>characters do not match any existing function or vector. Check the spelling.
>Execution of this command stops.

>Error # 4023 in column 14. Text: r
>An expression contains a string of characters followed by a left parenthesis,
>indicating that the string of characters is a function or vector name, but the
>characters do not match any existing function or vector. Check the spelling.
>Execution of this command stops.

>Warning # 142. Command name: EXECUTE
>LOOP has no effect on this command.

>Error # 4095. Command name: EXECUTE
>The transformations program contains an unclosed LOOP, DO IF, or complex file
>structure. Use the level-of-control shown to the left of the SPSS Statistics
>commands to determine the range of LOOPs and DO IFs.
>Execution of this command stops.
drfg2008
Leelawadee
Beiträge: 4
Registriert: 27.02.2012, 14:13

Beitrag von Leelawadee »

>The variable either does not exist or is a system ($) variable

Hätte mich auch gewundert dass du den selben Datensatz mit den selben Variablen besitzt...die benötigt man natürlich um meine Syntax 1 zu 1 zu kopieren und auszuführen!
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

gut, ja. Das könnte wirklich funktionieren.

(kannst ja mal den Datensatz rüberschicken ; -)
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