[R] problems with glm
Roland R Regoes
roland.regoes at env.ethz.ch
Sun Jan 15 14:56:13 CET 2006
I am sorry, I should have emphasized that: I really mean 'family =
binomial(link="log")'.
I am fitting infection data. Failure and success correspond to being infected or not. The probability of success (ie, not being infected in my context) is derived from a population model describing the interaction between hosts and parasites:
P(not infected) = exp(-InfectionRate*ParasiteDose)
'ParasiteDose' corresponds to 'predictor'. I want to estimate the infection rate. Hence I need 'binomial(link="log")' and must set intercept=0.
Roland
On Mon, Jan 16, 2006 at 12:16:09AM +1100, Bill.Venables at csiro.au wrote:
> Most of your problems seem to come from 'link = "log"' whereas you
> probably mean 'link = logit' (which is the default. Hence:
>
> ##########################################
> > success <- c(13,12,11,14,14,11,13,11,12)
> > failure <- c(0,0,0,0,0,0,0,2,2)
> > predictor <- c(0,80*5^(0:7))
> > glm(cbind(success,failure) ~ predictor,
> + family = binomial, #(link="log"),
> + control = glm.control(epsilon=1e-8,trace=TRUE,maxit=50))
> Deviance = 7.621991 Iterations - 1
> Deviance = 6.970934 Iterations - 2
> Deviance = 6.941054 Iterations - 3
> Deviance = 6.940945 Iterations - 4
> Deviance = 6.940945 Iterations - 5
>
> Call: glm(formula = cbind(success, failure) ~ predictor, family =
> binomial, control = glm.control(epsilon = 1e-08, trace = TRUE,
> maxit = 50))
>
> Coefficients:
> (Intercept) predictor
> 4.180e+00 -4.106e-07
>
> Degrees of Freedom: 8 Total (i.e. Null); 7 Residual
> Null Deviance: 12.08
> Residual Deviance: 6.941 AIC: 15.85
> >
>
> #######################################
>
> Bill Venables,
> CMIS, CSIRO Laboratories,
> PO Box 120, Cleveland, Qld. 4163
> AUSTRALIA
> Office Phone (email preferred): +61 7 3826 7251
> Fax (if absolutely necessary): +61 7 3826 7304
> Mobile (rarely used): +61 4 1963 4642
> Home Phone: +61 7 3286 7700
> mailto:Bill.Venables at csiro.au
> http://www.cmis.csiro.au/bill.venables/
>
>
>
> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Roland R Regoes
> Sent: Sunday, 15 January 2006 11:04 PM
> To: r-help at stat.math.ethz.ch
> Subject: [R] problems with glm
>
>
> Dear R users,
>
> I am having some problems with glm. The first is an error message
> "subscript out of bounds". The second is the fact that reasonable
> starting values are not accepted by the function.
>
> To be more specific, here is an example:
>
> > success <- c(13,12,11,14,14,11,13,11,12)
> > failure <- c(0,0,0,0,0,0,0,2,2)
> > predictor <- c(0,80*5^(0:7))
> > glm(cbind(success,failure) ~ predictor + 0,
> + family=binomial(link="log"),
> + control=glm.control(epsilon=1e-8,trace=TRUE,maxit=50))
> Deviance = 3.348039 Iterations - 1
> Error: subscript out of bounds
> In addition: Warning message:
> step size truncated: out of bounds
> >
>
> The model with intercept yields:
>
> > glm(cbind(success,failure) ~ predictor ,
> + family=binomial(link="log"),
> + control=glm.control(epsilon=1e-8,trace=FALSE,maxit=50))
>
> Call: glm(formula = cbind(success, failure) ~ predictor, family =
> binomial(link = "log"), control = glm.control(epsilon = 1e-08,
> trace = FALSE, maxit = 50))
>
> Coefficients:
> (Intercept) predictor
> -5.830e-17 -4.000e-08
>
> Degrees of Freedom: 8 Total (i.e. Null); 7 Residual
> Null Deviance: 12.08
> Residual Deviance: 2.889 AIC: 11.8
> There were 33 warnings (use warnings() to see them)
> > warnings()
> 1: step size truncated: out of bounds
> ...
> 31: step size truncated: out of bounds
> 32: algorithm stopped at boundary value in: glm.fit(x = X, y = Y,
> weights = weights, start = start, etastart = etastart, ...
> 33: fitted probabilities numerically 0 or 1 occurred in: glm.fit(x = X,
> y = Y, weights = weights, start = start, etastart = etastart, ...
> >
>
> Since the intercept in the above fit is fairly small I thought I
> could use -4e-8 as a reasonable starting value in a model without
> intercept. But to no avail:
>
> > glm(cbind(success,failure) ~ predictor + 0, start=-4e-8,
> + family=binomial(link="log"),
> + control=glm.control(epsilon=1e-8,trace=FALSE,maxit=50))
> Error in glm.fit(x = X, y = Y, weights = weights, start = start,
> etastart = etastart, :
> cannot find valid starting values: please specify some
> >
>
> I am stuck here. Am I doing something wrong when specifying the
> starting value? I would appreciate any help. (I could not find anything
> relevant in the documentation of glm and the mailing list archives, but
> I did not read the source code of glm yet.)
>
> Roland
>
>
> PS: I am using R Version 2.2.0 (R Cocoa GUI 1.13 (1915)) on MacOSX
> 10.4.4
>
> --
> -----------------------------------------------------------------------
> Roland Regoes
> Theoretical Biology
> Universitaetsstr. 16
> ETH Zentrum, CHN H76.1
> CH-8092 Zurich, Switzerland
>
> tel: +41-44-632-6935
> fax: +41-44-632-1271
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
--
-----------------------------------------------------------------------
Roland Regoes
Theoretical Biology
Universitaetsstr. 16
ETH Zentrum, CHN H76.1
CH-8092 Zurich, Switzerland
tel: +41-44-632-6935
fax: +41-44-632-1271
More information about the R-help
mailing list