Einfache binäre Logistische regression mit Hilfe von MATLAB

Ich arbeite dabei eine Logistische regression mit Hilfe von MATLAB eine einfache Klassifizierung problem. Meine kovariable ist eine kontinuierliche variable zwischen 0 und 1, während meine kategorische Antwort ist eine binäre variable mit 0 (falsch) oder 1 (richtig).

Ich bin auf der Suche, um zu führen eine Logistische regression zu etablieren, ein Indikator, dass würde Ausgang die Wahrscheinlichkeit, dass einige input-Beobachtung (z.B. die kontinuierliche variable wie oben beschrieben), wird richtig oder falsch. Obwohl dies ist ein ziemlich einfaches Szenario, ich habe einige Probleme bei der Ausführung dieses in MATLAB.

Mein Ansatz ist wie folgt: ich habe eine Spalte vector X enthält die Werte der kontinuierlichen Variablen, und eine andere gleich große Spalten-Vektor Y enthält die bekannte Klassifizierung der einzelnen Werte von X (z.B. 0 oder 1). Ich bin mit dem folgenden code:

[b,dev,stats] = glmfit(X,Y,'binomial','link','logit');

Aber das gibt mir unsinnige Ergebnisse mit einem p = 1.000, die Koeffizienten ( b ), die extrem hoch sind (-650.5, 1320.1), und die zugehörigen standard-Fehler-Werte in der Größenordnung von 1e6.

Habe ich dann versucht mit einem zusätzlichen parameter legen Sie die Größe für meine Binomialverteilung Beispiel:

glm = GeneralizedLinearModel.fit(X,Y,'distr','binomial','BinomialSize',size(Y,1));

Dieser gab mir Ergebnisse, die mehr im Einklang mit dem, was ich erwartet hatte. Ich extrahiert die Koeffizienten, die verwendet glmval zu erstellen Schätzungen (Y_fit = glmval(b,[0:0.01:1],'logit');), und erstellt ein array für die Montage (X_fit = linspace(0,1)). Wenn ich überzog die Grundstücke der ursprünglichen Daten und das Modell mit figure, plot(X,Y,'o',X_fit,Y_fit'-') das resultierende Diagramm des Modells im wesentlichen aussah wie der untere 1/4. der " S " - förmigen Grundstück, das ist typisch mit der logistischen regression plots.

Meine Fragen sind wie folgt:

1) Warum hat meine Verwendung von glmfit seltsame Ergebnisse?

2) Wie gehe ich bei der Bewältigung meiner ersten Frage: da einige input-Wert, was ist die Wahrscheinlichkeit, dass seine Einstufung richtig ist?

3) Wie bekomme ich die vertrauensbereiche für mein Modell-Parameter? glmval sollte in der Lage sein, die Eingabe der stats Ausgabe von glmfit, aber meine Verwendung der glmfit gibt nicht die richtigen Ergebnisse.

Kommentare und input wäre sehr hilfreich, danke!

UPDATE (3/18/14)

Fand ich, dass mnrval zu geben scheint vernünftige Ergebnisse. Ich kann verwenden [b_fit,dev,stats] = mnrfit(X,Y+1); wo Y+1 macht einfach meine binären Klassifikator in eine Nominale ein.

Kann ich eine Schleife durch [pihat,lower,upper] = mnrval(b_fit,loopVal(ii),stats); verschiedene pihat Wahrscheinlichkeitswerte, wo loopVal = linspace(0,1) oder einige geeignete Eingangsbereich und `ii = 1:length(loopVal)'.

Den stats parameter hat eine große Korrelation (0.9973), aber die p-Werte für b_fit sind 0.0847 und 0.0845, die ich bin mir nicht ganz sicher, wie Sie Sie interpretieren. Irgendwelche Gedanken? Auch deshalb würden mrnfit Arbeit über glmfit in meinem Beispiel? Ich sollte beachten Sie, dass die p-Werte für die Koeffizienten bei Verwendung GeneralizedLinearModel.fit waren beide p<<0.001, und der Koeffizient Schätzungen waren sehr unterschiedlich als gut.

Schließlich, wie macht man das interpretieren die dev Ausgabe vom mnrfit Funktion? Die MATLAB-Dokument besagt, dass "die Abweichung von der Passform bei der Lösung von vector. Die Abweichung ist eine Verallgemeinerung der residualen Summe der Quadrate". Ist dies sinnvoll, da eine stand-alone-Wert, oder ist das nur im Vergleich zu dev Werte aus anderen Modellen?

InformationsquelleAutor chex | 2014-03-19
Schreibe einen Kommentar