Neu in

Lasso mit geclusterten Daten

Sie können jetzt geclusterte Daten in Ihrer Lasso-Analyse berücksichtigen. Das Ignorieren von Clustern kann bei Vorhandensein von Korrelation zwischen Beobachtungen innerhalb desselben Clusters zu falschen Ergebnissen führen. Aber mit den Lasso-Befehlen von Stata – sowohl für die Vorhersage als auch für die Inferenz – können Sie jetzt Ergebnisse erhalten, die die Clusterung berücksichtigen.
Bei Lasso-Befehlen zur Vorhersage fügen Sie einfach die Option cluster() hinzu. Geben Sie zum Beispiel

. lasso linear y x1-x5000, cluster(idcode)

um mögliche Korrelationen zwischen Beobachtungen mit demselben Idcode während der Modellauswahl zu berücksichtigen. Sie können dies mit anderen Lassomodellen als linearen, z. B. Logit oder Poisson, und mit anderen Variablenauswahlmethoden als Lasso, z. B. elastisches Netz und Quadratwurzel-Lasso, tun.
Bei Lasso-Befehlen zur Inferenz fügen Sie die Option vce(cluster) hinzu. Geben Sie zum Beispiel

. poregress y x1, controls(x2-x5000) vce(cluster idcode)

um clusterrobuste Standardfehler zu erzeugen, die Clustering in idcode unter Verwendung von Partialing-out-Lasso für lineare Ergebnisse berücksichtigen. Die Option vce(cluster) wird von allen inferentiellen Lasso-Befehlen unterstützt, einschließlich des neuen Befehls zur Schätzung von Behandlungseffekten mit Lasso.

Höhepunkte

  • Lasso-Vorhersagen mit geclusterten Daten für
    • Lasso
    • Elastisches Netz
    • Quadratwurzel-Lasso
  • Lasso-Inferenz mit geclusterten Daten für
    • Partialisierungs-Lasso-Modelle
    • Cross-Fit-Partialisierungs-Lasso-Modelle
    • Doppelauswahl-Lasso-Modelle
  • Cluster-robuste Standardfehler für
    • Partialisierungs-Out-Lasso-Modelle
    • Cross-fit Partialing-Out-Lasso-Modelle
    • Doppel-Auswahl-Lasso-Modelle
    • Behandlungseffekte-Lasso-Modelle

Zeigen Sie, wie es funktioniert

Wir wollen ein Linear-Lasso-Modell für den Logarithmus der Löhne (ln_wage) mit einer Reihe von Variablen und deren Interaktionen zweiter Ordnung anpassen. Wir haben Daten über das Alter des Individuums, Alter; Arbeitserfahrung, Erfahrung; Beschäftigungsdauer, Beschäftigungsdauer; ob das Individuum in einer ländlichen Gegend lebt, ländlich; ob es im Süden lebt, Süden; und ob es keine College-Ausbildung hat, nocollege. Wir wollen eine gute Vorhersage des Logarithmus der Löhne angesichts dieser Kontrollen.
Wir haben wiederholte Beobachtungen von Individuen über die Zeit; wir haben geclusterte Daten. Jedes Individuum wird durch einen ID-Code identifiziert.
Wir definieren das globale Makro $vars als Variablen und $controls als die vollständige Liste der Steuervariablen.

. global vars c.(age tenure experience) i.(rural south nocollege)

. global controls ($vars)##($vars)

Wir passen das Lassomodell an und geben die Option cluster(idcode) an, um das Clustering zu berücksichtigen, und wir geben die Option rseed(1234) an, um die Ergebnisse reproduzierbar zu machen.

. lasso linear ln_wage $controls, cluster(idcode) rseed(1234)

10-fold cross-validation with 100 lambdas ...
(output omitted)
... change in the deviance stopping tolerance reached ... last lambda selected


Lasso linear model                          No. of obs        =    28,093
                                            No. of covariates =        45
Cluster: idcode                             No. of clusters   =     4,699
Selection: Cross-validation                 No. of CV folds   =        10

No. of Out-of- CV mean
nonzero sample prediction
ID Description lambda coef. R-squared error
1 first lambda .2261424 0 0.0010 .2526964
81 lambda before .0001325 23 0.3088 .1748403
* 82 selected lambda .0001207 23 0.3088 .1748393
83 lambda after .00011 23 0.3088 .1748406
92 last lambda .0000476 24 0.3087 .1748552
* lambda selected by cross-validation

Es gibt 4.699 Cluster. Hinter den Kulissen zieht das Kreuzvalidierungsverfahren Stichproben nach Idcode, um das optimale Lambda zu ermitteln.
Wir könnten nun den Befehl predict verwenden, um Vorhersagen für ln_wage zu erhalten.
Angenommen, wir sind nicht nur an der Vorhersage interessiert. Angenommen, wir möchten den Effekt der Betriebszugehörigkeit (tenure) auf den Log-Lohn (ln_wage) wissen. Alle anderen Variablen werden als potenzielle Kontrollen behandelt, die Lasso einschließen oder aus dem Modell ausschließen kann. Lasso für die Inferenz ermöglicht es uns, die Schätzung des Effekts der Betriebszugehörigkeit und deren Standardfehler zu erhalten. Da Individuen über die Zeit korreliert sind, möchten wir clusterrobuste Standardfehler auf der idcode-Ebene verwenden. Wir passen ein lineares Modell mit Double-Selection-Lasso-Methoden an, indem wir den Befehl dsregress verwenden.
Zunächst definieren wir das globale Makro $vars2 als die uninteragierten Steuervariablen und interagieren mit ihnen, um den vollständigen Satz von Steuerelementen in $controls2 zu bilden.

. global vars2 c.(age experience) i.(rural south nocollege)

. global controls2 ($vars2)##($vars2)

Um das Modell anzupassen und clusterrobuste Standardfehler zu schätzen, verwenden wir dsregress und geben die Option vce(cluster idcode) an.

. dsregress ln_wage tenure, controls($controls2) vce(cluster idcode)

Estimating lasso for ln_wage using plugin
Estimating lasso for tenure using plugin

Double-selection linear model           Number of obs               =      28,093
                                        Number of controls          =          35
                                        Number of selected controls =          10
                                        Wald chi2(1)                =      195.87
                                        Prob > chi2                 =      0.0000

                                (Std. err. adjusted for 4,699 clusters in idcode)
Robust
ln_wage Coefficient std. err. z P>|z| [95% conf. interval]
tenure .0228961 .001636 14.00 0.000 .0196897 .0261025
Note: Chi-squared test is a wald test of the coefficients of the variables of interest jointly equal to zero. Lassos select controls for model estimation. Type lassoinfo to see number of selected variables in each lasso. Note: Lassos are performed accounting for clusters in idcode

Die Punktschätzung von 0,02 bedeutet, dass ein Anstieg der Betriebszugehörigkeit um ein Jahr den Logarithmus des Lohns um 0,02 erhöhen würde. Die Standardfehlerschätzung ist robust gegenüber den korrelierten Beobachtungen innerhalb des Clusters.