Unfortunately tightening up the convergence criteria didn't solve the problem, see below.
I also tried the fudge of replacing the ten y values of 0 with a small positive value to see what effect it had. The smallest non zero value of y is 0.001364. Replacing 0 with 0.001 gives an anova without negative deviances, replacing 0 with 0.00001 causes problems again (although in a different place in the table), see below for anyone who's interested.
Any solutions? Anyone from MathSoft got an explanation?
Cheers, David.
d.l.maxwell@cefas.co.uk
######################
> sp3.glm <- glm(y~log(x)+dose.val+factor(dose.val), family=Gamma(link=log),data=sp.dat,maxit=20,epsilon=1e-8,trace=T)
GLM linear loop 1: deviance = 144.3042
...
GLM linear loop 16: deviance = 74.2373
> anova(sp3.glm)
Analysis of Deviance Table
Gamma model
Response: y
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev
NULL 72 137.4406
log(x) 1 8.28890 71 129.1517
dose.val 1 55.10674 70 74.0449
factor(dose.val) 2 -0.19241 68 74.2373
###############
sp.001<-sp.dat
sp.001$y[sp.001$y==0]<-0.001
sp4.glm <- glm(y~log(x)+dose.val+factor(dose.val), family=Gamma(link=log),data=sp.001,maxit=20,epsilon=1e-8,trace=T)
GLM linear loop 1: deviance = 395.5469
..
GLM linear loop 13: deviance = 185.3129
> anova(sp4.glm)
Analysis of Deviance Table
Gamma model
Response: y
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev
NULL 72 270.2704
log(x) 1 11.32972 71 258.9407
dose.val 1 72.52934 70 186.4114
factor(dose.val) 2 1.09843 68 185.3129
##############
sp.00001<-sp.dat
sp.00001$y[sp.00001$y==0]<-0.00001
> sp5.glm <- glm(y~log(x)+dose.val+factor(dose.val), family=Gamma(link=log),data=sp.00001,maxit=25,epsilon=1e-8,trace=T)
GLM linear loop 1: deviance = 1000.557
....
GLM linear loop 20: deviance = 277.2427
> anova(sp5.glm)
Analysis of Deviance Table
Gamma model
Response: y
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev
NULL 72 362.3479
log(x) 1 -128.5120 71 490.8600
dose.val 1 207.2757 70 283.5843
factor(dose.val) 2 6.3416 68 277.2427
#####################################################################################
David Maxwell wrote:
>
> I have a numeric variable, dose.val, with 4 different values. I fitted two models using glm:
>
> 1.
> sp1.glm <- glm(y~log(x)+factor(dose.val), family=Gamma(link=log),data=sp.dat)
>
> 2.
> sp2.glm <- glm(y~log(x)+dose.val, family=Gamma(link=log),data=sp.dat)
>
>
> I intuitively expected model 2 to be nested in model 1, i.e. that the deviance due to factor(dose.val) could be split into the deviance due to linear dose.val and the remaining deviance.
>
> But fitting dose.val as a number gives a slightly lower residual deviance than when it is fitted as a factor, see the anovas below.
>
> Please can someone explain this to me or provide a suitable reference.
>
>Other info:
>10 of the 73 values for y are zero
>SPlus v3.3 windows 3.11
-----------------------------------------------------------------------
This message was distributed by s-news@wubios.wustl.edu. To unsubscribe
send e-mail to s-news-request@wubios.wustl.edu with the BODY of the
message: unsubscribe s-news