2013-08-15 25 views
5

Sto eseguendo una regressione sui dati del censimento in cui la mia variabile dipendente è l'aspettativa di vita e ho otto variabili indipendenti. I dati sono aggregati come città, quindi ho molte migliaia di osservazioni.Come impostare un minimo dei quadrati ponderati in r per i dati eteroschedastici?

Il mio modello è piuttosto eterodosso. Voglio gestire un minimo di quadrati in cui ogni osservazione è ponderata dalla popolazione della città. In questo caso, vorremmo dire che voglio pesare le osservazioni per inverso della radice quadrata della popolazione. Non è chiaro per me, tuttavia, quale sarebbe la migliore sintassi. Attualmente, ho:

Model=lm(…,weights=(1/population)) 

È corretto? O dovrebbe essere:

Model=lm(…,weights=(1/sqrt(population))) 

(ho trovato questa domanda qui:. Weighted Least Squares - R ma non chiarisce come R interpreta l'argomento di pesi)

+0

Se si desidera pesare in base all'inverso della radice quadrata della popolazione, quale sarebbe l'argomento dell'opzione 1 rispetto all'opzione 2? – joran

+0

Penso che sia la radice della domanda - R interpreta ulteriormente l'argomento dei pesi? –

risposta

1

per rispondere alla tua domanda, Lucas, Penso che tu voglia pesi = (1/popolazione). R parametra i pesi come inversamente proporzionali alle varianze, quindi specificare i pesi in questo modo equivale a supporre che la varianza dell'erro Il termine è proporzionale alla popolazione della città, che è un'ipotesi comune in questa impostazione.

Ma controllare l'ipotesi! Se la varianza del termine di errore è effettivamente proporzionale alla dimensione della popolazione, se dividete ogni residuo per la radice quadrata della dimensione del campione corrispondente, i residui dovrebbero avere una varianza costante. Ricorda, dividendo una variabile casuale per un risultato costante nella varianza divisa per il quadrato di quella costante.

Ecco come è possibile controllare questo: Ottenere residui della regressione da

residuals = lm(..., weights = 1/population)$residuals 

Poi dividere i residui dalle radici quadrate della popolazione varianze:

standardized_residuals = residuals/sqrt(population) 

confrontare Poi la varianza campionaria tra i residui corrispondenti alla metà inferiore delle dimensioni della popolazione:

variance1 = var(standardized_residuals[population < median(population)]) 

alla varianza campionaria tra i residui corrispondenti alla metà superiore di dimensioni della popolazione:

variance2 = var(standardized_residuals[population > median(population)]) 

Se questi due numeri, variance1 e variance2 sono simili, allora si sta facendo qualcosa di giusto.Se sono drasticamente differenti, allora forse la tua ipotesi è violata.

2

Da ?lm: "pesi: un vettore facoltativa di pesi per essere usato nel processo di adattamento Dovrebbe essere NULL o un vettore numerico Se non NULL, i minimi quadrati ponderati sono usati con i pesi weights (ovvero, riducendo al minimo la somma (w * e^2)), altrimenti vengono usati i minimi quadrati ordinari. " R non fa alcuna ulteriore interpretazione dell'argomento dei pesi.

Quindi, se ciò che si desidera minimizzare è la somma di (la distanza quadrata tra ciascun punto e la linea di adattamento * 1/sqrt (popolazione), quindi si desidera ...weights=(1/sqrt(population)). Se si desidera ridurre al minimo la somma di (il quadrato distanza da ogni punto della curva di adattamento * 1/popolazione) poi si desidera ...weights=1/population.

quale di questi è più appropriata ... questa è una domanda per CrossValidated!