# [R] what's wrong with my simulation programs on logistic regression

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Aug 31 16:55:40 CEST 2006

```On Thu, 31 Aug 2006, zhijie zhang wrote:

> Dear friends,
>  I'm doing a simulation on logistic regression model, but the programs can't
> My programs:
> data<-matrix(rnorm(400),ncol=8)  #sample size is 50
> data<-data.frame(data)
> names(data)<-c(paste("x",1:8,sep=""))  #8 independent variables,x1-x8;
> #logistic regression model is logit(y)=x1+x2+x3+x4+x5+x6+x7+x8

Rather it is logit(p) = ...,  and y ~ binomial(1, p)

There is a different sort of 'logistic regression' with

y = exp(eta)/(1+exp(eta)) + epsilon

but you fit that by nls, not glm.

> data\$y<-exp(data\$x1+data\$x2+data\$x3+data\$x4+data\$x5+data\$x6+data\$x7+data\$x8)/(1+(data\$x1+data\$x2+data\$x3+data\$x4+data\$x5+data\$x6+data\$x7+data\$x8))

You need exp()/(1+exp()), and the second exp is missing.

Once you have p, you can use data\$y <- rbinom(length(p), 1, p)

> logist<-glm(y~.,family=binomial(),data=simdata)
> *Warning messages:*
> 1: algorithm can't converge in: glm.fit(x = X, y = Y, weights = weights,
> start = start, etastart = etastart,
> 2: the probability is 0 or 1 in: glm.fit (x = X, y = Y, weights = weights,
> start = start, etastart = etastart,

You do not have a Bernoulli response: it often helps to look at your
simulated data to see if it makes sense (just as you would look at real
data, I hope).

--
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

```