[R] Probit regression with limited parameter space

Ben Bolker bbolker at gmail.com
Wed Feb 1 14:19:03 CET 2012

Sally Luo <shali623 <at> gmail.com> writes:

> Dear R helpers,
> I need to estimate a probit model with box constraints placed on several of
> the model parameters.  I have the following two questions:
> 1) How are the standard errors calclulated in glm
> (family=binomial(link="probit")?  I ran a typical probit model using the
> glm probit link and the nlminb function with my own coding of the
> loglikehood, separately. As nlminb does not produce the hessian matrix, I
> used hessian (numDeriv) to calculate it.  However, the standard errors
> calculated using hessian function are quite different from the ones
> generated by the glm function, although the parameter estimates are very
> close.  I was wondering what makes this difference in the estmation of
> standard errors and how this computation is carried out in glm.
> 2) Does any one know how to estimate a constrained probit model in R (to be
> specific, I need to restrain the range of three parameters to [-1,1])?
> Among the optimation functions, so far nlminb and spg work for my problem,
> but neither produces a hessian matrix.  As I mentioned above, if I use
> hessian funciton and calculate standard errors manually, the standard
> errors seem not right.

   I'm a little biased, but I think the bbmle package is the
easiest way to get this done -- it provides convenient wrappers
for a range of optimizers including nlminb.
   I would warn however that you should be very careful interpreting
the meaning of the Hessian matrix if some of your parameters lie
on the boundary of the feasible space ...

x <- runif(100)
p <- pnorm(1+3*x)
y <- rbinom(100,p,size=1)
d <- data.frame(x,y)
glmfit <- glm(y~x,family=binomial(link="probit"),data=d)

mle2fit <- mle2(y~dbinom(pnorm(pprobit),size=1),

## now add constraints
mle2fit_constr <- mle2(y~dbinom(pnorm(pprobit),size=1),


More information about the R-help mailing list