Wie führe ich eine ordinale logistische Regressionsanalyse in R mit beiden numerischen / kategorialen Werten durch?


17

Basisdaten : Ich habe ~ 1.000 Personen, die mit Bewertungen gekennzeichnet sind: "1", "[gut]" 2 "," [mittel] oder "3" [schlecht] - dies sind die Werte, die ich für die Zukunft der Menschen vorhersagen möchte . Zusätzlich habe ich einige demografische Informationen: Geschlecht (kategorial: M / W), Alter (numerisch: 17-80) und Rasse (kategorial: Schwarz / Kaukasisch / Latino).

Ich habe hauptsächlich vier Fragen:

  1. Ich habe ursprünglich versucht, das oben beschriebene Dataset als multiple Regressionsanalyse auszuführen. Aber ich habe kürzlich erfahren, dass ich, da meine Abhängigkeit ein geordneter Faktor und keine kontinuierliche Variable ist, für so etwas die ordinale logistische Regression verwenden sollte. Ich habe anfangs so etwas benutzt mod <- lm(assessment ~ age + gender + race, data = dataset), kann mich jemand in die richtige Richtung weisen?

  2. Ausgehend von der Annahme, dass ich Koeffizienten erhalte, mit denen ich mich wohl fühle, verstehe ich, wie man nur numerische Werte für x1, x2 usw. einfügt - aber wie würde ich mit Rennen umgehen, wenn es mehrere Antworten gibt: schwarz / kaukasisch / latino? Wenn also der kaukasische Koeffizient 0,289 beträgt und jemand, den ich vorhersagen möchte, ein Kaukasier ist, wie kann ich ihn wieder einstecken, da der Wert nicht numerisch ist?

  3. Ich habe auch zufällige Werte, die fehlen - einige für die Rasse, einige für das Geschlecht usw. Muss ich zusätzliche Maßnahmen ergreifen, um sicherzustellen, dass dies nichts verzerrt? (Mir ist aufgefallen, wenn mein Datensatz in R-Studio geladen wird, wenn die fehlenden Daten NAwie (162 observations deleted due to missingness)folgt geladen werden : R sagt so etwas wie - aber wenn sie als Leerzeichen geladen werden, geschieht nichts.)

  4. Angenommen, all dies funktioniert und ich habe neue Daten zu Geschlecht, Alter und Rasse, die ich vorhersagen möchte - gibt es in R einen einfacheren Weg, all das durchzuarbeiten, was auch immer meine Formel mit neuen Koeffizienten ergibt? anstatt es manuell zu tun? (Wenn diese Frage hier nicht zutreffend ist, kann ich sie zum R-Forum zurückbringen.)

Antworten:


16

Hier ist eine kleine Information, die Sie in die richtige Richtung lenken könnte.

In Bezug auf Ihre Daten haben Sie eine Antwort mit mehreren Kategorien. Wenn Sie versuchen, eine Antwort zu modellieren, die kategorisch ist, können Sie zu Recht versuchen, eine Art generalisiertes lineares Modell (GLM) zu verwenden. In Ihrem Fall verfügen Sie über zusätzliche Informationen, die Sie in Bezug auf Ihre Antwort berücksichtigen müssen. Das heißt, Ihre Antwortstufen haben eine natürliche Reihenfolge gut> mittel> schlecht. Beachten Sie, dass sich dies von dem Versuch unterscheidet, eine Antwort zu modellieren, z. B. welche Farbe die Sprechblase hat ist wahrscheinlich zu kaufen (rot / blau / grün), diese Werte haben keine natürliche Reihenfolge. Wenn Sie diese Art von Modell mit einer geordneten Antwort ausführen, können Sie die Verwendung eines Proportional-Odds-Modells in Betracht ziehen.

http://en.wikipedia.org/wiki/Ordered_logit

Ich habe es selbst nicht verwendet, aber die polr()Funktion im MASS-Paket wird wahrscheinlich von Nutzen sein. Alternativ habe ich die lrm()Funktion im rms-Paket verwendet, um ähnliche Analysetypen durchzuführen, und fand es ziemlich nützlich. Wenn Sie diese Pakete laden, verwenden Sie einfach ?polroder ?lrmfür die Funktionsinformationen.

Okay, Hintergrund zu Ihren Fragen:

  1. Dies sollte weiter oben behandelt werden. Schauen Sie sich diese Pakete / Funktionen an und informieren Sie sich über ordinale logistische Regression und proportionale Gewinnchancenmodelle

  2. Jedes Mal, wenn Sie eine Kovariate haben, die kategorisch ist (Rasse / Geschlecht / Haarfarbe), möchten Sie diese als "Faktoren" in Ihrer R-Kodierung behandeln, um sie angemessen zu modellieren. Es ist wichtig zu wissen, was ein Faktor ist und wie er behandelt wird. Im Grunde genommen wird jedoch jede Kategorie als separate Ebene behandelt und anschließend in geeigneter Weise modelliert. Lesen Sie einfach die Faktoren in den Modellen nach und Sie sollten in der Lage sein, herauszufinden, was los ist. Beachten Sie, dass die Behandlung kategorialer Variablen als Faktoren nicht nur für GLM-Modelle oder Proportional-Odds-Modelle gilt, sondern in der Regel für alle Modelle mit kategorialen Variablen. http://www.stat.berkeley.edu/classes/s133/factors.html

  3. Fehlende Werte können manchmal schwierig zu handhaben sein, aber wenn Sie eine relativ einfache Analyse durchführen, ist es wahrscheinlich sicher, nur Datenzeilen zu entfernen, die fehlende Werte enthalten (dies ist nicht immer der Fall, aber auf der Grundlage Ihres aktuellen Erfahrungsstands Vermutlich müssen Sie sich nicht mit den Einzelheiten befassen, wann und wie mit fehlenden Werten umgegangen werden soll. In der Tat ist dies ziemlich genau das, was R tut. Wenn Sie Daten haben, die Sie zum Modellieren verwenden, wenn Sie in einer Reihe Informationen für Ihre Antwort vermissen, oder wenn eine Kovariate im Modell R diese Daten nur ausschließt (dies ist die Warnung, die Sie sehen). Wenn Sie einen großen Teil Ihrer Daten aufgrund von Unzulänglichkeiten ausschließen, können Ihre Ergebnisse verzerrt sein. Es ist wahrscheinlich gut, mehr Informationen darüber zu erhalten, warum so viele Werte fehlen. Fehlen 162 Beobachtungen in 10.000 Datenzeilen, würde ich es nicht zu sehr schwitzen. Sie können nach Methoden für den Umgang mit fehlenden Daten suchen, wenn Sie an weiteren Einzelheiten interessiert sind.

  4. Fast alle R Modellobjekte ( lm, glm, lrm, ...) wird eine zugehörige predict()Funktion , die es Ihnen erlaubt, die vorhergesagten Werte für die aktuelle Modelldatensatzes berechnet und zusätzlich für eine andere Datenmenge , die Sie wünschen , ein Ergebnis vorherzusagen , für. Suchen Sie einfach ?predict.glmoder ?predict.lmversuchen Sie, weitere Informationen für den Modelltyp zu erhalten, mit dem Sie arbeiten möchten. Dies ist eine sehr typische Sache, die man mit Modellen machen möchte. Seien Sie also versichert, dass es einige eingebaute Funktionen und Methoden gibt, die dies relativ unkompliziert machen sollten.

Viel Glück!


2
  1. Ja, bestelltes Logit oder Probit ist der Ausgangspunkt. Hier ist ein Tutorial zu bestelltem Logit, in dem R verwendet wird. Andere Fragen zum Lebenslauf können Ihnen wahrscheinlich bei Problemen helfen. Probieren Sie die Tags 'logit', 'probit' und 'ordinal' aus.

  2. Ein Standardansatz für den Umgang mit einer unabhängigen Variablen besteht darin, sie als Binärwerte zu kodieren . Dies wird hier ausführlicher erklärt , aber in Kürze: Der Effekt einer Kategorie wird in den Achsenabschnitt subsumiert und die Koeffizienten werden an die verbleibenden Kategorien angepasst. In Ihrem Beispiel gibt es eine Dummy-Variable , die für einen kaukasischen Befragten mit 1 codiert wird, ansonsten mit 0.k - 1kk-1caucasian

  3. Der Umgang mit fehlenden Daten hängt stark vom jeweiligen Problem ab, und ja, der Umgang mit fehlenden Daten kann zu Verzerrungen führen. In diesem Buchauszug werden vier Mechanismen beschrieben, die zu fehlenden Daten führen können und die Ihnen dabei helfen sollen, mögliche Verzerrungen in Ihrem eigenen Problem zu berücksichtigen. (Insbesondere Abschnitt 25.1, S. 530.)

  4. Viele Modellierungspakete haben eine predictFunktion, und in der Tat enthält das erste oben verlinkte Tutorial eine Demonstration.


Vielen Dank! Schnelles Follow-up zu Nummer 2: Das war meine Grundannahme - aber wie lautet der Code, wenn es mehr als zwei Variablen gibt? Zum Beispiel Kaukasier, Schwarz, Latino.
Ryan

Sehr willkommen! In diesem Beispiel würden Sie eine Kategorie auswählen, die in den Abschnitt aufgenommen werden soll latino, und Dummys für die beiden anderen. Ein 1-Wert für den caucasianDummy gibt einen kaukasischen Befragten an, ähnlich wie für die blackDummy-Variable. Ein 0-Wert für beide gibt einen Latino-Befragten an. Sinn ergeben?
Sean Ostern

Also sollte ich einfach den Datensatz von einer Spalte mit mehreren Antworten ('schwarz', 'kaukasisch' und 'latino') in eine 'schwarze' Spalte mit 1 und 0, eine 'kaukasische' Spalte mit 1 und 0 und eine ändern 'Latino'-Spalte mit Einsen und Nullen?
Ryan

Das ist ein Ansatz, der gut funktioniert. Der einzige Unterschied zur Verwendung von zwei Spalten besteht darin, wie Sie den Achsenabschnitt interpretieren. Sie können dies manuell tun, aber ich glaube, Faktoren in R können es für Sie handhaben. Versuchen Sie dies - es wird anhand von Faktoren mit einem ähnlichen Beispiel durchgegangen. Prost!
Sean Ostern

1
Die Verknüpfung zum Tutorial ist unterbrochen. Wenn jemand es reparieren kann, wäre das großartig!
Dan Hicks
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.