C'è un modo semplice per combinare due modelli glm in R?


9

Ho due modelli di regressione logistica in R realizzati con glm(). Entrambi usano le stesse variabili, ma sono stati realizzati usando diversi sottoinsiemi di una matrice. Esiste un modo semplice per ottenere un modello medio che fornisce la media dei coefficienti e quindi utilizzarlo con la funzione predict ()?

[scusate se questo tipo di domanda dovrebbe essere pubblicato su un sito di programmazione fatemi sapere e lo pubblicherò lì]

Grazie


1
È possibile trovare alcune informazioni utili nel thread correlato all'indirizzo stats.stackexchange.com/q/8502/919 .
whuber

In R, il caretpacchetto ha alcune funzioni interessanti per la combinazione di modelli.
screechOwl

Risposte:


2

Vuoi prendere la media delle probabilità previste o la media dei coefficienti? Daranno risultati diversi, perché una regressione logistica comporta una trasformazione non lineare del predittore lineare.

Una funzione da svolgere sarebbe qualcosa del genere. Imposta avgper "prob"ottenere il primo o qualcos'altro per il secondo.

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: grazie! Questo codice è davvero utile e farà il trucco, ma quello a cui miravo principalmente era una funzione che avrebbe dato un nuovo modello R che poi avrei potuto prevedere () in seguito nel flusso di lavoro. Tuttavia, penso che la tua funzione sia piuttosto elegante e mi piace il modo in cui puoi impostarla per dare probabilità.
Andrew

@Andrew puoi approfittare della programmazione orientata agli oggetti di R per questo. Metti i tuoi due modelli in un elenco e dagli una classe, diciamo glm_2. Chiamare la funzione sopra predict.glm_2e quindi è possibile utilizzare predict()l'oggetto come richiesto.
Hong Ooi,

2
Perché la media dei coefficienti è appropriata? Se i due set di dati hanno dimensioni diverse, è necessario utilizzare almeno una forma di media ponderata.
whuber

@ Hong - grazie, lo proverò. @whuber - grazie per averlo segnalato. Se i miei due set di dati hanno le stesse dimensioni, sta pesando un problema (non ci avevo mai pensato prima). Se sono diversi, peso solo in base al rapporto tra le dimensioni (ad esempio, se uno è due volte più grande, gli do il doppio del peso)?
Andrew

@Andrew È corretto ponderare in base al conteggio dei dati solo se i valori delle variabili indipendenti sono gli stessi in entrambi i sottoinsiemi. Per un approccio migliore (che è anche teoricamente valido), vedi il thread a cui ho fatto riferimento in un commento alla tua domanda.
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.