screen - Christophe Lalanne
Transcription
screen - Christophe Lalanne
Découverte du logiciel Stata Modélisation Christophe Lalanne www.aliquote.org Synopsis Régression linéaire simple Régression linéaire sur variables catégorielles Régression linéaire multiple Régression logistique d2e5ca9 2 / 47 Régression linéaire simple d2e5ca9 3 / 47 Données d’illustration Étude sur les poids de naisssance (1) . low age lwt race smoke ht ui ftv ptl bwt d2e5ca9 poids de naissance < 2,5 kg âge de la mère poids de la mère (livres) aux dernières règles ethnicité de la mère (« w », « b », « o ») statut fumeur de la mère pendant la grossesse antécédent d’hypertension présence d’irritabilité utérine nb de visites chez le gynécologue 1er trimestre nb d’accouchements pré terme antérieurs poids du bébé (grammes) 4 / 47 . webuse lbw (Hosmer & Lemeshow data) . list in 1/5 1. 2. 3. 4. 5. +-----------------------------------------------------------------------+ | id low age lwt race smoke ptl ht ui ftv bwt | |-----------------------------------------------------------------------| | 85 0 19 182 black nonsmoker 0 0 1 0 2523 | | 86 0 33 155 other nonsmoker 0 0 0 3 2551 | | 87 0 20 105 white smoker 0 0 0 1 2557 | | 88 0 21 108 white smoker 0 0 1 2 2594 | | 89 0 18 107 white smoker 0 0 1 0 2600 | +-----------------------------------------------------------------------+ . summarize bwt lwt Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------bwt | 189 2944.286 729.016 709 4990 lwt | 189 129.8201 30.57515 80 250 d2e5ca9 5 / 47 Caractériser la relation entre deux variables Considérons la relation entre le poids de naissance (bwt) et le poids de la mère (lwt). . replace lwt = lwt/2.2 lwt was int now float (189 real changes made) . scatter bwt lwt || lowess bwt lwt 5000 4000 3000 2000 birthweight (grams) lowess bwt lwt 1000 40 60 80 100 120 weight at last menstrual period d2e5ca9 6 / 47 Corrélation linéaire La commande correlate fournit le coefficient de corrélation de Pearson. Pour une alternative non-paramétrique, voir spearman (coefficient de corrélation basé sur les rangs). . correlate bwt lwt, means (obs=189) Variable | Mean Std. Dev. Min Max -------------+---------------------------------------------------bwt | 2944.286 729.016 709 4990 lwt | 59.00914 13.8978 36.36364 113.6364 | bwt lwt -------------+-----------------bwt | 1.0000 lwt | 0.1858 1.0000 d2e5ca9 7 / 47 Le modèle de régression linéaire simple La commande regress permet d’estimer les paramètres d’un modèle de régression linéaire simple ou multiple. . regress bwt lwt Source | SS df MS -------------+-----------------------------Model | 3449063.41 1 3449063.41 Residual | 96466235.2 187 515862.22 -------------+-----------------------------Total | 99915298.6 188 531464.354 Number of obs F( 1, 187) Prob > F R-squared Adj R-squared Root MSE = 189 = 6.69 = 0.0105 = 0.0345 = 0.0294 = 718.24 -----------------------------------------------------------------------------bwt | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------lwt | 9.745985 3.769138 2.59 0.010 2.31049 17.18148 _cons | 2369.184 228.4671 10.37 0.000 1918.479 2819.888 ------------------------------------------------------------------------------ regress [depvar] [indepvars] [if] [in] [weight] [ , options] d2e5ca9 8 / 47 Statistics . Linear models and related . Linear regression d2e5ca9 9 / 47 Droite de régression linéaire Pour superposer la droite de régression sur le diagramme de dispersion, on utilise la commande lfit (au lieu de lowess) : . scatter bwt lwt || lfit bwt lwt 5000 4000 3000 2000 birthweight (grams) Fitted values 1000 40 60 80 100 120 weight at last menstrual period d2e5ca9 10 / 47 Coefficients de régression Si l’on tape regress bwt lwt, noheader coeflegend, on peut vérifier comment sont nommés les coefficients de régression par Stata. . display _b[lwt] 9.7459851 Les valeurs retournées par Stata sont appelées valeurs de postestimation et on peut voir l’ensemble des valeurs stockées à l’aide de ereturn list. . di "Coefficient de détermination = " %3.2f e(r2)*100 " %" Coefficient de détermination = 3.45 % d2e5ca9 11 / 47 Prédictions à partir du modèle de régression La commande predict permet d’obtenir à la fois les valeurs prédites (ou ajustées) et les résidus du modèle de régression. Calcul des valeurs ajustées (xb = prédicteur linéaire) : . predict double p, xb . list lwt bwt p in 1/5 1. 2. 3. 4. 5. d2e5ca9 +----------------------------+ | lwt bwt p | |----------------------------| | 82.7273 2523 3175.4423 | | 70.4545 2551 3055.8325 | | 47.7273 2557 2834.3328 | | 49.0909 2594 2847.6228 | | 48.6364 2600 2843.1928 | +----------------------------+ 12 / 47 . . . . . predict sep, generate lci generate uci format p lci list lwt bwt 1. 2. 3. 4. 5. d2e5ca9 stdp = p - 1.96*sep = p + 1.96*sep uci %4.1f lci p uci in 1/5 +-------------------------------------------+ | lwt bwt lci p uci | |-------------------------------------------| | 82.7273 2523 2972.5 3175.4 3378.4 | | 70.4545 2551 2923.0 3055.8 3188.6 | | 47.7273 2557 2702.3 2834.3 2966.4 | | 49.0909 2594 2721.7 2847.6 2973.5 | | 48.6364 2600 2715.3 2843.2 2971.1 | +-------------------------------------------+ 13 / 47 Prédictions à partir du modèle de régression Au lieu de lfit, on peut utiliser lfitci pour afficher directement la droite de régression et un intervalle de confiance à 95 %. . scatter bwt lwt, msymbol(+) msize(small) || lfitci bwt lwt 5000 4000 3000 2000 birthweight (grams) 95% CI Fitted values 1000 40 60 80 100 120 weight at last menstrual period d2e5ca9 14 / 47 Qualité d’ajustement du modèle Statistics . Linear models and related . Regression diagnostics Postestimation . Reports and statistics . estat ic Akaike's information criterion and Bayesian information criterion ----------------------------------------------------------------------------Model | Obs ll(null) ll(model) df AIC BIC -------------+--------------------------------------------------------------. | 189 -1513.509 -1510.189 2 3024.378 3030.861 ----------------------------------------------------------------------------Note: N=Obs used in calculating BIC; see [R] BIC note d2e5ca9 15 / 47 Autre commande de post-estimation : fitstat (2) . . search fitstat . fitstat Measures of Fit for regress of bwt Log-Lik Intercept Only: D(187): R2: AIC: BIC: -1513.509 3020.378 0.035 16.002 2040.171 Log-Lik Full Model: LR(1): Prob > LR: Adjusted R2: AIC*n: BIC': -1510.189 6.640 0.010 0.029 3024.378 -1.398 Voir aussi SPost13, http://www.indiana.edu/~jslsoc/spost13.htm. d2e5ca9 16 / 47 Analyse des résidus du modèle Calcul des résidus (écart entre les valeurs observées et les valeurs prédites) : . . . . predict double r, rstandard predict double rs, rstudent format r rs %9.5f summarize r rs, format Variable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------r | 189 -0.00044 1.00210 -3.06057 2.89838 rs | 189 -0.00107 1.00806 -3.13182 2.95782 d2e5ca9 17 / 47 Distribution des résidus Pour visualiser la distribution des résidus, il est possible d’utiliser un histogramme ou une courbe de densité : . kdensity r Kernel density estimate .4 Density .3 .2 .1 0 −4 −2 0 2 4 Standardized residuals kernel = epanechnikov, bandwidth = 0.3161 d2e5ca9 18 / 47 Résidus en fonction des valeurs prédites Statistics . Linear models and related . Regression diagnostic . twoway ( scatter r p ) ( lowess r p ) , /// yline (0 , lcolor ( black ) lpattern ( dash )) /// ylabel (, format (%5.1 f )) legend ( off )) 4.0 2.0 0.0 −2.0 −4.0 2800.0 3000.0 3200.0 3400.0 3600.0 Linear prediction d2e5ca9 19 / 47 Régression linéaire sur variables catégorielles d2e5ca9 20 / 47 Codage des variables catégorielles À la différence du modèle d’ANOVA (oneway et anova), il est nécessaire d’indiquer à Stata comment doivent être traitées les variables catégorielles. On recourt à un codage sous forme d’indicatrices des k − 1 niveaux de la variable : le premier niveau sert de catégorie de référence (sauf à modifier celle-ci à l’aide de l’opérateur ib.). On préfixe alors le nom de la variable par l’opérateur i. (sous les anciennes versions de Stata, on utilisait le préfixe xi:). d2e5ca9 21 / 47 Considérons la variable race, qui est une variable catégorielle à 3 niveaux : . tabulate race race | Freq. Percent Cum. ------------+----------------------------------white | 96 50.79 50.79 black | 26 13.76 64.55 other | 67 35.45 100.00 ------------+----------------------------------Total | 189 100.00 . tabulate race, nolabel race | Freq. Percent Cum. ------------+----------------------------------1 | 96 50.79 50.79 2 | 26 13.76 64.55 3 | 67 35.45 100.00 ------------+----------------------------------Total | 189 100.00 Une commande telle que tabulate race, gen(irace) permettrait de générer 3 indicatrices codant pour chacun des niveaux de la variable race. d2e5ca9 22 / 47 Régression sur variable catégorielle La syntaxe du modèle de régression est identique au cas précédent : . regress bwt i.race, noheader -----------------------------------------------------------------------------bwt | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------race | black | -383.3181 157.8914 -2.43 0.016 -694.8064 -71.82985 other | -298.9955 113.6899 -2.63 0.009 -523.2829 -74.70811 | _cons | 3103.01 72.88956 42.57 0.000 2959.214 3246.807 ------------------------------------------------------------------------------ Le 1er niveau sert de niveau (ou catégorie) de référence. d2e5ca9 23 / 47 Changement de catégorie de référence L’opérateur ib. permet de modifier le niveau de référence d’une variable catégorielle explicative : . regress bwt ib3.race, noheader -----------------------------------------------------------------------------bwt | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------race | white | 298.9955 113.6899 2.63 0.009 74.70811 523.2829 black | -84.32262 165.0131 -0.51 0.610 -409.8604 241.2152 | _cons | 2804.015 87.24962 32.14 0.000 2631.889 2976.141 ------------------------------------------------------------------------------ Attention, la numérotation des niveaux commence à 1, quel que soit les valeurs des codes numériques de la variable. d2e5ca9 24 / 47 Régression linéaire multiple d2e5ca9 25 / 47 Représentation des modèles de régression La notation Stata pour les modèles linéaires est relativement simple : les variables explicatives suivent la variable réponse et se présentent sous forme d’une liste. Les interactions entre deux variables sont notées x1#x2 ou x1##x2 (interaction entre facteurs). Voir l’aide en ligne : help varlist (opérateurs spécifiques pour séries chronologiques) et help fvvarlist. d2e5ca9 26 / 47 Régression linéaire multiple Le modèle de régression initial s’écrivait regress bwt lwt : . quietly: regress bwt lwt . estimates store mod1 La commande estimates est une commande de « post estimation » (i.e., qui opère sur les derniers résultats estimés à partir d’un modèle). Ici, estimates store permet d’enregistrer en mémoire les résultats des estimations concernant le dernier modèle de régression. d2e5ca9 27 / 47 Ajoutons la variable race au modèle : . regress bwt lwt i.race, noheader -----------------------------------------------------------------------------bwt | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------lwt | 10.25027 3.848976 2.66 0.008 2.656736 17.84379 | race | black | -452.0676 157.4976 -2.87 0.005 -762.7899 -141.3453 other | -242.9814 113.8326 -2.13 0.034 -467.5583 -18.40447 | _cons | 2487.752 241.9072 10.28 0.000 2010.5 2965.003 ------------------------------------------------------------------------------ d2e5ca9 28 / 47 Résumé de plusieurs modèles Statistics . Postestimation . Manage estimation results . estimates store mod2 . estimates table mod1 mod2 ---------------------------------------Variable | mod1 mod2 -------------+-------------------------lwt | 9.7459851 10.250265 | race | black | -452.06761 other | -242.98137 | _cons | 2369.1835 2487.7518 ---------------------------------------Le package estout (http://repec.org/bocode/e/estout/) facilite l’affichage et la sauvegarde des résultats de modèles de régression. Par exemple : esttab mod1 mod2 using « resultats.rtf », r2. d2e5ca9 29 / 47 Autre illustration La variable ftv est une variable de comptage que l’on peut éventuellement recoder en variable catégorielle . tabulate ftv number of | visits to | physician | during 1st | trimester | Freq. Percent Cum. ------------+----------------------------------0 | 100 52.91 52.91 1 | 47 24.87 77.78 2 | 30 15.87 93.65 3 | 7 3.70 97.35 4 | 4 2.12 99.47 6 | 1 0.53 100.00 ------------+----------------------------------Total | 189 100.00 . recode ftv (0 = 0) (1 = 1) (2/6 = 2), gen(ftvc) (12 differences between ftv and ftvc) d2e5ca9 30 / 47 . regress bwt lwt i.race i.ftvc, notable Source | SS df MS -------------+-----------------------------Model | 9880733.7 5 1976146.74 Residual | 90034564.9 183 491992.158 -------------+-----------------------------Total | 99915298.6 188 531464.354 Number of obs F( 5, 183) Prob > F R-squared Adj R-squared Root MSE = 189 = 4.02 = 0.0018 = 0.0989 = 0.0743 = 701.42 . estimates store mod3 . estimates stats * Akaike's information criterion and Bayesian information criterion ----------------------------------------------------------------------------Model | Obs ll(null) ll(model) df AIC BIC -------------+--------------------------------------------------------------mod1 | 189 -1513.509 -1510.189 2 3024.378 3030.861 mod2 | 189 -1513.509 -1505.054 4 3018.108 3031.075 mod3 | 189 -1513.509 -1503.668 6 3019.337 3038.787 ----------------------------------------------------------------------------Note: N=Obs used in calculating BIC; see [R] BIC note d2e5ca9 31 / 47 Cas des modèles emboîtés Un test du rapport de vraisemblance peut être réalisé pour comparer l’apport d’information d’un modèle plus complexe par rapport à un modèle de base. . lrtest (mod1) (mod2), stats Likelihood-ratio test (Assumption: mod1 nested in mod2) LR chi2(2) = Prob > chi2 = 10.27 0.0059 Akaike's information criterion and Bayesian information criterion ----------------------------------------------------------------------------Model | Obs ll(null) ll(model) df AIC BIC -------------+--------------------------------------------------------------mod1 | 189 -1513.509 -1510.189 2 3024.378 3030.861 mod2 | 189 -1513.509 -1505.054 4 3018.108 3031.075 ----------------------------------------------------------------------------Note: N=Obs used in calculating BIC; see [R] BIC note d2e5ca9 32 / 47 Régression logistique d2e5ca9 33 / 47 Cas des données individuelles ou groupées Statistics . Binary outcomes Stata dispose de commandes différentes selon que l’on travaille sur des données individuelles (logistic et logit) ou groupées (blogit). La démarche de modélisation est identique à celle vue dans le cas de la régression linéaire. La régression logistique utilise par défaut le lien « logit », mais il est possible de travailler sur une échelle de lien « probit » à l’aide de la commande probit. d2e5ca9 34 / 47 Rappels sur l’odds-ratio Statistics . Epidemiology and related . Tables for epidemiologists . Ratio of odds of failure for two categories Outre la commande tabodds, Stata offre la commande mhodds : . mhodds low smoke Maximum likelihood estimate of the odds ratio Comparing smoke==1 vs. smoke==0 ---------------------------------------------------------------Odds Ratio chi2(1) P>chi2 [95% Conf. Interval] ---------------------------------------------------------------2.021944 4.90 0.0269 1.069897 3.821169 ---------------------------------------------------------------- d2e5ca9 35 / 47 Odds-ratio et stratification Considérons 3 groupes d’âge pour les mères et réalisons un test de Maentel-Haenszel pour obtenir une estimation de l’oddsratio en contrôlant pour le facteur âge. . xtile age3 = age, nq(3) . table low smoke age3 ------------------------------------------------------------------------------birthwei | 3 quantiles of age and smoked during pregnancy ght<2500 | --------- 1 ---------------- 2 ---------------- 3 -------g | nonsmoker smoker nonsmoker smoker nonsmoker smoker ---------+--------------------------------------------------------------------0 | 27 19 33 10 26 15 1 | 11 12 13 10 5 8 ------------------------------------------------------------------------------- d2e5ca9 36 / 47 . mhodds low smoke, by(age3) Maximum likelihood estimate of the odds ratio Comparing smoke==1 vs. smoke==0 by age3 ------------------------------------------------------------------------------age3 | Odds Ratio chi2(1) P>chi2 [95% Conf. Interval] ----------+-------------------------------------------------------------------1 | 1.550239 0.72 0.3956 0.55919 4.29774 2 | 2.538462 2.86 0.0909 0.82860 7.77674 3 | 2.773333 2.47 0.1163 0.73437 10.47341 ------------------------------------------------------------------------------Mantel-Haenszel estimate controlling for age3 ---------------------------------------------------------------Odds Ratio chi2(1) P>chi2 [95% Conf. Interval] ---------------------------------------------------------------2.120916 5.38 0.0203 1.107041 4.063342 ---------------------------------------------------------------Test of homogeneity of ORs (approx): chi2(2) Pr>chi2 = = 0.62 0.7325 Le test de Mantel-Haenszel s’obtient également à l’aide de la commande cc : cc low smoke, by(age3). d2e5ca9 37 / 47 Le modèle de régression logistique Statistics . Binary outcomes . Logistic regression (reporting odds ratios) Considérons le même modèle que dans le cadre linéaire : poids des bébés (low) en fonction du poids de la mère (lwt). . logistic low lwt Logistic regression Log likelihood = -114.35403 Number of obs LR chi2(1) Prob > chi2 Pseudo R2 = = = = 189 5.96 0.0146 0.0254 -----------------------------------------------------------------------------low | Odds Ratio Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------lwt | .9695903 .0131581 -2.28 0.023 .9441409 .9957257 _cons | 2.706788 2.125487 1.27 0.205 .5808364 12.61405 -----------------------------------------------------------------------------La valeur de pseudo R2 reportée par Stata correspond au coefficient de McFadden (3) . d2e5ca9 38 / 47 Qualité d’ajustement du modèle Utilisation de la commande de post-estimation fitstat (2) , au lieu des commandes par défaut estat. . fitstat Measures of Fit for logistic of low Log-Lik Intercept Only: D(187): -117.336 228.708 McFadden's R2: 0.025 Maximum Likelihood R2: 0.031 McKelvey and Zavoina's R2: 0.053 Variance of y*: 3.474 Count R2: 0.688 AIC: 1.231 BIC: -751.499 d2e5ca9 Log-Lik Full Model: LR(1): Prob > LR: McFadden's Adj R2: Cragg & Uhler's R2: Efron's R2: Variance of error: Adj Count R2: AIC*n: BIC': -114.354 5.964 0.015 0.008 0.044 0.031 3.290 0.000 232.708 -0.722 39 / 47 Alternative à logistic Il est possible d’utiliser logit mais dans ce cas les résultats sont exprimés sur l’échelle du log-odds, à moins de spécifier l’option or : . logit low ui, nolog Logistic regression Log likelihood = -114.79795 Number of obs LR chi2(1) Prob > chi2 Pseudo R2 = = = = 189 5.08 0.0243 0.0216 -----------------------------------------------------------------------------low | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------ui | .9469277 .4167734 2.27 0.023 .1300669 1.763789 _cons | -.9469277 .1756215 -5.39 0.000 -1.29114 -.6027159 ------------------------------------------------------------------------------ . display exp(_b[ui]) 2.5777778 d2e5ca9 40 / 47 Performances diagnostiques En post-estimation, il est possible d’obtenir un tableau de contingence des prédictions (Pr(Y = 1) ≥ 0.5) et des valeurs observées. . estat classification Logistic model for low -------- True -------Classified | D ~D | Total -----------+--------------------------+----------+ | 14 14 | 28 | 45 116 | 161 -----------+--------------------------+----------Total | 59 130 | 189 Classified + if predicted Pr(D) >= .5 True D defined as low != 0 -------------------------------------------------Sensitivity Pr( +| D) 23.73% Specificity Pr( -|~D) 89.23% Positive predictive value Pr( D| +) 50.00% Negative predictive value Pr(~D| -) 72.05% -------------------------------------------------d2e5ca9 41 / 47 Courbe ROC Statistics . Binary outcomes . Postestimation . ROC curve after logistic/logit/probit/ivprobit La courbe ROC est obtenue en post-estimation également à l’aide de lroc : . quietly: logit low lwt . lroc Logistic model for low number of observations = area under ROC curve = 189 0.6130 1.00 Sensitivity 0.75 0.50 0.25 0.00 0.00 0.25 0.50 0.75 1.00 1 − Specificity d2e5ca9 Area under ROC curve = 0.6130 42 / 47 Prédictions ponctuelles et par IC La commande predict s’utilise pour calculer les valeurs ajustées pour un modèle donné ou pour estimer les valeurs de probabilité ou de log-odds pour de nouvelles observations : il s’agit d’une commande de post-estimation, et elle s’utilisera donc après avoir construit un modèle de régression avec logit ou logistic. Si l’on souhaite obtenir les probabilités prédites, on utilisera l’option p : . quietly: logit low lwt . predict pr, p d2e5ca9 43 / 47 On peut toujours calculer les IC à 95 % manuellement comme suit (en travaillant sur l’échelle du log-odds, par exemple) : . . . . . predict lo, xb predict lose, stdp generate lolci = lo - 1.96*lose generate louci = lo + 1.96*lose list low lolci lo louci in 1/5 1. 2. 3. 4. 5. d2e5ca9 +-----------------------------------------+ | low lolci lo louci | |-----------------------------------------| | 0 -2.319452 -1.558992 -.7985321 | | 0 -1.661833 -1.17999 -.6981474 | | 0 -.8705271 -.4781343 -.0857414 | | 0 -.891801 -.5202456 -.1486902 | | 0 -.8844509 -.5062085 -.1279662 | +-----------------------------------------+ 44 / 47 1 0 −1 −2 −3 −4 35 50 65 80 lwt Linear prediction (log odds) d2e5ca9 95 110 125 lolci/louci 45 / 47 Références I 1. D Hosmer and S Lemeshow. Applied Logistic Regression. New York : Wiley, 1989. 2. JS Long. Regression Models for Categorical Dependent Variables Using Stata. College Station : Stata Press, 2014. 3. EW Steyerberg, AJ Vickers, NR Cook, T Gerds, M Gonen, N Obuchowski, MJ Pencina, and MW Kattan. Assessing the performance of prediction models, a framework for traditional and novel measures. Epidemiology, 21(1) :128–138, 2010. d2e5ca9 46 / 47 Index des commandes correlate, 7 display, 11, 40 e(), 11 estat, 15, 41 estimates stats, 31 estimates store, 27, 29, 31 estimates table, 29 esttab, 29 exp, 40 findit, 16 fitstat, 16, 39 format, 17 d2e5ca9 generate, 13, 44 kdensity, 18 lfit, 10 lfitci, 14 list, 12, 13 logistic, 38 logit, 40, 43 lowess, 6, 19 lroc, 42 lrtest, 32 mhodds, 35, 37 predict, 12, 13, 17, 43, 44 probit, 34 quietly, 27, 43 recode, 30 regress, 8, 23, 24, 27, 28, 31 replace, 6 scatter, 6, 10, 14, 19 summarize, 17 table, 36 tabulate, 22, 28, 30 twoway, 19 webuse, 27 xtile, 36 47 / 47
Documents pareils
screen - Christophe Lalanne
À l’instar de webuse et sysuse, on peut utiliser use pour lire des
données au format Stata (extension dta). La commande cd permet de modifier le répertoire de travail courant. Notons qu’il
est égal...