Új a
-ben
BIC a lasso büntetés kiválasztásához
A büntetési paraméter kiválasztása alapvető fontosságú a lasszóelemzés szempontjából. Válasszon egy kis büntetési paramétert, és megkockáztathatja, hogy túl sok változó szerepeljen a modelljében. Válasszon nagyot, és kizárhatja a fontos változókat.
Most a Bayes-i információs kritérium (BIC) segítségével kiválaszthatjuk a büntetési paramétereket a lasszóval kapcsolatos parancsokban mind az előrejelzés, mind a következtetés szempontjából.
Az előrejelzéshez kiválaszthatjuk a büntetési paramétereket azáltal, hogy minimalizáljuk a BIC-t lasszóban, gumihálóban és sqrtlasso-ban. A következtetéshez büntetési paramétereket is választhatunk a BIC minimalizálásával a dsregress, dslogit, dspoisson, poregress, pologit, popoisson, poivregress, xporegress, xpologit, xpopoisson, xpoivregress, és telasso fájlokban.
A BIC büntetési paraméterek kiválasztásával készült lasszó után megrajzolhatjuk a BIC függvényt, amely a BIC kritérium értékeit mutatja a büntetési paraméterek rácsán.A diagram megmutatja a minimális BIC-értéket is, amely a kiválasztott büntetési paraméter értéke. A büntetési paraméterek BIC alapján történő kiválasztásához csak adja meg az opcióválasztást (bic). Az y, lineáris modelljéhez, az x1-x100, kovariánsok jelöltjével, hogy a BIC-t használjuk a kiválasztáshoz, beírjuk
. lasso linear y x1-x100, selection(bic)
Az illesztett BIC függvénydiagram megtekintéséhez beírjuk
. bicplot
A d1 y-ra gyakorolt hatásának becsléséhez és teszteléséhez dupla szelekció használata x1 és x100, kontrollváltozókkal ugyanolyan egyszerű; begépeljük
. dsregress y d1, controls(x1-x100) selection(bic)
Ismét használhatunk bicplot -ot utána.
Kiemelt
- BIC büntetési paraméterek kiválasztása lassoval az előrejelzéshez
- Lasso
- Négyzetgyök lasso
- Elasztikus háló
- BIC büntetési paraméter kiválasztása lasszóval a következtetéshez
- Becslések felosztása
- Keresztillesztéses részleges kiértékelés
- Dupla szelekciós becslők
- BIC büntetési paraméter lasso kezelés-hatás becsléssel
- Ábrázolja a BIC funkciót
Lássuk hogyan működik
BIC használata lasszóban az előrejelzéshez
A lasszóval használt adatkészletek általában sok változóval rendelkeznek. Az induláshoz a vl változókezelő eszközt használjuk, hogy megmentsük magunkat a sok változó nevének manuális beírásától.
. 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 | |
A vl létrehozott egy globális makrók halmazát, mindegyik változókészlettel, amelyet felhasználhatunk a becslés során. A vl megkönnyíti az életet, ha nagy mennyiségű kovariánssal van dolgod.
Ezután a splitsample segítségével osztjuk fel az adatokat edzési adatokra és tesztelési adatokra. Az edzésadatokat a lasso modellhez való illesztésre, a tesztelési adatokat pedig az illesztett modell előrejelzési teljesítményének értékelésére használják.
. set seed 12345671 . splitsample, generate(sample) nsplit(2) . label define svalues 1 "Training" 2 "Testing" . label values sample svalues
Most már készen állunk egy lasszó modell beillesztésére a BIC segítségével a büntetési paraméter kiválasztásához. Ehhez meg kell adnunk a selection(bic) opciót.
. 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 | |
A minimális BIC kritérium által kiválasztott büntetési paraméter 0,42 volt.
A beépített BIC függvénydiagramot megnézhetjük a bicplot beírásával.
. bicplot
A BIC függvény gyorsan csökken a minimum előtt λ = 0,42-nél.
A BIC használata a dsregress-ben a következtetéshez
Tegyük fel, hogy érdekel minket a levegőszennyezés (no2_class) hatása a gyermekek reakcióidejére (react), a kovariátok ellenőrzése. Abban azonban bizonytalanok vagyunk, hogy melyik kontrollváltozókat vegyük be a modellbe. A dsregress segítségével következetesen megbecsülhetjük a no2_class együtthatóját, míg a vezérlő változók kiválasztásához lasso-t használunk.
Megadjuk azt a selection(bic) opciót, amellyel a bic segítségével kiválaszthatjuk a büntetési paramétereket minden egyes lasóban, amelyet a dsregress végez. 32 globális makrót tárolunk a cc és fc globális makrókban.
. 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 | |
Látjuk, hogy a 32 kontroll közül 11 van kiválasztva. Pontértékelésünk a nitrogén-dioxid reakcióidőre gyakorolt hatására 2.3, vagyis azt várjuk, hogy a reakcióidő 2.3 milliszekundummal növekszik minden mikrogramm / köbméter nitrogén-dioxid növekedés esetén. Ez az érték statisztikailag eltér a 0-tól. A dsregress valójában két lasztót futtatott, egyet a react és egyet a no2_class-hoz. Gépeléssel ábrázolhatjuk mindkét lassos BIC funkcióját
. bicplot, for(react)
és
. bicplot, for(no2_class)
