[R] glm.nb error
Marc Schwartz
marc_schwartz at me.com
Fri Jun 7 17:48:54 CEST 2013
On Jun 7, 2013, at 10:36 AM, Daofeng Li <lidaof at gmail.com> wrote:
> Thank you Sarah and Marc for your fast and nice response.
> Apology for didn't include all information.
>
> I have a input file like following:
>
> gene1 18 15 13 13 16 9 20 24
> gene2 15 8 8 7 0 12 18 4
> gene3 10 9 8 12 9 11 12 12
> gene4 4 0 4 3 0 5 0 0
> gene5 0 1 0 0 1 5 1 0
> gene6 3 3 3 3 4 4 4 4
> gene7 0 4 0 2 2 2 0 0
> gene8 4 4 7 3 0 6 6 12
> gene9 11 6 13 10 13 7 12 9
> gene10 6 3 6 3 4 7 6 3
>
> I am using following R code to compare the difference between the 1st 4 numbers against 2nd 4 numbers:
>
> library(MASS)
> library(coin)
> suppressPackageStartupMessages(suppressWarnings(library(tcltk)))
> library(qvalue)
> library(plyr)
> dat = read.table("test",col.names=c("gene","b1","b2","b3","b4","c1","c2","c3","c4"))
> index=(apply(dat[,-1],1,sum)>0)
> data = dat[index,]
> group=c(1,1,1,1,0,0,0,0)
> n=nrow(data)
> result=NULL
> for (i in 1:n){
> print(i)
> y=as.numeric(data[i,-1])
> if (all((y-mean(y))==0))
> result=rbind(result,c(0,0,0,1))
> else {
> fit=glm.nb(y~group)
> result=rbind(result,summary(fit)$coef[2,])
> }
> }
> qval = qvalue(result[,4])
> fdr=0.1
> index=(qval$qvalues<fdr)
> dat.result = data[index,]
> write.table(dat.result,file="test_result",row.names=F,quote=F)
>
> If you use this input file and code, would reproduce the same error:
>
> Loading required package: methods
> Loading required package: survival
> Loading required package: splines
> Loading required package: mvtnorm
> Loading required package: modeltools
> Loading required package: stats4
>
> Attaching package: ‘plyr’
>
> The following object is masked from ‘package:modeltools’:
>
> empty
>
> [1] 1
> [1] 2
> [1] 3
> [1] 4
> [1] 5
> [1] 6
> Error in while ((it <- it + 1) < limit && abs(del) > eps) { :
> missing value where TRUE/FALSE needed
> Calls: glm.nb -> as.vector -> theta.ml
> In addition: Warning messages:
> 1: In theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace = control$trace > :
> iteration limit reached
> 2: In theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace = control$trace > :
> iteration limit reached
> Execution halted
>
> So might be the error was in 6th line, not the line I pasted before (5th line)? Sorry about that.
>
> Thanks.
>
> Daofeng
Your 'y' at that point in the loop is:
> y
[1] 3 3 3 3 4 4 4 4
and 'group' is:
> group
[1] 1 1 1 1 0 0 0 0
> glm.nb(y ~ group)
Error in while ((it <- it + 1) < limit && abs(del) > eps) { :
missing value where TRUE/FALSE needed
Think about it... :-)
Regards,
Marc Schwartz
More information about the R-help
mailing list