wieder mal: Fehlende Werte

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
lichtheim
Beiträge: 27
Registriert: 07.08.2007, 13:00

wieder mal: Fehlende Werte

Beitrag von lichtheim »

hallo an alle,
trotz suche hab ich immer noch keine passende antwort gefunden, wie spss mit fehlenden werten umgeht. evtl. kanns mir ja jemand erklären ?

Beispiel:

- Datendatei mit den 2 Var a und b und nur einem Fall
- Werte a=1; b=2
- neue Var c=a+b (also c=3; soweit so gut)

- ich ersetze den wert in var a durch . und bilde wieder c; (nun ist c=. und nicht gleich 2; wieso ist das so ?)

- ich ersetze den wert in var a durch 99 (und definiere 99 als fehlenden wert) und bilde wieder c; (nun ist c=. und nicht gleich 2; wieso ist das so ?)

zu hülfe bitte
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

hallo,

weil . nicht das gleiche wie null bedeutet. . bedeutet "fehlende antwort, ausprägung unbekannt" und null bedeutet "null-ausprägung wie z.b. in 0 cm".

das gleiche, wenn man einen bestimmten wert z.b. 99 als fehlend definiert.

was du aber machen kannst: statt als c = a + b bildest du c so.

c = sum.1(a,b)

.1 gibt die anzahl der werte von a, b (bzw. den variablen in klammer) an, die vorhanden sein müssen, um die funktion (hier: summe) auszuführen. obwohl man aus nur einem summanden keine wirkliche summe bilden kann, führt dies zum von dir gewünschten ergebnis.
lichtheim
Beiträge: 27
Registriert: 07.08.2007, 13:00

Beitrag von lichtheim »

hallo KarinJ,
danke für deine Antwort, trotzdem ist mir nicht alles klar. ich verlasse mal mein beispiel und werde etwas konkreter:
also; ich habe einen datensatz, in dem einige zellen einen "." enhalten. dies bedeutet also, dass dort kein wert angegeben wurde (aus welchen gründen auch immer). wenn ich nun weitere berechnungen (neue var. usw.) durchführe, bekomme ich im ergebniss oft ein ".", nämlich immer dann wenn eine zelle mit fehlendem wert in die berechnung eingeht.

wie kann ich das umgehen ? dein beispiel mit c = sum.1(a,b) funktioniert zwar, aber in meiner datei will ich ja nicht nur summen bilden.

kann ich einfach vorher alle "." durch 0 ersetzen ?
guido
Moderator
Beiträge: 304
Registriert: 17.01.2006, 19:20

Beitrag von guido »

Die Frage ist doch vor allem, welchen inhaltlichen Sinn Berechnungen mit fehlenden Werten im jeweiligen Fall machen.

Wenn eine Person zu einer Frage / Variable keine Antwort gegeben hat und diese (nicht vorhandene) Antwort dann mit anderen Antworten verrechnet oder in Beziehung gesetzt wird, ist das inhaltlich prinzipiell schon mal fragwürdig.

Von daher macht es schon Sinn, das solche Berechnungen in einem ersten Schritt standardmäßig auf "fehlend" gesetzt werden. Das Programm weiss ja nicht, was Du vorhast.

Gelegentlich werden fehlende Werte dann einfach durch den jeweiligen Mittelwert ersetzt, dies kann in der Masse dann zu tendenziell "konservativen" Ergebnissen in der Untersuchung führen.

Wenn Du die Werte schon loswerden willst, solltest du ggf. von einer inhaltlichen Begründung dafür ausgehen und Dir dann etwas überlegen. Hier ist dann einfach etwas Logik und Argumentation gefragt -> Überleg Dir was es inhaltlich aussagt, wenn Du . durch 0 ersetzt und ob das für Dich in Frage kommt.
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

nein, . durch 0 ersetzten solltest du nicht, weil wie gesagt:
weil . nicht das gleiche wie null bedeutet. . bedeutet "fehlende antwort, ausprägung unbekannt" und null bedeutet "null-ausprägung wie z.b. in 0 cm".
das mit dem . funktioniert auch für mean (mittelwert).

außerdem kann man fehlende werte ersetzen z.b. durch den individuellen mittelwert oder durch anders geschätzte werte.
lichtheim
Beiträge: 27
Registriert: 07.08.2007, 13:00

Beitrag von lichtheim »

ich verstehe durchaus worauf ihr hinaus wollt, in meinem fall macht das ersetzen von . durch 0 durchaus sinn (denke ich).

ich versuch noch mal ein beispiel, dass meiner datenstrucktur ähnelt:

Generelle Frage: wieviel gibt haushalt xy für tierfutter aus ?

Var. die abgefragt werden um dies zu beantworten:
Wieviele Hunde hat HH XY ?
Wieviele Katzen hat HH XY ?
Wieviele Vögel hat HH XY ?
...
wenn nun jemand keine hunde hat, und nichts ausfüllt, ist also an der entsprechenden stelle ein ".", der sinngemäß durch eine 0 ersetzt werden könnte. Oder nicht ?

mit den daten soll dann natürlich noch weiter gerechnet werden, wenn aber alle berechnungen aufgrund der fehlenden werte in einem "." enden hat das irgenwie gar keine sinn. Oder doch ?

[es wäre natürlich schön wenn hh xy dann gleich 0 angibt, aber der datensatz liegt mir bereits vor, so dass daran nichts mehr zu ändern ist]
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

wenn jemand angegeben hat "hund nein" oder "anzahl hunde 0", dann ist es in den meisten fällen wohl richtig, . durch 0 zu ersetzen. abgesehen davon, wenn leute regelmässig futter fürs tierheim kaufen, ohne selber tiere zu haben, oder ähnliches.
lichtheim
Beiträge: 27
Registriert: 07.08.2007, 13:00

Beitrag von lichtheim »

ok, also doch kein denkfehler ;-)

aber, wie mach ich das denn ?
gibts für sowas auch einen syntax befehl ?
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

transformieren, umcodieren - ich würde in eine andere variable umcodieren (man weiss ja nie, ob man die rohdaten nochmal braucht). dann bei "werte" auf der linken seite fehlend anklicken und auf der rechten seite 0 angeben, dann hinzufügen. es müsste so etwas erscheinen wie sysmis --> 0. dann ok und nochmal ok.

mit einfügen erhält man die syntax:

recode
variable (sysmis -> 0) into neu .
execute.
lichtheim
Beiträge: 27
Registriert: 07.08.2007, 13:00

Beitrag von lichtheim »

erstmal dankeschön, für die hilfe.

umcodieren ist warscheinlich die beste lösung, allerdings geht es um einen datensatz mit ca. 200 var. , das wird ganz schön mühsam.

deshalb nochmal die frage ob man nicht im gesammten datensatz die "." duchh 0 ersetzen kann ? ich könnte ja den datensatz im anschluss unter einem anderen namen speichern, und so auch die rohdaten erhalten.
KarinJ
Beiträge: 939
Registriert: 13.05.2008, 10:52

Beitrag von KarinJ »

man kann auch in der gleichen variablen ersetzen, dann spart man sich die eingabe eines neuen namens. wahrscheinlich kann man nicht alle 200 variablen gleichzeitig ins feld klicken, aber auf 4-5 mal müsste es zu machen sein. die umcodierungsanweisung der werte bleibt jeweils stehen. einen befehl zum ersetzen, ohne die namen anzugeben, kenne ich leider nicht.
lichtheim
Beiträge: 27
Registriert: 07.08.2007, 13:00

Beitrag von lichtheim »

hallo, nochmals danke;
mit dem befehl:

RECODE Var1 Var2 Var 3 (SYSMIS=0).
EXECUTE .

hats dann doch geklappt, (man kann auch beliebig viele Var. einfügen).
ich hab auch schon ein bischen rumprobiert, alle meine probleme scheinen dennoch nicht gelöst, aber da frag ich dann später noch mal hier im forum nach.
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