Hi, Currently the `gaussian' family's initialization code signals an error if any response data are zero or negative and a log link is used. Given that zero or negative response data are perfectly legitimate under the GLM fitted using `gaussian("log")', this seems a bit unsatisfactory. Might it be worth changing it?
The current offending code from `gaussian' is: initialize = expression({ n <- rep.int(1, nobs) if (is.null(etastart) && is.null(start) && is.null(mustart) && ((family$link == "inverse" && any(y == 0)) || (family$link == "log" && any(y <= 0)))) stop( "cannot find valid starting values: please specify some") mustart <- y }) A possible replacement would be ... initialize = expression({ n <- rep.int(1, nobs) if (is.null(etastart) && is.null(start) && is.null(mustart) && ((family$link == "inverse" && all(y == 0)) || (family$link == "log" && all(y <= 0)))) stop( "cannot find valid starting values: please specify some") mustart <- y if (family$link=="log") { iy <- y<=0 if (sum(iy)) mustart[iy] <- min(y[!iy])*.5 } else if (family$link=="inverse") { iy <- y==0 if (sum(iy)) mustart[iy] <- min(abs(y[!iy]))*.5 } }) best, Simon >- Simon Wood, Mathematical Sciences, University of Bath, Bath BA2 7AY >- +44 (0)1225 386603 www.maths.bath.ac.uk/~sw283/ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel