Wie kann die Vorhersagekraft einer Reihe kategorialer Prädiktoren für ein binäres Ergebnis bewertet werden? Wahrscheinlichkeiten oder logistische Regression berechnen?


10

Ich versuche herauszufinden, ob einfache Wahrscheinlichkeiten für mein Problem funktionieren oder ob es besser ist, komplexere Methoden wie die logistische Regression zu verwenden (und etwas darüber zu lernen).

Die Antwortvariable in diesem Problem ist eine binäre Antwort (0, 1). Ich habe eine Reihe von Prädiktorvariablen, die alle kategorisch und ungeordnet sind. Ich versuche zu bestimmen, welche Kombinationen der Prädiktorvariablen den höchsten Anteil von Einsen ergeben. Benötige ich eine logistische Regression? Wie wäre es von Vorteil, nur die Proportionen in meinem Stichprobensatz für jede Kombination der kategorialen Prädiktoren zu berechnen?


Wenn Sie mehr als einen Prädiktor haben, kann es schwierig sein, dies ohne ein Regressionsmodell zu tun. Was hattest du im Sinn? Nur eine große dimensionale Kontigenztabelle ( ist die Anzahl der Prädiktoren)? kkk
Makro

Sind die Prädiktorkategorien in mehr als einen Faktor gruppiert und wenn ja, sind sie gekreuzt oder verschachtelt? Sind Sie auch nur daran interessiert, eine beschreibende Aussage zu machen? Wenn Ihre Daten komplex sind, ist ein LR-Modell möglicherweise praktischer, und wenn Sie Rückschlüsse ziehen möchten, ist LR meiner Meinung nach dringend vorzuziehen.
Gung - Reinstate Monica

@Macro - Ja, ich dachte, es wäre im Wesentlichen eine große Tabelle, wobei eine Spalte die Anzahl der Stichprobenpunkte zeigt, die dem Szenario entsprechen, und eine andere Spalte den Anteil der Einsen zeigt. Ich habe fünf kategoriale Prädiktoren mit jeweils 10 bis 30 möglichen Werten, daher weiß ich, dass die Liste der Szenarien hoch wäre. Ich dachte daran, eine Schleife in R zu schreiben, die jede durchläuft und signifikante Ergebnisse ausgibt (hoher Anteil von Einsen plus große Anzahl von Stichprobenpunkten im Szenario).
Rachel

@gung - Die Faktoren werden nur teilweise gekreuzt. Keiner der Faktoren würde als verschachtelt betrachtet. Ich bin daran interessiert, die Kombinationen von Faktoren (z. B. Staat, Kunde, Mitarbeiter) zu finden, die wahrscheinlich eine hohe Wahrscheinlichkeit haben, dass die Antwortvariable gleich 1 ist.
Rachel

1
@EmreA - Leider sind die kategorialen Variablen nicht völlig unabhängig. Einige Kombinationen sind wahrscheinlicher als andere ...
Rachel

Antworten:


11

Die logistische Regression ergibt bis zur numerischen Ungenauigkeit genau die gleichen Anpassungen wie die tabellierten Prozentsätze. Wenn also die unabhängigen Variablen sind Faktor - Objekte factor1, etc. und die abhängigen Ergebnisse (0 und 1) sind x, dann können Sie die Effekte mit einem Ausdruck erhalten wie

aggregate(x, list(factor1, <etc>), FUN=mean)

Vergleichen Sie dies mit

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

Als Beispiel generieren wir einige zufällige Daten:

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

Die Zusammenfassung wird mit erhalten

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

Seine Ausgabe umfasst

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

Zur späteren Bezugnahme beträgt die Schätzung für Faktoren auf den Ebenen (1,2,0) in Zeile 6 der Ausgabe 0,5.

Die logistische Regression gibt ihre Koeffizienten folgendermaßen auf:

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

Um sie zu nutzen, benötigen wir die logistische Funktion:

logistic <- function(x) 1 / (1 + exp(-x))

Um beispielsweise die Schätzung für Faktoren auf Ebenen (1,2,0) zu erhalten, berechnen Sie

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

(Beachten Sie, wie alle Wechselwirkungen in das Modell aufgenommen werden müssen und alle zugehörigen Koeffizienten angewendet werden müssen, um eine korrekte Schätzung zu erhalten.) Die Ausgabe ist

(Intercept) 
        0.5

Zustimmung zu den Ergebnissen von aggregate. (Die Überschrift "(Intercept)" in der Ausgabe ist ein Überbleibsel der Eingabe und für diese Berechnung praktisch bedeutungslos.)


Die gleichen Informationen in noch einer anderen Form erscheinen in der Ausgabe vontable . ZB die (langwierige) Ausgabe von

table(x, factor1, factor2, factor3)

enthält dieses Panel:

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

Die Spalte für factor1= 1 entspricht den drei Faktoren auf den Ebenen (1,2,0) und zeigt, dass der Werte von gleich , was mit dem übereinstimmt, was wir aus und lesen .121/(21+21)=0.5x1aggregateglm


Schließlich wird eine Kombination von Faktoren, die den höchsten Anteil im Datensatz ergeben, zweckmäßigerweise aus der Ausgabe von aggregate:

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429

1
Dies sind viele Informationen, und ich werde einige Zeit brauchen, um sie zu verdauen, aber ich bin froh zu hören, dass die tabellierten Prozentsätze und logistischen Regressionen im Wesentlichen die gleichen Ergebnisse liefern. Ich habe die Aggregatfunktion für zwei der Prädiktoren ausgeführt und sie wurde sofort beendet. Die Ergebnisse für die logistische Anpassung wurden einige Minuten lang ausgeführt und sind noch nicht abgeschlossen. Ich werde die Dinge weiter optimieren, aber möglicherweise verwende ich nur die tabellierten Prozentsätze. Vielen Dank!
Rachel

(+1), Off the cuff Ich frage mich, ob Standardfehler in diesem Zusammenhang aus der logistischen Regression in die von mir vorgeschlagenen grafischen Mosaikplotzusammenfassungen aufgenommen werden können. Ich vermute auch, dass dies ein guter Weg sein könnte, um die Ergebnisse schnell nach interessanten Interaktionen zu "filtern" (dies sind jedoch nur meine Überlegungen!)
Andy W

"Die logistische Regression liefert bis zur numerischen Ungenauigkeit genau die gleichen Anpassungen wie die tabellierten Prozentsätze": Tabelliert sie nicht die Prozentsätze für jede Konfiguration von Prädiktoren? In diesem Fall kann die logistische Regression nicht alle möglichen Beziehungen codieren.
Neil G

@Neil Sicher kann es alle "Beziehungen" (Kombinationen von Faktoren) codieren: Verwenden Sie alle möglichen Interaktionen. Ein Beispiel finden Sie im R-Code. Wenn die Faktoren zahlreich sind, wird es in der Praxis viele leere Kombinationen geben, aber anständige Software wird kein Problem damit haben. Noch bessere Software kann die Kombinationen ohne Variation der Antworten verarbeiten.
whuber

@Andy Ich liebe deine Antwort zu den Grafiken - wir müssen einen Weg finden, einen Thread zu erstellen, in dem es genau die richtige Antwort ist! Vielleicht wäre Ihr Gedanke, Fehlerschätzungen in die Mosaikdiagramme aufzunehmen, der richtige Weg: Wie würden Sie die logistischen Schätzungen, die tatsächlichen Daten und / oder den Fehler gleichzeitig in ihnen darstellen?
whuber

6

Für einen schnellen Überblick über den Anteil der binären Antworten innerhalb jeder Kategorie und / oder abhängig von mehreren Kategorien können grafische Darstellungen hilfreich sein. Insbesondere um gleichzeitig Proportionen zu visualisieren, die von vielen kategorialen unabhängigen Variablen abhängig sind, würde ich Mosaic Plots vorschlagen .

Unten finden Sie ein Beispiel aus einem Blog-Beitrag, Grundlegendes zu bereichsbezogenen Plots: Mosaik-Plots aus den statistischen Grafiken und mehr Blogs. Dieses Beispiel zeigt den Anteil der Überlebenden auf der Titanic in Blau, abhängig von der Klasse des Passagiers. Man kann gleichzeitig den Anteil der Überlebenden beurteilen und gleichzeitig die Gesamtzahl der Passagiere in jeder der Untergruppen einschätzen (nützliche Informationen sicher, insbesondere wenn bestimmte Untergruppen nur eine geringe Anzahl haben und wir mehr zufällige Abweichungen erwarten würden).

Mosaikplot der Titanic
(Quelle: theusrus.de )

Man kann dann nachfolgende Mosaikdiagramme von mehreren kategorialen unabhängigen Variablen abhängig machen. Das nächste Beispiel aus demselben Blogbeitrag in einer kurzen visuellen Zusammenfassung zeigt, dass alle Kinderpassagiere in der ersten und zweiten Klasse überlebt haben, während es in der dritten Klasse den Kindern bei weitem nicht so gut ging. Es zeigt sich auch deutlich, dass weibliche Erwachsene in jeder Klasse eine viel höhere Überlebensrate hatten als Männer, obwohl der Anteil weiblicher Überlebender zwischen den Klassen von der ersten zur zweiten bis zur dritten Klasse merklich abnahm (und dann für die Besatzung wieder relativ hoch war) Beachten Sie erneut, dass es nicht viele weibliche Besatzungsmitglieder gibt, da die Messlatte eng ist.

Mosaik abhängig von der dritten Variablen
(Quelle: theusrus.de )

Es ist erstaunlich, wie viele Informationen angezeigt werden. Dies sind Proportionen in vier Dimensionen (Klasse, Erwachsener / Kind, Geschlecht und Anteil der Überlebenden)!

Ich stimme zu, wenn Sie an Vorhersagen oder allgemeineren kausalen Erklärungen interessiert sind, sollten Sie sich einer formaleren Modellierung zuwenden. Grafische Darstellungen können jedoch sehr schnelle visuelle Hinweise auf die Art der Daten sein und andere Erkenntnisse liefern, die bei der einfachen Schätzung von Regressionsmodellen häufig übersehen werden (insbesondere bei der Betrachtung von Interaktionen zwischen den verschiedenen kategorialen Variablen).


+1, dies ist der Punkt, den ich in meinem obigen Kommentar versucht habe, ob das Ziel eine einfache Beschreibung oder eine Schlussfolgerung war. Nb, dass der Punkt klarer und besser mit Zahlen gemacht ist!
Gung - Reinstate Monica

@gung danke, wofür steht Nb? Auch mit Zahlen sage ich immer besser!
Andy W

2
"Nb" steht für nota bene , was wiederum lateinisch für "note well" (wörtlich) oder "note that" / "note" (umgangssprachlich) ist.
Gung - Reinstate Monica

3

Abhängig von Ihren Anforderungen stellen Sie möglicherweise fest, dass die rekursive Partitionierung eine einfach zu interpretierende Methode zur Vorhersage einer Ergebnisvariablen darstellt. Für eine R Einführung in diesen Methoden finden Sie unter Schnell-R - Baum-basierte Modell Seite. Ich bevorzuge ctree()im Allgemeinen die Implementierung in Rs Party-Paket, da man sich keine Gedanken über das Beschneiden machen muss und standardmäßig hübsche Grafiken erzeugt.

Dies würde in die Kategorie der in einer früheren Antwort vorgeschlagenen Merkmalsauswahlalgorithmen fallen und im Allgemeinen ebenso gute, wenn nicht bessere Vorhersagen liefern wie die logistische Regression.


2

Angesichts Ihrer fünf kategorialen Prädiktoren mit jeweils 20 Ergebnissen benötigt die Lösung mit einer anderen Vorhersage für jede Konfiguration von Prädiktoren Parameter. Jeder dieser Parameter benötigt viele Trainingsbeispiele, um gut gelernt zu werden. Haben Sie mindestens zehn Millionen Trainingsbeispiele, die auf alle Konfigurationen verteilt sind? Wenn ja, machen Sie es so.205

Wenn Sie weniger Daten haben, möchten Sie weniger Parameter lernen. Sie können die Anzahl der Parameter reduzieren, indem Sie beispielsweise davon ausgehen, dass Konfigurationen einzelner Prädiktoren konsistente Auswirkungen auf die Antwortvariable haben.

Wenn Sie glauben, dass Ihre Prädiktoren unabhängig voneinander sind, ist die logistische Regression der einzigartige Algorithmus, der das Richtige tut. (Auch wenn sie nicht unabhängig sind, kann es immer noch ziemlich gut funktionieren.)

Zusammenfassend lässt sich sagen, dass die logistische Regression eine Annahme über den unabhängigen Einfluss von Prädiktoren macht, wodurch die Anzahl der Modellparameter verringert wird und ein Modell entsteht, das leicht zu erlernen ist.


1

Sie sollten sich die Algorithmen zur Funktionsauswahl ansehen. Eine für Ihren Fall geeignete Methode (binäre Klassifizierung, kategoriale Variablen) ist die Methode "Minimum Redundancy Maximum Relevance" (mRMR). Sie können es schnell online unter http://penglab.janelia.org/proj/mRMR/ ausprobieren.


Ist es möglich, dieses Programm mit mehr als einem kategorialen Prädiktor auszuführen? Auf der Upload-Seite sieht es so aus, als ob nur die erste Spalte die "Klasse" von Daten sein kann ... Vielleicht verstehe ich nicht, wie die Daten formatiert werden sollen.
Rachel

Oder soll die "Klasse" die Ausgabevariable sein, in diesem Fall eine 0 oder 1? Wenn ja, ist es wichtig, die kategorialen Variablen in Dummy-Variablen umzuwandeln, um Indikatoren für jede anzuzeigen?
Rachel

Sie können so viele Prädiktoren haben, wie Sie möchten. Die erste Zeile Ihrer Datendatei muss die Feature-Namen sein, und die erste Spalte muss die Klassen (Antwortvariable) für Beispiele sein. Ein Beispiel ist: response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
Emrea

1

Ich arbeite im Bereich der Kreditbewertung, wo das, was hier als seltsamer Fall dargestellt wird, die Norm ist.

Wir verwenden die logistische Regression und konvertieren sowohl kategoriale als auch kontinuierliche Variablen in Evidenzgewichte (WOEs), die dann als Prädiktoren für die Regression verwendet werden. Es wird viel Zeit darauf verwendet, die kategorialen Variablen zu gruppieren und die kontinuierlichen Variablen zu diskretisieren (Binning / Klassifizierung).

Das Gewicht der Beweise ist eine einfache Berechnung. Es ist das Protokoll der Gewinnchancen für die Klasse, abzüglich des Protokolls der Gewinnchancen für die Bevölkerung:
WOE = ln (gut (Klasse) / schlecht (Klasse)) - ln (gut (ALL) / schlecht (ALL)) Dies ist das Standardtransformationsmethode für fast alle Kreditbewertungsmodelle, die mithilfe der logistischen Regression erstellt wurden. Sie können die gleichen Zahlen stückweise verwenden.

Das Schöne daran ist, dass Sie immer wissen, ob die jedem WOE zugewiesenen Koeffizienten sinnvoll sind. Negative Koeffizienten widersprechen den Mustern innerhalb der Daten und resultieren normalerweise aus Multikollinearität; und Koeffizienten über 1,0 zeigen eine Überkompensation an. Die meisten Koeffizienten liegen irgendwo zwischen Null und Eins.


Vielen Dank für einen interessanten und informativen Beitrag. Ich kann jedoch nicht herausfinden, wie es auf die Frage in diesem Thread reagiert. Was ist der "seltsame Fall", auf den Sie sich beziehen? Wollten Sie dies vielleicht nutzen, um eine andere Frage an anderer Stelle zu beantworten?
whuber
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.