[ADMB Users] crappy software

mintoc at mathstat.dal.ca mintoc at mathstat.dal.ca
Wed Nov 2 08:14:55 PDT 2011


Hi Dave,

Thanks for the code and discussion.

The code:

    ...
    tau=exp(log_tau);
    dvar_matrix ch(1,2,1,2);
    ch(1,1)=1.0;
    ch(1,2)=0.0;
    ch(2,1)=rho;
    ch(2,2)=1.0;
    ch(2)/=norm(ch(2));
    ch*=tau;
    sigma=ch*trans(ch);
    ...

in 'analyzer.tpl' produces a 2X2 matrix in which the variances of both
random effects are constrained to equal tau^2. This is how the data are
generated (in 'simfun') but shouldn't we pretend we don't know this during
estimation?

Might something like (from the ADMB manual)

    ...
    dvar_matrix chQ(1,2,1,2);
    chQ.initialize();
    int ii=1;
    for (int i=1;i<=2;i++)
      for (int j=1;j<=i;j++)
        chQ(i,j)=Qcoff(ii++);
    sigma=chQ*trans(chQ);
    ...

be more comparable to 'glmer' in terms of number of parameters (3) used in
parameterizing the covariance matrix? Perhaps I am missing something and
I'm also not sure if this will make much of a difference but I wanted to
check so that the comparisons are comparable.

Thanks,
Coilin


>
> I should set up my own server at home and talk to myself.  Oh wait ...
>
> Anyway I did 250 simulation with 5 point AHGQ.  I got the same
> results as Zhang et al in that lmer did not get any better. In fact is
is arguably worse so maybe the AGHQ is a bit wonky as well.
>
> The type 1 error for rate lmer is .304. there also appears to be some
bias as the mean parameter estimate is .8977
>
> lmer      0.304 250 0.897707 0.165471 0.108108
>
>
> In contrast admb-re   has a type 1 error rate of 0.048
> very close to the theoretical value of 0.05
>   The calculated mean std dev is also almost identical to the std dev of
> the parameter estimates  i.e around 0.16
>
>
> admb-re      0.048 250 0.985706 0.165821 0.162532
>
> It would be nice if another person with obviously nothing useful to
occupy their time could verify the R stuff.  I'm not competent to do
serious R work.
>
> I won't bother you again for a while.
>
> Linux bash script to run the simulations
>
> for i in {1..250}
> do
> #  ./simulator
>   R CMD BATCH ./bolker-par.r
>    ./analyzer -mno 10000 -ams 10000000 -noinit -gh 5 -gbs 200000000 -cbs
> 100000000
>    grep "^ *4 *b" *.std >> b1
> done
>
> R script bolker-par
>
> ibrary("lme4")
> simfun <- function(n,beta=c(1,1),tau=2.0,
>                     Cor=matrix(c(1,0.25,0.25,1),nrow=2)) {
>      D <- expand.grid(id=factor(1:n),t=1:3)
>      D$x <- rnorm(3*n)  # x_{it} ~ N(0,1)
>      X <- model.matrix(~x,data=D)
>      Z <- model.matrix(~id-1+id:x,data=D)
>      b <- MASS::mvrnorm(n,mu=c(0,0),Sigma=tau^2*Cor)
>      D$Y <- rbinom(nrow(D),
>                    prob=plogis(X %*% beta + Z %*% c(b)),
>                    size=1)
>      D
> }
>    dat=simfun(500)
>    fm <- glmer(Y~ 1 + x + (1 + x|id), data=dat,family=binomial,nAGQ=5)
>     sink("r.out")
>     fm
>     sink()
>     system("grep \"^x   \"    r.out >> xvalues ",intern=TRUE)
>    sdat=dat[sort.list(dat[,1]), ]
>    n=500
>    write("#n", file = "analyzer.dat", sep = " ", append = FALSE)
write(n, file = "analyzer.dat", sep = " ", append = TRUE)
>    write("#x", file = "analyzer.dat", sep = " ", append = TRUE)
>    write(sdat$x, file = "analyzer.dat", sep = " ", append = TRUE)
write("#Y", file = "analyzer.dat", sep = " ", append = TRUE)
>    write(sdat$Y, file = "analyzer.dat", sep = " ", append = TRUE)
>
>
>
>
>
>
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
>







More information about the Users mailing list