Regressione logistica ponderata caso


9

Sto esaminando alcuni problemi di regressione logistica. ("normale" e "condizionale").

Idealmente, vorrei ponderare ciascuno dei casi di input in modo che il glm si concentri maggiormente sulla previsione corretta dei casi con peso più elevato a scapito di una possibile classificazione errata dei casi con peso inferiore.

Sicuramente questo è stato fatto prima. Qualcuno può indirizzarmi verso alcune pubblicazioni pertinenti (o eventualmente suggerire una funzione di probabilità modificata).

Grazie!


1
Stai presupponendo che la classificazione sia l'obiettivo, al contrario della previsione. Per una stima ottimale delle probabilità non è necessario ripesare nulla. I "falsi negativi" e i "falsi positivi" si verificano solo con scelte forzate e di solito nessuno sta forzando una scelta binaria pura.
Frank Harrell,

@Frank Hai un buon punto. In definitiva, l'obiettivo di questo progetto è prevedere l'esito di ulteriori eventi. (Quindi, immagino che possa essere pensato come un gusto di apprendimento automatico con dati di allenamento.) Alcuni risultati sono più "importanti" di altri, quindi stavo cercando un modo per ponderarli di conseguenza. Il suggerimento di Nick per la funzione di verosimiglianza ha senso e dovrebbe essere abbastanza banale da implementare nel codice.
Noah,

1
Sembra che tu abbia bisogno esattamente di un modello di probabilità senza bisogno di pesi.
Frank Harrell,

1
Giusto; collegare la funzione di costo e utilizzare la probabilità prevista e si ha una decisione ottimale.
Frank Harrell,

1
Con un modello di probabilità ben calibrato non ci sono "errori", c'è solo casualità che non può essere prevista. Le decisioni ottimali sono una funzione della probabilità prevista e la funzione di costo per prendere varie decisioni da prendere.
Frank Harrell,

Risposte:


3

glmcontiene un parametro weightsesattamente per questo scopo. Lo fornite con un vettore di numeri su qualsiasi scala, che contiene lo stesso numero di pesi delle osservazioni.

Mi rendo conto solo ora che potresti non parlare R. Altrimenti, potresti volerlo.


Conosco molto bene R, tuttavia mi piacerebbe capire la matematica dietro la funzione di verosimiglianza. Potrei codificare questo in C ++ o in qualche altra lingua. (Solo fidarsi della "scatola nera" della funzione glm non è sempre la soluzione migliore)
Noah

Ah. Bravo. Bene, per quanto ne so, i pesi sono semplicemente usati per moltiplicare il loglikelihood per osservazione. Quindi, se hai scritto una versione non ponderata, aggiungere i pesi dovrebbe essere un gioco da ragazzi. Nota anche che puoi sempre guardare il codice sorgente per glmtrovare (probabilmente) un'implementazione in C.
Nick Sabbe,

2
@Nick, anche io avevo l'idea sbagliata che questa fosse la funzione dell'argomento pesi in glm - non lo è. Viene effettivamente utilizzato quando gli esiti binomiali sono disomogenei, nel senso che si basano su un numero diverso di prove. Ad esempio, se la prima osservazione fosse Binomiale ( ) e la seconda fosse Binomiale ( ), i loro pesi sarebbero . Ancora una volta, l'argomento pesi in glm () NON sono pesi di campionamento. Per fare ciò in R dovrai espandere il set di dati in base ai pesi e adattare il modello al set di dati espanso (in questo caso, tuttavia, le SE potrebbero essere errate). 7 , .5 3 , 73,.57,.53,7
Macro

3
Ecco una discussione dell'argomento "pesi" su una bacheca: r.789695.n4.nabble.com/Weights-in-binomial-glm-td1991249.html
Macro

@Macro: grazie! Molto pulito. Una delle cose che avrebbe potuto colpirmi nei denti se l'avessi usato prima del tuo commento :-)
Nick Sabbe,

1

Se hai accesso a SAS, questo è molto facile da ottenere usando PROC GENMOD. Finché ogni osservazione ha una variabile di peso, l'uso della dichiarazione di peso ti consentirà di eseguire il tipo di analisi che stai cercando. L'ho usato principalmente usando i pesi di probabilità inversa di trattamento, ma non vedo alcun motivo per cui non sia possibile assegnare pesi ai dati per enfatizzare alcuni tipi di casi, purché si assicuri che la N rimanga costante. Dovresti anche assicurarti di includere una sorta di variabile ID, poiché tecnicamente i casi sovrappesati sono osservazioni ripetute. Codice di esempio, con un ID di osservazione di "id" e una variabile di peso di "wt":

proc genmod data=work.dataset descending;
    class id;
    model exposure = outcome covariate / dist=bin link=logit;
    weight wt;
    repeated subject=id/type=ind;
run;
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.