nicht Normalverteilt, aber wie dann?

Neue Frage »

SDwarfs Auf diesen Beitrag antworten »
nicht Normalverteilt, aber wie dann?
Hallo,

ich habe ein Problem mit der Verteilung von Items eines Fragebogens. Da ich mit einer multivariate Regression über die kompletten Daten ein Abhängigkeits-Modell erarbeiten will, benötige ich normalerweise Normalverteilte . Ich habe nun versucht zu prüfen, ob meine Items Normalverteilt sind, habe aber feststellen müssen, dass nach meinen Berechnungen nur eines von ca. 60 Items Normalverteilt sein soll.

Hier mal das eine Item, was normalverteilt sein soll (keine Ablehnung mit 95%-Sicherheit beim Chi-Quadrattest):

Ich hab hier mal eben die absoluten Häufigkeiten für die Antwortkategorien:
0 => 404 (Antwort: stimmt genau)
1 => 303 (Antwort: stimmt etwas)
2 => 257 (Antwort: ein wenig von beidem)
3 => 184 (Antwort: stimmt eher nicht)
4 => 111 (Antwort: stimmt überhaupt nicht)

Die Frage zu dieser Verteilung ist dazu ist: "Ich bin immer auf der Suche nach günstigen Gelegenheiten, um etwas besonders preiswert zu kaufen."


Ich hab mit Hilfe eines Chi-Quadrat-Anpassungstests den Erwartungswert und die Varianz auf folgende Werte geschätzt bekommen:

E(X) = 1.44003177125
Var(X) = 1.71169531037
² = 8.00055850595

Als Erklärung dazu: Ich hab erst E(X) und Var(X) normal berechnet und dann mit einem Greedy-Algorithmus (Erwartungswert/Varianz iterativ leicht verkleinert und vergrößert und geschaut, ob ² jeweils kleiner wird).
Der Grund dafür ist, dass die üblichen Schätzer nicht berücksichten, dass eine Antwortkategorie an den Grenzen auch dann gewählt wird, wenn die Antwort-Möglichkeit an sich nicht existiert... D.h. wenn der Wert, den man im Fragebogen ankreuzen würde, nicht mehr innerhalb der Skala liegt (theoretisch z.B. Kategorie "-1" oder "5"...). Bei der Berechnung der bei ²-Anpassungstest hab ich deswegen [, 0.5] für Kategorie "0" und [4.5,] als Bereich für die Kategorie 4 gewählt, bei den anderen jeweils Kategorie# +/- 0.5.

Da ich 5 Antwortkategorien habe, sollten das f = 5-1 = 4 Freiheitsgrade sein.
Bei einem = 5% sollten die Grenze für die Ablehnung bei 9,49 liegen.

Hier bin ich mir nicht ganz sicher, ob ich die Freiheitsgrade korrekt habe (bzw. richtig verstanden habe, was die Freiheitsgrade bedeuten). Mich wundert auch, dass die Grenze für die Ablehnung scheinbar garnicht vom Stichprobenumfang abhängig ist...

---
Die Frage ist nun: Wenn meine Berechnungen oben stimmen, sind sämtliche andere Items nicht Normalverteilt. Das ist auch relativ einleutend, wenn man sich die absoluten Häufigkeiten ansieht. Hier mal 2 Beispiele:

Frage 58: "Ich habe einen Internetzugang bei mir Zuhause."
0 => 1130 (Antwort: stimmt genau)
1 => 52 (Antwort: stimmt etwas)
2 => 22 (Antwort: ein wenig von beidem)
3 => 10 (Antwort: stimmt eher nicht)
4 => 35 (Antwort: stimmt überhaupt nicht)
² = 1714.68809655

Frage 15: "Ich habe ein eigenes Auto!"
0 => 302 (Antwort: stimmt genau)
1 => 57 (Antwort: stimmt etwas)
2 => 29 (Antwort: ein wenig von beidem)
3 => 82 (Antwort: stimmt eher nicht)
4 => 791 (Antwort: stimmt überhaupt nicht)
² = 2779.38611404

Frage 13: "Ich stehe auf Gothic und kleide mich entsprechend."
0 => 268 (Antwort: stimmt genau)
1 => 228 (Antwort: stimmt etwas)
2 => 212 (Antwort: ein wenig von beidem)
3 => 222 (Antwort: stimmt eher nicht)
4 => 330 (Antwort: stimmt überhaupt nicht)
² = 199.250923457



Frage 58 sieht mir so aus, als ob fast alle der Meinung sind, es "stimmt genau".
Frage 15 sieht mir so aus, als ob die Antworten eher ins "extreme" abwandern, d.h. entweder es "stimmt genau" oder es "stimmt überhaupt nicht".
Eigentlich sollten ja entsprechend der Fragestellung auch eher nur Kategorien "0" und "4" genutzt werden... Bei Frage 15 könnte man aber überlegen, ob nicht die dazwischenliegenden Antwortkategorien genutzt wurden um "ja, aber kein eigenes" auszudrücken...

Frage 13 sollte eigentlich normalverteilt sein, allerdings scheinen die Antworten eher gleichmäßig über die gesamte Skala verteilt...

Ich habe schon versucht einen Anpassungstest mit log-Normalverteilung (für Fragen wie Frage 58) probiert... ohne Erfolg.

Habt Ihr eine Idee, welche Dichte bzw. Verteilungsfunktion hier vorliegen könnte?

Ziel der Aktion ist:
Ich möchte letztlich ein paar Faktoren herausrechnen, d.h. von den eigentlichen Fragebogenitems auf zu den Personen i gemessenen abhängigen Variablen schließen.
Mein Hauptproblem dabei sind die Korrelationen zwischen den einzelnen . Z.B. könnte "ich bin weiblich" auf "ich kaufe gern Kleider" Einfluss haben. Wenn ich individuelle Faktoren für Antwort auf Frage-Item errechne um auf jeweils ein zu schließen, und diese dann aufmultipliziere, habe ich in diesem Fall die "indirekten" Faktoren "weiblich" mehrfach in enthalten...

Erklärung:
Nehmen wir an ich habe die Frage "ich kaufe gern Kleider" und die Frage "ich bin weiblich". Jeweils mal nur die Antwortmöglichkeiten "ja" und "nein". Und ich hätte als abhängigen Faktor y "Ich mag Gothic und kleide mich entsprechend".

Dann könnte ich folgende Faktoren berechnen:
* b0 = Durchschnitt von "ich mag Gothic" (für alle)
* b1 = Durchschnitt von "ich mag Gothic" (für alle, die "weiblich" gewählt haben) dividiert durch b0
* b2 = Durchschnitt von "ich mag Gothic" (für alle, die "ich kaufe gern Kleider" gewählt haben) dividiert durch b0

Man könnte nun (wenn b1 und b2 nicht korreliert wären) aus diesen Faktoren einen Wert y schätzen mit:
y = b0 * b1 ^ (x1*2-1) * b2 ^ (x2*2-1)

Also zum Beispiel:
Fall a) "ich bin weiblich", aber "kaufe _nicht_ gern Kleider":
y = b0 * b1 / b2

Fall b) "ich bin weiblich" und "kaufe gern Kleider":
y = b0 * b1 * b2

usw.

Meine nächste Idee wäre jetzt "Multivariate Regression" gewesen. Hier bin ich aber unsicher, ob nicht Voraussetzung ist, dass a) nur lineare Abhängigkeiten vorhanden sind und b) die Items Normalverteilt oder zumindest Gleichverteilt sind.

Die Formeln die ich bei Wikipedia (http://de.wikipedia.org/wiki/Regressionsanalyse) dazu finden konnte waren:



und zur Berechnung der gilt wohl:



Bevor ich nun aber anfange, ohne Ahnung davon zu haben das zu "probieren", wollte ich vorher wissen, worauf ich achten muss... und ob es überhaupt sinnvoll ist so vorzugehen.

Also meine Fragen sind im Prinzip:
a) Hab ich irgendwas falsch verstanden (Fehler in meinen obigen Erklärungen)?
b) Worauf muss ich achten, damit ich nicht "Müll" berechne?
c) Wie komme ich weiter? Was sollte ich probieren? Wo finde ich weitere Infos? Wo kann ich mich evtl. belesen?

Danke schon mal fürs Lesen...

Stefan
Besserwisserin Auf diesen Beitrag antworten »
RE: nicht Normalverteilt, aber wie dann?
Und nochmal hallo!

Ich muss dringend von der Verwendung der klassischen Regressionsmethode bei nicht kardinal-skalierten Merkmalen abraten! Es gibt zum Beispiel keinen Mittelwert aus den Antworten deines Fragebogens, du kannst die Verteilung lediglich durch Lageparameter wie den Median beschreiben. Das Problem ist, dass deine Daten nur ordinal skaliert sind. Daher musst du Verfahren anwenden, dir hierfür entwickelt wurden, wie zum Beispiel Logit oder Probit oder die entsprechenden Weiterentwicklungen. Das "Problem" bei diesen Verfahren ist, dass sie etwas schwerer zu verstehen sind und die Ergebnisse eine andere (dafür aber richtige) Interpretation besitzen als die der Regressionsrechnung.

Das große Aufgabengebiet, mit dem du dich vertraut machen solltest, ist Mikroökonometrie und hierbei im Speziellen mit oben genannten Verfahren.
SDwarfs Auf diesen Beitrag antworten »
RE: nicht Normalverteilt, aber wie dann?
Hallo Besserwisserin,

erstmal vielen Dank für Deine Antworten. Dass Regression bei diesen Daten "Fehlerträchtig" ist, ist mir bekannt. Das ist so ähnlich, wie bei dem Ausrechnen der "Mittelwerte" bei Schulnoten für den Noteschnitt. Theoretisch hab ich aber schon sowas wie ein Minimum (stimmt überhaupt nicht), ein Maximum (stimmt genau) und eine Art Mittel (ein wenig von beidem). Die anderen beiden Antworten liegen irgendwo dazwischen...

Die beiden Verfahren (Probit und Logit) werde ich mir mal genauer ansehen.

Was ich mich frage ist: Was hat jetzt Mikroökonomie damit zu tun? Kommen die Verfahren vor allem dort zur Anwendung oder meinst Du, meine Art der Anwendung fällt in diesen Bereich (was ich eher unverständlich fände)...

LG,
Stefan
SDwarfs Auf diesen Beitrag antworten »

Mal eine Frage zu den beiden Modellen (Probit/Logit). Soweit ich mich bisher belesen habe, sind diese Modelle für Regressionen gedacht bei denen die abhängige Größe norminal (z.B. 0 und 1) skaliert ist.
In meinem Fall geht es eher darum, dass die unabhängigen Größen ordinal (also auch normal) skaliert sind. Die abhängige Größe soll eher metrisch skaliert sein.

Bei Logit (und wahrscheinlich auch bei Probit) werden die Regressionskoeffizienten mit einem ML-Schätzer bestimmt. Soweit ich herausgefunden habe, gibt es dafür keine einfache "Formel" sondern nur eine iterative Methode... Allerdings verschweigen sich die meisten Skripte darüber aus, wie diese Methode genau aussieht.
In folgendem Paper wird eine Vorgehensweise (auf Seite 7) beschrieben, diese erscheint mir aber inkorrekt / fehlerbehaftet:
http://www.metaanalyse.de/material/re020610.pdf

Ich überlege derzeit, ob es nicht sinnvoller ist, für meine Auswertung ein neuronales Netz zu trainieren und dann zu "befragen". Ehrlichgesagt kommen diese Verfahren vom Aufwand so langsam an diese Variante heran und das Ergebnis ist vergleichbar: Es kommt mehr oder minder eine 0 oder 1 heraus.
Das Training entspricht im Prinzip der Optimierung der Modellparameter des Logit-Modells... Allerdings kann ein mehrstufiges Neuronales Netz (mind. 1 Zwischenschicht) logische Zusammenhänge abbilden. Zum Beispiel "Wenn entweder A,B,C dann D", das Logit-Modell kann hier nur wenn A dann etwas mehr D, wenn B dann etwas mehr D und wenn C dann etwas mehr D.
Gut, ich muss für das Training einen gewissen Anteil Datensätze "opfern" die nicht für das Training verwendet werden (sondern für die Tests), damit overfitting vermieden wird, aber ich denke die Genauigkeit wird wahrscheinlich sogar höher sein.

In jedem Fall scheint Logit/Probit immernoch mit linearen Abhängigkeiten zu rechnen und um andere Abhängigkeiten zu erkennen/abzubilden müsste ich die unabhändigen Größen transformieren... und dafür die Verteilungsfunktion erkennen.

Ich merke gerade wieder, dass ich mal wieder Versuche Problemen aus dem Weg zu gehen... ein wenig gehts mir bei der Sache auch darum etwas zu lernen und nicht nur das Problem zu lösen.

Vielleicht haben Probit/Logit ja auch noch andere Vorteile (abgesehen davon, dass man bei einem Neuronalen Netz hinterher nicht mehr sieht, was eigentlich passiert... man trainiert ein "Muster" und bekommt die Ergebnisse, die Zusammenhänge sieht man eher nicht).
SDwarfs Auf diesen Beitrag antworten »
Multivariate Regression
So, damit andere mit dem gleichen Problem nun auch was davon haben, hier meine derzeitige Not-Lösung:

Modell-Annahmen / Validität:
  1. die Skalen auf dem Fragebogen werden als metrisch angenommen (auch wenn sie nur ansatzweise metrisch sind); Daraus resultieren möglicherweise gröbere Fehler / Ungenauigkeiten
  2. die Zusammenhänge der abhängigen und unabhängigen Variablen sind (ansatzweise) linear
  3. es sind für alle befragten lückenlos alle n Merkmale erfasst (fehlende Werte könnten durch Mittelwerte ersetzt werden, darauf gehe ich hier aber nicht weiter ein)
  4. Die entstehenden Modell-Parameter entsprechen nicht zwangsläufig der stärke des Zusammenhangs, der Erklärungsgehalt ist eher niedrig einzustufen.



Mathematisches Modell:



... relative Präferenz als "Quote" für Entscheidung von Person i
... Erfasste n Merkmalsausprägungen (Fragebogen) von Person i
... geschätze Modellparameter

Als abhängige Variable wollte ich einen Faktor gegenüber dem Durchschnitt erhalten, da der Faktor sowohl > 1 als auch < 1 sein kann, ergibt sich das Problem dass der Bereich [0,1] der durch lineare Regression schlecht abgebildet werden kann.
Ich weiß aber, dass ich 2 Wahrscheinlichkeiten Nenner und Zähler des Quotienten habe, d.h. Wertebereich [0,1]. Dadurch ergibt sich, dass der Quotient im Bereich liegen wird.

Diese Voraussetzungen entsprechen dem des Logit-Modells, bei dem nun zusätzlich über die ln()-Funktion transformiert wird. Damit ergibt sich ein Wertebereich von der zumindest gleichmäßiger verteilt ist (linear würde ich nicht sagen).

Bei den Schätzungen wende ich entsprechend die -Funktion an, um wieder zu meiner Quote zu kommen.

Zur Ermittlung der Model-Parameter benutze ich partielle Regression und nehme jeweils immer einen Faktor (den mit der höchsten Korrelation) hinzu. Als Abbruchkriterium verwende ich das korregierte Bestimmtheitsmaß (muss ansteigen) und den absoluten Anstieg der Regressionsgeraden (muss >= 0.01 sein, sonst breche ich ab, da es sich nicht lohnt) :




Wobei p hier die Anzahl der Parameter ist, die nicht 0 sind und n die Anzahl der Datensätze (also Anzahl der befragten Personen i).

Der genaue Ablauf:
  1. Alle Modellparameter setze ich anfangs auf 0
  2. Errechnen der totalen Varianz der über:

  3. Setzen von auf 0
  4. Schleifenbeginn
  5. Berechnen der Regressionsfehlerwerte mit den aktuellen Parametern:

  6. Berechnen der Korrelationskoeffizienten zwischen den und den jeweils für alle n für die = 0 und n>0 gilt. (Sprich alle Korrelationen zu Merkmalen, die noch nicht in der Partiellen Regression enthalten sind).
  7. Auswählen des Merkmals n dessen Korrelation am höchsten is (und welches einen t-Test mit einem besteht). Wenn kein solches Merkmal gefunden, weiter bei Schleifenende
  8. Berechnung der Regressionsgerade für Merkmal n. Wenn b < 0.01, weiter bei Schleifenende
  9. Anpassen der Modell-Parameter:


  10. Berechnen der Varianz der Regressionsfehlerwerte (Residuals) :

  11. Berechnen von und prüfen, ob dieses kleiner ist als . Wenn nicht, setzen von auf neues und springen zum Schleifenanfang, ansonsten weiter bei Schleifenende
  12. Schleifenende
  13. Speichern der Modellparameter, sofern mindestens ein Parameter <> 0.


Ausblick / Verbesserungsmöglichkeiten:
Optimierungen könnten meiner Meinung noch erreicht werden, indem die erfassten Merkmale transformiert werden (z.B. durch 1/x-Funktion).

Die Validität könnte evtl. erhöht werden, indem man ein paar der Datensätze (z.B. 10%) aus der Stichprobe herausnimmt und mit Ihnen Fitting-Tests durchführt (wie dies beim Training von Neuronalen Netzen geschieht). D.h. sie werden nicht für die Regression selbst verwendet (gehen also vom "Informationsgehalt" nicht in die Parameter ein) sondern werden dafür verwendet um zu errechnen, wie gut das Modell "unbekannte", zukünftige Parameter abschätzt. Damit wird erreicht, dass das Modell nicht zu stark auf "genau diese Datensätze" angepasst wird, sondern allgemeingültig bleibt. Dazu wird einfach die Summe der Fehlerquadrate der Testdatensätze ermittelt.
Man bricht im Prinzip ab, wenn das Minimum der Fehlerquadrate der Testdaten erreicht wurde. Am Besten behält man sich die Ergebnisse letzten 3-5 Schleifendurchläufe und wenn die Fehlerquadrate innerhalb der letzten 3-5 Durchläufe nur noch steigt oder gleich bleibt, wählt man das beste Ergebnis (also das mit dem niedrigsten Wert für die Fehlerquadrate der Testdaten) aus der History.... Dadurch kann man kurzzeitig auftretende, lokale Maxima "überleben"
Anstatt nur die letzten 3-5 Ergebnisse zwischenzuspeichern könnte man natürlich auch solange durchrechnen (ohne Abbruch), bis für keine Korrelationen mehr möglich sind und dann _das_ Zwischenergebniss des Modells heraussuchen, welches den niedrigsten Wert für die Fehlerquadrate der Testdatensätze hat (globales Minimum).


Hinweise, Kritik oder Verbesserungsvorschläge sind natürlich willkommen...

LG,
Stefan
Besserwisserin Auf diesen Beitrag antworten »

Hallo!

Dein Zwischenweg ist eine enorm explorativ Datenanalyse, ich will das nicht kritisieren, manchmal kann man nicht mehr machen. Allerdings frage ich mich immer noch, was du überhaupt analysieren willst.

1. Es gibt multivariate Logit/Probit-Verfahren, die nicht nur 0/1, sondern jedes beliebige ordinale Merkmale zulassen.

2. Lies mal etwas über Faktorenanalyse, damit kannst du alle vorhandenen Items auf eine dahinterhinterliegende latente Variable (Psycho- und Intelligenztests etc. sind Beispiele) untersuchen und verkleinerst gleichzeitig die Dimension in deinem Regressionsmodell. Vielleicht suchst du aber auch nach einer Diskriminanzanalyse...
 
 
SDwarfs Auf diesen Beitrag antworten »

Hallo,

nun... es ist in der Tat wenig relativ wenig abgesichertes Wissen über die Zusammenhänge zwischen den Xi und den Yi vorhanden. Zudem handelt es sich um eine Datenmenge, die ich persönlich eher nicht per Hand verarbeiten will.
Es geht dabei nicht um das gewinnen wissenschaftlicher Erkenntnisse, sondern eher um ein Optimierungsproblem.

1. Gibits zu den Verfahren auch "Namen", das erleichtert die Suche nämlich ungemein smile

2. Ja, Faktorenanalyse kenn ich, das Problem ist, dass die Mathematik dahinter mir ein wenig zu heftig ist (soweit ich weiß muss ich dafür die Inverse Matrizen (wahrscheinlich mit Gaussalgorithmus) und Eigenvektoren berechnen). Mit fertiger Statistiksoftware ist das auch unproblematisch, aber ich muss es leider selbst programmieren (und daher die Mathematik schon verstehen und nicht nur die Menüoption anwenden).
Zudem ist das aber auch nur eine Art "Vorverarbeitung" der Daten, um dann z.B. wieder ein Modell nach dem obigen System zu errechnen. Die Faktoranalyse könnte ich natürlich zusätzlich durchführen, um eine Dimensionsreduktion zu erreichen.
Außerdem gabs wohl an dem Verfahren ziemliche Kritik was die Validität angeht (ja ich weiß, mein Verfahren ist auch nicht grad valide). Zudem hab ich bei Faktoranalysen (mit Statistiksoftware) bisher die Erfahrung gemacht, dass die Ergebnisse schlecht interpretierbar waren... (Allerdings war das damals ziemlich viel Datenmüll mit wenig Aussagekraft, wie sich am Ende rausstellte. War eine Studie im Fachbereich Psychologie, die wir damals durchgeführt haben). Und wenn nun 2 mal hintereinander ein Verfahren anwende, deren Ergebnisse ich nur schwer prüfen kann, ist die Fehlersuche extrem schwer. Ich hab bei der Umsetzung des Verfahrens schon einige Fehler drin gehabt (z.B. ausversehen nur positive "b" für die Regression zugelassen, weil ich >0 geprüft hab und vorher nicht den Betrag ausgerechnet habe) und weiß dass es extrem schwierig war die Fehler zu finden, weil ich nicht sicher sein kann, was als Ergebnis heraus kommen muss... Man bekommt nur irgendwelche Ergebnisse schaut sie sich an und kann dann sagen: "Ja, könnte hinkommen..." oder "Könnte besser sein..." oder: "Irgendwie ist das Ergebnis merkwürdig". Theoretisch müsste man einmal Testdaten "erzeugen" von denen man weiß, wie das Ergebnis aussehen muss, der Aufwand dafür ist aber ein wenig hoch...
Ich werd mir die Faktoranalyse aber mal anschauen, evtl. kann man die Anzahl Fragen damit etwas reduzieren. Ich meine jetzt nicht unbedingt durch umrechnung in die Faktoren, sondern, indem man Fragen "rauswirft" die redundant sind. Zudem sollte es helfen, den Informationsgehalt der Fragen/Antworten besser zu verstehen...

LG,
Stefan
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »