Kann SPSS sich Werte merken?
-
Uhlnspeegel
- Beiträge: 26
- Registriert: 13.03.2012, 16:52
Kann SPSS sich Werte merken?
Hallo,
gibt es in SPSS einen Befehl, mit dem man Werte quasi in einem Zwischenspeicher ablegen kann, um sie nachher wieder zu verwenden?
Das Problem ist wie folgt: Ich soll Reaktionszeiten auf Ausreißer überprüfen. Jeder Fall kennzeichnet eine Aufgabe mit einer Reaktionszeit. Ich soll Werte finden, die um 3 Standardabweichungen vom Mittelwert abweichen. Die kritischen Werte (Mittelwert +/-3 Standardabweichungen) stehen in einem Fall in seperaten Variablen am Ende des Dokuments. Um die Reaktionszeiten mit den kritischen Werten vergleichen zu können, möchte ich, dass jeder Fall für die Variable "kritischer Wert" den gleichen Wert bekommt. Vorgestellt hatte ich mir das folgendermaßen:
-Wähle Fall X aus und lege den Wert von Variable Y in Zwischenspeicher ab
-Wähle alle Fälle aus
-Berechne Variable Y = zwischengespeicherter Wert
Alternativ könnte man die Reaktionszeiten vieleicht auch direkt mit den zwischengespeicherten Werten vergleichen.
Ich bin auch für andere Lösungsvorschläge dankbar.
Beste Grüße
Uhlnspeegel
gibt es in SPSS einen Befehl, mit dem man Werte quasi in einem Zwischenspeicher ablegen kann, um sie nachher wieder zu verwenden?
Das Problem ist wie folgt: Ich soll Reaktionszeiten auf Ausreißer überprüfen. Jeder Fall kennzeichnet eine Aufgabe mit einer Reaktionszeit. Ich soll Werte finden, die um 3 Standardabweichungen vom Mittelwert abweichen. Die kritischen Werte (Mittelwert +/-3 Standardabweichungen) stehen in einem Fall in seperaten Variablen am Ende des Dokuments. Um die Reaktionszeiten mit den kritischen Werten vergleichen zu können, möchte ich, dass jeder Fall für die Variable "kritischer Wert" den gleichen Wert bekommt. Vorgestellt hatte ich mir das folgendermaßen:
-Wähle Fall X aus und lege den Wert von Variable Y in Zwischenspeicher ab
-Wähle alle Fälle aus
-Berechne Variable Y = zwischengespeicherter Wert
Alternativ könnte man die Reaktionszeiten vieleicht auch direkt mit den zwischengespeicherten Werten vergleichen.
Ich bin auch für andere Lösungsvorschläge dankbar.
Beste Grüße
Uhlnspeegel
-
Uhlnspeegel
- Beiträge: 26
- Registriert: 13.03.2012, 16:52
Vielen Dank für die Antwort und für's aufnehmen der Videos.
Ich habe es genauso gemacht wie in Python-Video #8, abgesehen von den Variablennamen:
______________________________
BEGIN PROGRAM.
import spss, spssaux
Tabelle = "DESCRIPTIVES VARIABLES=Kombinierte_RZ"
Befehle,errcode=spssaux.CreateXMLOutput(
Tabelle,
omsid="Descriptives")
mean=spssaux.GetValuesFromXMLWorkspace(
Befehle,
tableSubtype="Descriptive Statistics"
rowCategory="Kombinierte_RZ",
collCategory="Mean",
cellAttrib="text")
print mean
print Tabelle
END PROGRAM.
___________________________________
Leider bekomme ich folgende Fehlermeldung:
____________________________________
File "<string>", line 10
rowCategory="Kombinierte_RZ",
^
SyntaxError: invalid syntax
___________________________________
Was mache ich falsch?
Gruß
Uhlnspeegel
Ich habe es genauso gemacht wie in Python-Video #8, abgesehen von den Variablennamen:
______________________________
BEGIN PROGRAM.
import spss, spssaux
Tabelle = "DESCRIPTIVES VARIABLES=Kombinierte_RZ"
Befehle,errcode=spssaux.CreateXMLOutput(
Tabelle,
omsid="Descriptives")
mean=spssaux.GetValuesFromXMLWorkspace(
Befehle,
tableSubtype="Descriptive Statistics"
rowCategory="Kombinierte_RZ",
collCategory="Mean",
cellAttrib="text")
print mean
print Tabelle
END PROGRAM.
___________________________________
Leider bekomme ich folgende Fehlermeldung:
____________________________________
File "<string>", line 10
rowCategory="Kombinierte_RZ",
^
SyntaxError: invalid syntax
___________________________________
Was mache ich falsch?
Gruß
Uhlnspeegel
-
drfg2008
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
Die Nutzung von Python setzt gute Kenntnis einer recht anspruchsvollen Programmierumgebung voraus. Am besten erst einmal Python Videos ansehen. Zum Beispiel muss bei Python sehr sorgfältig darauf geachtet werden, dass zusammengehörige Programmierblöcke die exakt gleichen Abstände vom Rand besitzen, da Python nicht über Klammern verfügt.
Hier eine korrekte Syntax:
Hier eine korrekte Syntax:
Code: Alles auswählen
BEGIN PROGRAM.
import spss,spssaux
spss.Submit("GET FILE='C:/<... Pfad ...>/tu-berlin.sav'.")
cmd="DESCRIPTIVES VARIABLES=Schicht,Geschlecht,Alter,Bewertung."
desc_table,errcode=spssaux.CreateXMLOutput(
cmd,
omsid="Descriptives")
meansal=spssaux.GetValuesFromXMLWorkspace(
desc_table,
tableSubtype="Descriptive Statistics",
rowCategory="Bewertung",
colCategory="Mittelwert",
cellAttrib="text")
if meansal:
print "Der Mittelwert von Bewertung ist: ", meansal[0]
END PROGRAM.
drfg2008
-
Uhlnspeegel
- Beiträge: 26
- Registriert: 13.03.2012, 16:52
Danke für das Beispiel, es hat mir geholfen Schreibfehler, fehlende Kommas und Punkte zu finden. Mittlerweile funktioniert es.
Allerdings habe ich jetzt das Problem, dass in String umgewandelte Werte mit eckigen Klammern und Anführungszeichen ausgegeben werden:
print mean
Krit_Befehl="compute kritischer_Wert="+str(mean)+"."
print Krit_Befehl
#spss.Submit(Krit_Befehl)
END PROGRAM.
['1177.21']
compute kritischer_Wert=['1177.21'].
Auf die Art erkennt SPSS den Wert nicht, wenn ich ihn in den spss.Submit-Befehl packe. Wie kriege ich es hin, dass nur die Zahl da steht?
Allerdings habe ich jetzt das Problem, dass in String umgewandelte Werte mit eckigen Klammern und Anführungszeichen ausgegeben werden:
print mean
Krit_Befehl="compute kritischer_Wert="+str(mean)+"."
print Krit_Befehl
#spss.Submit(Krit_Befehl)
END PROGRAM.
['1177.21']
compute kritischer_Wert=['1177.21'].
Auf die Art erkennt SPSS den Wert nicht, wenn ich ihn in den spss.Submit-Befehl packe. Wie kriege ich es hin, dass nur die Zahl da steht?
-
drfg2008
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
das ist ein Python spezifisches Problem der Umwandlung von Datenformaten. ['1177.21'] hier muss dann erst die eigentliche Zahl herausgelesen werden. Das geht allerdings recht einfach.
Hier eine interessante Einführung in Python (englisch):
http://www.youtube.com/watch?v=4Mf0h3HphEA
Hier eine interessante Einführung in Python (englisch):
http://www.youtube.com/watch?v=4Mf0h3HphEA
drfg2008
-
Uhlnspeegel
- Beiträge: 26
- Registriert: 13.03.2012, 16:52
So, jetzt funktioniert's.
Für den Fall, dass jemand auf das gleiche Problem stößt: Wenn man nach der oben angegebenen Art Werte aus Descriptives-Tabellen mit Python einliest, dann werden die Werte in Python als Liste (list) gespeichert. Listen werden von Python immer nach folgendem Schema ausgegeben:
mean=['Wert1','Wert2','Wert3',...] für die Liste "mean"
Um z.B. Wert1 ohne Anführungszeichen und Klammern auszulesen kann man eine Variable (mean_string) definieren, in die man das erste Element der Liste einliest (in der Praxis gibt es natürlich nur einen Mittelwert, die Liste enthält dementsprechend nur ein Element).
mean_string=mean[0]
Jetzt habe ich aber trotzdem noch ein Problem: Wenn ich versuche, auch noch die Standardabweichung einzulesen, dann bleibt die Liste leer, so als wäre die Standardabweichung nicht in der Descriptives-Tabelle enthalten. Muss ich Python extra sagen, dass die Standardabweichung bei den deskriptiven Statistiken mitberechnet werden soll?
Gruß
Uhlnspeegel
Für den Fall, dass jemand auf das gleiche Problem stößt: Wenn man nach der oben angegebenen Art Werte aus Descriptives-Tabellen mit Python einliest, dann werden die Werte in Python als Liste (list) gespeichert. Listen werden von Python immer nach folgendem Schema ausgegeben:
mean=['Wert1','Wert2','Wert3',...] für die Liste "mean"
Um z.B. Wert1 ohne Anführungszeichen und Klammern auszulesen kann man eine Variable (mean_string) definieren, in die man das erste Element der Liste einliest (in der Praxis gibt es natürlich nur einen Mittelwert, die Liste enthält dementsprechend nur ein Element).
mean_string=mean[0]
Jetzt habe ich aber trotzdem noch ein Problem: Wenn ich versuche, auch noch die Standardabweichung einzulesen, dann bleibt die Liste leer, so als wäre die Standardabweichung nicht in der Descriptives-Tabelle enthalten. Muss ich Python extra sagen, dass die Standardabweichung bei den deskriptiven Statistiken mitberechnet werden soll?
Gruß
Uhlnspeegel
-
drfg2008
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
das geht doch viel einfacher. Hier noch einmal mein Beispiel von oben:
Damit wird Python genau mitgeteilt, wo genau in der Tabelle der Wert zu finden ist, nämlich in der Zeile Bewertung UND Spalte Mittelwert.
Um jetzt also mehrere Werte auszulesen, dann jeweils die genaue Zeile und Spalte des gesuchten Werts angeben.
Dann dürfte auch das Problem mit den Listen nicht auftreten.
Beispiel zum Auslesen von Arrays:
http://www.youtube.com/watch?v=mPe7hI9c0_k
Code: Alles auswählen
tableSubtype="Descriptive Statistics",
rowCategory="Bewertung",
colCategory="Mittelwert",
cellAttrib="text")Um jetzt also mehrere Werte auszulesen, dann jeweils die genaue Zeile und Spalte des gesuchten Werts angeben.
Dann dürfte auch das Problem mit den Listen nicht auftreten.
Beispiel zum Auslesen von Arrays:
http://www.youtube.com/watch?v=mPe7hI9c0_k
drfg2008
-
Uhlnspeegel
- Beiträge: 26
- Registriert: 13.03.2012, 16:52
So, habe es hinbekommen. Der Fehler war, dass Std. Deviation -ganz Spss-untypisch- mit Leerzeichen geschrieben wird (viel Lärm um nichts, sorry!).
Was ich leider nicht hinbekomme, ist Mittelwert und Standardabweichung in einem Aufwasch einzulesen, zum Beispiel durch:
colCategory=["Mean","Std. Deviation"],
aber es geht ja auch so.
Vielen Dank für die Hilfe!
Was ich leider nicht hinbekomme, ist Mittelwert und Standardabweichung in einem Aufwasch einzulesen, zum Beispiel durch:
colCategory=["Mean","Std. Deviation"],
aber es geht ja auch so.
Vielen Dank für die Hilfe!



