Gibt es eine einfache Möglichkeit, zwei glm-Modelle in R zu kombinieren?

9

Ich habe zwei logistische Regressionsmodelle in R erstellt mit glm(). Beide verwenden dieselben Variablen, wurden jedoch mit unterschiedlichen Teilmengen einer Matrix erstellt. Gibt es eine einfache Möglichkeit, ein Durchschnittsmodell zu erhalten, das die Mittelwerte der Koeffizienten angibt, und dieses dann mit der Funktion Predict () zu verwenden?

[Entschuldigung, wenn diese Art von Frage auf einer Programmierseite veröffentlicht werden soll, lass es mich wissen und ich werde sie dort posten]

Vielen Dank

Andrew
quelle
1
Einige nützliche Informationen finden Sie im zugehörigen Thread unter stats.stackexchange.com/q/8502/919 .
whuber
In R bietet das caretPaket einige coole Funktionen zum Kombinieren von Modellen.
ScreechOwl

Antworten:

2

Möchten Sie den Durchschnitt der vorhergesagten Wahrscheinlichkeiten oder den Durchschnitt der Koeffizienten nehmen? Sie liefern unterschiedliche Ergebnisse, da eine logistische Regression eine nichtlineare Transformation des linearen Prädiktors beinhaltet.

Eine Funktion, die beides ausführen könnte, wäre ungefähr so. Stellen Sie ein avg, "prob"um das erstere oder etwas anderes für das letztere zu erhalten.

pred_comb <- function(mod1, mod2, dat, avg="prob", ...)
{
    xb1 <- predict(mod1, dat, type="link", ...)
    xb2 <- predict(mod2, dat, type="link", ...)
    if(avg == "prob")
        (plogis(xb1) + plogis(xb2))/2
    else plogis((xb1 + xb2)/2)
}
Hong Ooi
quelle
@ Hong Ooi: Danke! Dieser Code ist wirklich nützlich und wird den Trick machen, aber was ich hauptsächlich anstrebte, war eine Funktion, die ein neues R-Modell ergeben würde, das ich später im Workflow in Predict () einfügen könnte. Ich denke jedoch, dass Ihre Funktion ziemlich elegant ist und wie Sie sie einstellen können, um Wahrscheinlichkeiten anzugeben.
Andrew
@ Andrew Sie können hierfür die objektorientierte Programmierung von R nutzen. Fügen Sie Ihre beiden Modelle in eine Liste ein und geben Sie ihr beispielsweise eine Klasse glm_2. Rufen Sie die obige Funktion auf predict.glm_2und Sie können sie dann nach Bedarf predict()für Ihr Objekt verwenden.
Hong Ooi
2
Warum ist die Mittelung der Koeffizienten angemessen? Wenn die beiden Datensätze unterschiedliche Größen haben, sollte sicherlich mindestens eine Form des gewichteten Durchschnitts verwendet werden.
whuber
@ Hong - danke, ich werde das ausprobieren. @whuber - danke für den Hinweis. Wenn meine beiden Datensätze dieselbe Größe haben, wird ein Problem gewichtet (daran hatte ich vorher noch nicht gedacht). Wenn sie unterschiedlich sind, wiege ich sie nur nach dem Verhältnis der Größen (z. B. wenn eine doppelt so groß ist, gebe ich ihr das doppelte Gewicht)?
Andrew
@ Andrew Es ist nur dann korrekt, nach Datenanzahl zu gewichten, wenn die Werte der unabhängigen Variablen in beiden Teilmengen gleich sind. Für einen besseren Ansatz (der auch theoretisch gültig ist) lesen Sie den Thread, auf den ich in einem Kommentar zu Ihrer Frage verwiesen habe.
whuber