Mittelwert mit Bedingung für jeden Einzelwert

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
avo
Beiträge: 3
Registriert: 13.12.2011, 11:23

Mittelwert mit Bedingung für jeden Einzelwert

Beitrag von avo »

Kann ich bei der Berechnung einer neuen Variable einen Mittelwert bilden, bei dem für jeden in den Mittelwert eingehenden Wert eine Bedingung gestellt wird?

Also, in
MEAN (v1,v2,v3...v14)
soll
v1 nur eingehen, wenn a1>5
v2 nur eingehen, wenn a2>5
usw.

Einen "umständlichen" Weg kenne ich (also alle v-Variablen umkodieren, unter der Bedingung dass aX > 5, dann erst Mittelwert bilden). Da es aber verdammt viele Variablen und mehrere unterschiedliche Bedingungen sind, suche ich nach einem kürzeren Weg.

Danke schonmal
avo
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

über eine Gewichtungsvariable, die nur aus 0 oder 1 besteht
drfg2008
avo
Beiträge: 3
Registriert: 13.12.2011, 11:23

Beitrag von avo »

@ drfg2008: Kannst Du das genauer beschreiben?

Ich finde im Brosius nur die Gewichtung von Fällen, nicht von Variablen. Zudem erscheint es mir ähnlich aufwändig wie die oben genannte Umkodierung.
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

ist mir jetzt nicht so klar, was genau die Bedingung ist. Ansonsten hier ein Skript:

Code: Alles auswählen

* generiert den Datensatz*

input program.
loop case =1 to 1000 by 1.
end case.
end loop. 
end file.
end input program.
EXECUTE.

vector v(14).
DO REPEAT #i = v1 to v14.
compute	#i	=RV.BINOM(10,0.5).
END REPEAT.
EXECUTE .

*Ende des Datensatzes*

* Hier die Lösung:*


DO REPEAT #i = v1 to v14.
RECODE #i (5=SYSMIS).
END REPEAT.
EXECUTE .

COMPUTE mittelwert=MEAN(v1 to v14).
EXECUTE.


oder sieht der Datensatz so aus:

Code: Alles auswählen

* zweite Variante.

input program.
loop case =1 to 1000 by 1.
end case.
end loop. 
end file.
end input program.
EXECUTE.

vector v(14).
vector a(14).
DO REPEAT #i = v1 to v14.
compute	#i	=RV.BINOM(10,0.5).
END REPEAT.
EXECUTE .
DO REPEAT #i = a1 to a14.
compute	#i	=RV.BINOM(10,0.5).
END REPEAT.
EXECUTE .




bei verschiedenen Bedinungen:

Code: Alles auswählen

IF  (a1 = 5) v1=$SYSMIS.
IF  (a2 = 3) v2=$SYSMIS.
IF  (a3 = 1) v3=$SYSMIS.
* usw.

EXECUTE.
drfg2008
avo
Beiträge: 3
Registriert: 13.12.2011, 11:23

Beitrag von avo »

Der Datensatz sieht etwa so aus, wie in der zweiten Variante dargestellt. Die Bedingung, ob v1 in den Mittelwert aufgenommen wird, bezieht sich aus a1.

@drfg2008: es scheint, als ob Du mir in der ersten Variante das Umkodieren erleichtern möchtest. Das Umkodieren ist jedoch nicht so einfach, weil meine "realen" Variablen nicht einfach durchnummeriert sind.

Gibt es noch eine andere Möglichkeit?

Danke schonmal
avo
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Das Umkodieren ist jedoch nicht so einfach, weil meine "realen" Variablen nicht einfach durchnummeriert sind.
die müssen nicht durchnumeriert sein, solange sie nebeneinander stehen und gleiches Skalenniveau haben geht SPSS alle Variablen von v1 bis v14 durch (auch wenn dazwischen eine Variable sagen wir mal Micky_Maus heist)

... und wie die Bedingungen gesteuert werden sollen, müsstest du einmal sorgfältig an einem Datenbeispiel erläutern
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