# [R] logistic regression using "glm",which "y" is set to be "1"

Marc Schwartz marc_schwartz at comcast.net
Thu Dec 6 19:11:53 CET 2007

```On Wed, 2007-12-05 at 22:33 -0800, Bin Yue wrote:
> Dear all:
>      By comparing glmresult\$y and model.response(model.frame(glmresult)),  I
> have found out which one is
> set to be "TRUE" and which "FALSE".But it seems that to fit a logistic
> regression , logit (or logistic) transformation has to be done before
> regression.
>      Does anybody know how to obtain the transformation result ? It is hard
> to settle down before knowing the actual process R works . I have read some
> books and the "?glm" help file , but what they told me was not sufficient.
>    Best wishes ,
>  Bin Yue

Bin,

You have presumably created a logistic regression model. The resultant
model object is called 'glmresult'.

If you use:

fitted(glmresult)

it will return the fitted predicted values on a probability scale (0 -
1) for the original set of data that you used.

You can also use:

predict(glmresult, type = "response")

The advantage of using predict.glm() is that you can apply the model
against new data.

If you want the linear predicted values on a log-odds scale, you can
use:

glmresult\$linear.predictors

or more easily:

predict(glmresult)

Let's use an example from ?infert:

model1 <- glm(case ~ spontaneous+induced, data=infert,family=binomial())

# Summary of fitted values on a probability scale
> summary(fitted(model1))
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.1534  0.1534  0.2949  0.3347  0.3750  0.7511

# Same
> summary(predict(model1, type = "response"))
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.1534  0.1534  0.2949  0.3347  0.3750  0.7511

# Get log-odds scale values
> summary(model1\$linear.predictors)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
-1.7080 -1.7080 -0.8716 -0.7781 -0.5107  1.1050

# Same
> summary(predict(model1))
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
-1.7080 -1.7080 -0.8716 -0.7781 -0.5107  1.1050

If we wanted to do the log-odds scale to probability scale transform
manually, we could do:

> summary(exp(predict(model1)) / (1 + exp(predict(model1))))
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.1534  0.1534  0.2949  0.3347  0.3750  0.7511

Look familiar?

I would urge you to read through An Introduction To R, which is
available with your R installation or via the R web site under
Documentation. In addition, there are various books listed on the R web
site regarding model building and related subject matter. Which you
choose can be a matter of taste, but two I recommend would be:

William N. Venables and Brian D. Ripley. Modern Applied Statistics with
S. Fourth Edition. Springer, New York, 2002. ISBN 0-387-95457-0

Frank E. Harrell. Regression Modeling Strategies, with Applications to
Linear Models, Survival Analysis and Logistic Regression. Springer,
2001. ISBN 0-387-95232-2

HTH,

Marc Schwartz

```