Aggiunta di pesi alla regressione logistica per dati sbilanciati


21

Voglio modellare una regressione logistica con dati sbilanciati (9: 1). Volevo provare l'opzione pesi nella glmfunzione in R, ma non sono sicuro al 100% di ciò che fa.

Diciamo che la mia variabile di output è c(0,0,0,0,0,0,0,0,0,1). ora voglio dare l '"1" 10 volte più peso. quindi do l'argomento pesi weights=c(1,1,1,1,1,1,1,1,1,1,1,10).

Quando lo farò, verrà preso in considerazione nel calcolo della massima verosimiglianza. Ho ragione? la classificazione errata di "1" è solo 10 volte peggiore della classificazione errata di "0".

Risposte:


11

Ching, non devi bilanciare il tuo set di dati in termini di 1 e 0. Tutto ciò di cui hai bisogno è un numero sufficiente di 1 per la massima probabilità di convergere. Osservando la distribuzione di 1 (100.000) nel tuo set di dati, non dovresti avere problemi. Puoi fare un semplice esperimento qui

  1. Campiona il 10% degli 1 e il 10% degli 0 e usa un peso di 10 per entrambi
  2. Campiona il 100% degli 1 e il 10% degli 0 e usa un peso di 10 per gli 0

In entrambi i casi, otterrai stime identiche. Ancora una volta l'idea di ponderazione è legata al campionamento. Se si utilizza l'intero set di dati non è necessario ponderarlo. Se fossi in te userei solo il 10% se 1 e il 10% di 0.

In R, useresti glm. Ecco un codice di esempio:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

Nel tuo set di dati dovrebbe esserci una variabile wtper i pesi.

Se usi il 10% di entrambi 0 e 1, la tua wtvariabile avrà un valore di 10.

Se usi il 10% degli 0 e il 100% degli 1: la wtvariabile avrà un valore di 10 per le osservazioni con y = 0 e 1 per le osservazioni con y = 1


12

La ponderazione è una procedura che pondera i dati per compensare le differenze nel campione e nella popolazione (King 2001). Ad esempio, in eventi rari (come frodi nel rischio di credito, decessi nella letteratura medica) tendiamo a campionare tutti gli 1 (eventi rari) e una frazione di 0 (non eventi). In tali casi dobbiamo ponderare le osservazioni di conseguenza.

Esempio: diciamo, in una popolazione di 500.000 transazioni ci sono 50 transazioni fraudolente. In questo caso lo faresti

  1. Prova tutte e 50 le transazioni fraudolente (100% della frode)
  2. 10% delle transazioni valide (il 10% di 500.000 sono 50.000 transazioni valide)

In questo caso assegneresti un peso di 1 per le transazioni fraudolente e un peso di 10 per le transazioni valide. Questo è chiamato il metodo di massima verosimiglianza ponderata. L'importante da asporto è che la ponderazione è correlata alle proporzioni di campionamento

Consultare: Regressione logistica nei dati sugli eventi rari (King 2001)


ciao subra !!! grazie mille per l'approccio King !! non ne ho sentito parlare! nel mio caso ho 1 milione di transazioni! (900.000 sono "0" e 100.000 sono "1"). quindi dovrei campionare il 10% del mio "0"? quindi ho quasi un set di dati bilanciato. allora devo pesare lo "0" dieci volte di più rispetto allo "1" giusto? e la funzione in R glm () nel pacchetto MASS fa esattamente questo? se appesantisco le mie osservazioni, calcolerò la probabilità massima ponderata? grazie! apprezzo molto la tua risposta e il tuo aiuto
ching

penso davvero molto a questo problema. cosa succede se dico: ora uso tutti i miei dati per costruire un modello logit (con i dati sbilanciati 9: 1). e poi peso il mio "1" dieci volte, anche se in realtà non ho più dati e NON è il 10% dei miei dati. è proprio come, mi comporto come ho ..... quindi ora quando R calcola il modello, pensa di usare solo il 10% del mio "1" e lo considera nel calcolo della probabilità. ha senso?
ching
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.