Come fissare un coefficiente e adattarlo agli altri usando la regressione


11

Vorrei fissare manualmente un certo coefficiente, diciamo , quindi adattare i coefficienti a tutti gli altri predittori, mantenendo β 1 = 1.0 nel modello.β1=1.0β1=1.0

Come posso ottenere questo usando R? Mi piacerebbe particolarmente lavorare con LASSO ( glmnet) se possibile.

In alternativa, come posso limitare questo coefficiente a un intervallo specifico, diciamo ?0.5β11.0


Per specificare i vincoli di casella sui coefficienti adattati ci sono gli argomenti lower.limits e upper.limits in glmnet, giusto?
Tom Wenseleers,

Risposte:


4

Devi usare l' offsetargomento in questo modo:

library(glmnet)
x=matrix(rnorm(100*20),100,20)
x1=matrix(rnorm(100),100,1)
y=rnorm(100)
fit1=glmnet(x,y,offset=x1)
fit1$offset
print(fit1)

A proposito della gamma ... Non penso che sia stato implementato in glmnet. Se usano un metodo numerico, potresti voler scavare nel codice R e provare a limitarlo laggiù, ma avrai bisogno di un buon background di programmazione solido.


2
Cosa sta offsetrealmente facendo? Come viene 1.1*x1determinato il valore della domanda?
whuber

Ho letto la documentazione per "offset" in glmnet e non sono ancora sicuro di cosa faccia. Non sono riuscito a trovare grandi esempi, ma la maggior parte dei processi di riferimento di Poisson. Perché viene usato 1.1 * x1?
raco,

Ho pensato che stesse fissando i coefficienti su . Ho appena modificato la risposta. L'offset è il termine in cui il suo coefficiente non è stimato dal modello ma si presume abbia il valore 1.β1=1.1
Stat

Sono abbastanza contento di questa risposta. Posso scorrere diversi "coefficienti" di offset e confrontare modelli. Grazie!
raco,

1
offsetglmnetbeta[,ncol(fit1β1=1.0lower.limitsupper limits

9

Bene, pensiamo. Hai:

Y=b0+b1x1+b2x2+e

b1=1

Y=b0+x1+b2x2+e

x1

Ynew=Yx1=b0+b2x2+e

b2


2
Questa è la parte facile (ed è stata affrontata in altri thread, come ricordo). Che dire di limitare il coefficiente a un intervallo? La parte particolarmente difficile di questo problema è ottenere buoni limiti di confidenza quando la stima si trova al limite della regione vincolata.
whuber

2
È decisamente più difficile. Ho perso la fine del post. Ma penso che dovrei lasciare la mia risposta perché risponde a una parte della domanda
Peter Flom - Ripristina Monica

β11β1=0.75Ynew=Y.75x1=β0+(β10.75)x1+β2x2+ϵβ1

1
Sì, se è fissato a .75, fare ciò che dici funzionerà. Ma come sottolinea @whuber, questa è la parte facile di questo problema
Peter Flom - Ripristina Monica

2
@whuber, in un quadro bayesiano potresti lanciare un passo Metropolis per scartare eventuali coefficienti al di fuori del tuo raggio di azione o in alternativa potresti campionare da una distribuzione normale multivariata troncata.
Giovanni,

3

Per quanto riguarda i coefficienti vincolanti di essere all'interno di un intervallo, un approccio bayesiano alla stima è un mezzo per raggiungere questo obiettivo.

In particolare, ci si affiderebbe a una catena Markov Monte Carlo. Innanzitutto, considera un algoritmo di campionamento di Gibbs, che è il modo in cui si adatterebbe l'MCMC in un framework bayesiano senza restrizioni. Nel campionamento di Gibbs, in ogni fase dell'algoritmo si campiona dalla distribuzione posteriore di ciascun parametro (o gruppo di parametri) in base ai dati e a tutti gli altri parametri. Wikipedia fornisce un buon riassunto dell'approccio.

Un modo per limitare l'intervallo è applicare un passaggio di Metropolis-Hastings. L'idea di base è semplicemente eliminare qualsiasi variabile simulata al di fuori dei limiti. È quindi possibile continuare a ripetere il campionamento fino a quando non rientra nei limiti prima di passare alla successiva iterazione. L'aspetto negativo di questo è che potresti rimanere bloccato simulando molte volte, il che rallenta l'MCMC. Un approccio alternativo, originariamente sviluppato da John Geweke in alcuni articoli ed esteso in un articolo di Rodriguez-Yam, Davis, Sharpe è quello di simulare da una distribuzione normale multivariata vincolata. Questo approccio può gestire vincoli di disuguaglianza lineari e non lineari sui parametri e ho avuto un certo successo con esso.


Per specificare i vincoli di casella sui coefficienti adattati ci sono gli argomenti lower.limits e upper.limits in glmnet, giusto?
Tom Wenseleers,

@TomWenseleers Stavo rispondendo più in generale. Guarda alcune delle altre risposte in merito a glmnet.
Giovanni,

2

Non ho familiarità con LASSO o glmnet, ma lavaan(abbreviazione di "analisi delle variabili latenti") facilita i modelli di regressione multipla con vincoli di uguaglianza e vincoli di disuguaglianza delimitati da un singolo limite (vedere la tabella a pagina 7 di questo PDF, "lavaan: un pacchetto R per la modellazione di equazioni strutturali " ). Non so se sul coefficiente potresti avere sia i limiti superiore che inferiore, ma forse potresti aggiungere ogni limite con linee separate, ad esempio:

Coefficient>.49999999
Coefficient<1.0000001

Naturalmente, se stai standardizzando tutto prima di adattare il modello, non dovresti preoccuparti di imporre un limite superiore di 1 ai tuoi coefficienti di regressione. Direi che è meglio ometterlo in questo caso, nel caso in cui qualcosa vada storto! ( lavaan è ancora in beta dopo tutto ... Ho visto alcuni risultati leggermente sospesi nel mio uso limitato finora)


Per specificare i vincoli di casella sui coefficienti adattati ci sono gli argomenti lower.limits e upper.limits in glmnet, giusto?
Tom Wenseleers,
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.