Nou în

BIC pentru penalizarea selecției lasou

Selectarea parametrului penalizării este fundamentală pentru analiza lasou. Alegeți un mic parametru de penalizare și riscați să includeți prea multe variabile în modelul dumneavoastră. Alegeți una mare și s-ar putea să excludeți variabile importante.
Acum, putem folosi criteriul Bayesian de informații (BIC) pentru a selecta parametrii penalizării în comenzile legate de lazo atât pentru predicție, cât și pentru inferență.
Pentru predicție, putem alege parametrii penalizării prin minimizarea BIC în lasso, elasticnet și sqrtlasso. Pentru inferență, putem alege, de asemenea, parametrii de penalizare prin minimizarea BICîn dsregress, dslogit, dspoisson, poregress, pologit, popoisson, poivregress, xporegress, xpologit, xpopoisson, xpoivregress și telasso.
După selectarea parametrului de penalizare Basso cu lasou, putem trasa funcția BIC, care arată valorile criteriului BIC peste grila parametrilor de penalizare. Trasajul arată, de asemenea, BIC minim, care este valoarea parametrului de penalizare selectat.
Pentru a alege parametrii de penalizare pe baza BIC, trebuie doar să specificați opțiunea selection(bic).
type Pentru un model liniar pentru y, cu covariabile candidate x1-x100, pentru a utiliza BIC pentru selecție, tastăm

. lasso linear y x1-x100, selection(bic)

Pentru a privi graficul funcției BIC montat, tastăm

. bicplot

Utilizarea selecției duble pentru a estima și testa efectul lui d1 asupra y, cu variabilele de control de la x1 la x100, este la fel de simplu; noi tastăm

. dsregress y d1, controls(x1-x100) selection(bic)

Din nou, putem folosi bicplot după.

Repere

  • Selectarea parametrilor de penalizare BIC pentru predicție cu lasou
    • Lasou
    • Lasou cu rădăcină pătrată
    • Plasă elastică
  • Selectarea parametrilor de penalizare BIC pentru inferență cu lasou
    • Estimatori parțiali
    • Estimatori de partajare încrucișată
    • Estimatori de dublă selecție
  • Parametru de penalizare BIC cu estimarea efectului tratamentului cu lazo
  • Se trasează funcția BIC

Să vedem cum funcționează

Utilizarea BIC în lasou pentru predicție

Seturile de date utilizate cu lasou au de obicei multe variabile. Pentru a începe, folosim instrumentul de gestionare a variabilelor vl pentru a ne salva de la tastarea manuală a multor nume de variabile.

. use https://www.stata-press.com/data/r17/fakesurvey_vl
(Fictitious survey data with vl)

. vl rebuild
Rebuilding vl macros ...

Macro's contents
Macro # Vars Description
System
$vldummy 98 0/1 variables
$vlcategorical 16 categorical variables
$vlcontinuous 29 continuous variables
$vluncertain 16 perhaps continuous, perhaps categorical variables
$vlother 12 all missing or constant variables
User
$demographics 4 variables
$factors 110 variables
$idemographics factor-variable list
$ifactors factor-variable list

vl a creat un set de macro-uri globale, fiecare cu un set de variabile pe care le putem folosi în timpul estimării. vl face viața mai ușoară atunci când aveți de-a face cu seturi mari de covariabile.
Apoi, folosim splitsample pentru a împărți datele în date de antrenament și date de testare. Datele de antrenament vor fi utilizate pentru a se potrivi modelului lasso, iar datele de testare vor fi utilizate pentru a evalua performanța de predicție a modelului montat.

. set seed 12345671
. splitsample, generate(sample) nsplit(2)
. label define svalues 1 "Training" 2 "Testing"
. label values sample svalues

Acum, suntem pregătiți să potrivim un model lazo folosind BIC pentru a selecta parametrul penalizării. Pentru a face acest lucru, trebuie să specificăm opțiunea de selection(bic).

. lasso linear q104 ($idemographics) $ifactors $vlcontinuous
> if sample == 1, selection(bic)
Evaluating up to 100 lambdas in grid ...
Grid value 1:     lambda = 1.059075   no. of nonzero coef. =       4
                  BIC =  2653.83
Grid value 2:     lambda =   .96499   no. of nonzero coef. =       5
                  BIC = 2654.907
        ...(output omitted)...
Grid value 17:    lambda = .2390354   no. of nonzero coef. =      44
                  BIC = 2663.639
... selection BIC complete ... minimum found

Lasso linear model                          No. of obs        =        458
                                            No. of covariates =        273
Selection: Bayesian information criterion

No. of
nonzero Out-of-sample
ID Description lambda coef. R-squared BIC
1 first lambda 1.059075 4 0.0339 2653.83
10 lambda before .4584484 17 0.2552 2614.289
* 11 selected lambda .4177211 18 0.2806 2604.524
12 lambda after .3806119 21 0.3066 2606.103
17 last lambda .2390354 44 0.4220 2663.639
* lambda selected by Bayesian information criterion

Parametrul de penalizare selectat de criteriul minim BIC a fost 0,42.
Putem privi graficul funcției BIC montat tastând bicplot.

. bicplot

Funcția BIC scade rapid înainte de minim la λ = 0,42.

Utilizarea BIC în dsregress pentru inferență

Să presupunem că suntem interesați să cunoaștem efectul poluării aerului (no2_class) asupra timpului de reacție al copiilor (react), controlând covariabilele. Cu toate acestea, nu suntem siguri cu privire la variabilele de control pe care să le includem în model. Putem folosi dsregress pentru a estima în mod constant coeficientul pe no2_class în timp ce folosim lasso pentru a selecta variabilele de control.
Specificăm opțiunea de selection(bic) pentru a utiliza bic pentru a selecta parametrul de penalizare în fiecare lasou efectuat de dsregress. Includem un set de 32 de controale stocate în macrocomenzile globale cc și fc.

. dsregress react no2_class, controls($cc i.($fc)) selection(bic)

Estimating lasso for react using BIC
Estimating lasso for no2_class using BIC

Double-selection linear model         Number of obs               =      1,036
                                      Number of controls          =         32
                                      Number of selected controls =         11
                                      Wald chi2(1)                =      22.18
                                      Prob > chi2                 =     0.0000

Robust
react Coefficient std. err. z P>|z| [95% conf. interval]
no2_class 2.315295 .4916547 4.71 0.000 1.35167 3.278921

Vedem că 11 din 32 de controale sunt selectate. Estimarea noastră punctuală pentru efectul dioxidului de azot asupra timpului de reacție este de 2,3, ceea ce înseamnă că ne așteptăm ca timpul de reacție să crească cu 2,3 milisecunde pentru fiecare creștere a microgramei pe metru cub a dioxidului de azot. Această valoare este statistic diferită de 0.
dsregress a rulat de fapt două lasouri, unul pentru react și unul pentru no2_class. Putem trasa funcția BIC pentru ambele lassos tastând

. bicplot, for(react)

și

. bicplot, for(no2_class)