I should heed my own words: the 1% effect based on the marginal effect would be
0.01* ABS(X) * margeff I omitted the abs(x) in the last paragraph of my last email. Based on the marginal effect, the expected change in probability would be 0.01*0.69*0.02, which is 0.00138. This is not all too far away from the 0.00126 change based on direct predictions of the regression model that assume a one-percent increase in x for each x. Daniel Daniel Malter wrote: > > Yes, it is the marginal effect. The marginal effect (dy/dx) is the slope > of > the gradient at x. It is thus NOT for a 1 unit increase in x, but for a > marginal change in x. Remember that, for nonlinear functions, the marginal > effect is more accurate in predicting a change in y the smaller (!) the > change of x is. Since you are interested in a 1% change, 1% is probably > justifiable as being a small change. Thus, if you increase x by 1%, the > change in y should be approximately 0.01*abs(x)*margeff. This assumes that > the linear extrapolation done with a marginal effect is reasonably > accurate > for a prediction of y at x+delta(x). > > You could also compute the effect at a 1% increase in x directly (see code > below). Predict the regression, but substitue x by z=x+0.01*abs(x). This > gives you the predicted odds (predict.1percent) at z (which is one percent > greater than x). From the odds, you can easily compute the probabilities > (probs). Then subtract the fitted probabilities at x from the predicted > probabilities at z, which gives you the difference in probability. In the > example I sent you, this gives a change in probability of 0.001255946. > This > is already much smaller than the marginal effect that would be estimated > at > around 0.002 for a 1 percent change in x (0.2*0.01=0.002), which already > indicates the declining accuracy of the marginal effect as the distance > from > x increases. > > z=x+0.01*abs(x) > predict.1percent=predict(reg,list(x=z)) > probs=exp(predict.1percent)/(1+exp(predict.1percent)) > mean(probs-fitted(reg)) > > HTH, > Daniel > > > ------------------------- > cuncta stricte discussurus > ------------------------- > > -----Ursprüngliche Nachricht----- > Von: Roberto Patuelli [mailto:roberto.patue...@usi.ch] > Gesendet: Monday, November 09, 2009 1:54 PM > An: Daniel Malter; r-help@r-project.org > Betreff: Re: [R] Percentage effects in logistic regression > > Dear Daniel, > > Thanks for your prompt reply. > Indeed I was aware of the possibility of computing at mean(x) or doing the > mean afterwards. > But what you suggest is marginal effects, right? Isn't that the effect on > y > of a 1-unit increase in x (what I was not interested in)? I'm interested > in > the effect on y of a 1% increase in x (called percentage effects, right?). > > Could you please clarify? > > Thanks > Roberto > > > ----- Original Message ----- > From: "Daniel Malter" <dan...@umd.edu> > To: "Patuelli Roberto" <roberto.patue...@usi.ch>; <r-help@r-project.org> > Sent: Monday, November 09, 2009 7:44 PM > Subject: AW: [R] Percentage effects in logistic regression > > > Somebody might have done this, but in fact it's not difficult to compute > the > marginal effects yourself (which is the beauty of R). For a univariate > logistic regression, I illustrate two ways to compute the marginal effects > (one corresponds to the mfx, the other one to the margeff command in > Stata). > With the first you compute the marginal effect based on the mean fitted > values; with the second you compute the marginal effect based on the > fitted > values for each observation and then mean over the individual marginal > effects. Often the second way is considered better. You can easily extend > the R-code below to a multivariate regression. > > ##### > #####Simulate data and run regression > ##### > > set.seed(343) > x=rnorm(100,0,1) #linear predictor > lp=exp(x)/(1+exp(x)) #probability > y=rbinom(100,1,lp) #Bernoulli draws with probability lp > > #Run logistic regression > reg=glm(y~x,binomial) > summary(reg) > > ##### > #####Regression output > ##### > > Coefficients: > Estimate Std. Error z value Pr(>|z|) > (Intercept) 0.1921 0.2175 0.883 0.377133 > x 0.9442 0.2824 3.343 0.000829 *** > --- > Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 > > (Dispersion parameter for binomial family taken to be 1) > > Null deviance: 138.47 on 99 degrees of freedom > Residual deviance: 125.01 on 98 degrees of freedom > AIC: 129.01 > > ##### > #####Compute marginal effects > ##### > > #Way 1 > mean(fitted(reg))*mean(1-fitted(reg))*coefficients(reg)[2] > > 0.2356697 > > #Way 2 > mean(fitted(reg)*(1-fitted(reg))*coefficients(reg)[2]) > > 0.2057041 > > > ##### > #####Check with Stata > ##### > > Logistic regression Number of obs = > 100 > LR chi2(1) = > 13.46 > Prob > chi2 = > 0.0002 > Log likelihood = -62.506426 Pseudo R2 = > 0.0972 > > ---------------------------------------------------------------------------- > -- > y | Coef. Std. Err. z P>|z| [95% Conf. > Interval] > -------------+-------------------------------------------------------------- > -- > x | .9441896 .2824403 3.34 0.001 .3906167 > 1.497762 > _cons | .1920529 .2174531 0.88 0.377 -.2341474 > .6182532 > ---------------------------------------------------------------------------- > -- > > ##### > #####Compute marginal effects in Stata > ##### > > #Way 1 > Marginal effects after logit > y = Pr(y) (predict) > = .52354297 > ---------------------------------------------------------------------------- > -- > variable | dy/dx Std. Err. z P>|z| [ 95% C.I. ] > X > ---------+------------------------------------------------------------------ > -- > x | .2355241 .07041 3.35 0.001 .097532 .373516 > -.103593 > ---------------------------------------------------------------------------- > -- > > #Way 2 > Average marginal effects on Prob(y==1) after logit > > ---------------------------------------------------------------------------- > -- > y | Coef. Std. Err. z P>|z| [95% Conf. > Interval] > -------------+-------------------------------------------------------------- > -- > x | .2057041 .0473328 4.35 0.000 .1129334 > .2984747 > ---------------------------------------------------------------------------- > -- > > > HTH, > Daniel > > > > ------------------------- > cuncta stricte discussurus > ------------------------- > > -----Ursprüngliche Nachricht----- > Von: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] Im > Auftrag von Roberto Patuelli > Gesendet: Monday, November 09, 2009 12:04 PM > An: r-help@r-project.org > Betreff: [R] Percentage effects in logistic regression > > Dear ALL, > > I'm trying to figure out what the percentage effects are in a logistic > regression. To be more clear, I'm not interested in the effect on y of a > 1-unit increase in x, but on the percentage effect on y of a 1% increase > in > x (in economics this is also often called an "elasticity"). > For example, if my independent variables are in logs, the betas can be > directly interpreted as percentage effects both in OLS and Poisson > regression. What about the logistic regression? > > Is there a package (maybe effects?) that can compute these automatically? > > Thanks and best regards, > Roberto Patuelli > > > > ******************** > Roberto Patuelli, Ph.D. > Istituto Ricerche Economiche (IRE) (Institute for Economic Research) > Università della Svizzera Italiana (University of Lugano) via Maderno 24, > CP > 4361 > CH-6904 Lugano > Switzerland > Phone: +41-(0)58-666-4166 > Fax: +39-02-700419665 > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > -- View this message in context: http://old.nabble.com/Percentage-effects-in-logistic-regression-tp26269906p26272862.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.