Takes a matrix of observations, and fits the specified Negative Binomial GLM on each species, returning the matrix of coefficients.

matrix_glmNB(x, ...)

# S3 method for default
matrix_glmNB(x = NULL, Map = NULL, formula = NULL,
  response.name = "Count", verbose = FALSE, ...)

# S3 method for Dataset
matrix_glmNB(x, formula = NULL, response.name = "Count",
  verbose = FALSE, ...)

Arguments

x

Either a matrix of abundances with samples as columns and species as rows or a Dataset object

...

Other parameters for the glm.nb function like control.

Map

A data.frame containing the variables to be modelled as columns and samples as rows. The rows should be named with sample IDs and must correspond to the column names from x if an abundance matrix was passed

formula

A formula specifying the model to be fit. Only the right hand side of the equation must be passed, and anything on the left side wild be silently ignored

response.name

String indicating the name to be used for the response (dependent) variable in the GLM

verbose

Logical value. If true the taza name is printed while the fit is in progress.

Value

Returns a matrix.glm object which is a list containing the following elements:

coefficients

A matrix of coefficients for the glm fit. The matix has dimensions S x p, where S is the number of species in the abundance matrix, and p the number of parameters in the specified GLM. Each row corresponds to an independent fit of the model with glm() function and the specified formula

SE

Similar to Coef, but this matrix contains the estimated Standard Errors (ie. the Standard deviation of the coefficients).

AIC

A named vector containing the Akaike Information Criteria (AIC) of each independent fit. The names of the vector correspond to the species IDs in the input abundance matrix

theta

A vector of theta (ie. the overdispersion parameter) for each taxon

SE.theta

A vector of standard errorrs for the overdispersion parameter.

call

Function call via match.call

family

GLM model family. An object of class family

X

Design matrix of the model fit.

Details

This function will take each species (row) in the abundance matrix and fit the specified (via the formula option) Negative binomial GLM independently on each one, using the glm.nb function from then MASS package.

See also

Examples

data(Rhizo) data(Rhizo.map) data(Rhizo.tax) Dat <- create_dataset(Rhizo,Rhizo.map,Rhizo.tax) m1.nb <- matrix_glmNB(x=Dat$Tab,Map=Dat$Map, formula=~accession + plate)
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: alternation limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: alternation limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: alternation limit reached
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: alternation limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: alternation limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: alternation limit reached
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: glm.fit: fitted rates numerically 0 occurred
#> Warning: glm.fit: fitted rates numerically 0 occurred
m1.nb <- matrix_glmNB(Dat,formula=~accession + plate, control=glm.control(epsilon=1e-5,maxit=25), verbose=TRUE)
#> OTU_14834 #> OTU_18567 #> OTU_14402 #> OTU_14822
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_16757 #> OTU_15154 #> OTU_7054 #> OTU_1196 #> OTU_18954 #> OTU_14839 #> OTU_13797 #> OTU_11245 #> OTU_19706 #> OTU_19511 #> OTU_19108 #> OTU_4555 #> OTU_19383 #> OTU_18240 #> OTU_10942 #> OTU_4035 #> OTU_5475 #> OTU_15151 #> OTU_18588 #> OTU_15877 #> OTU_19673
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_19937 #> OTU_19482 #> OTU_12773 #> OTU_3802
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_18407 #> OTU_220 #> OTU_18945
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_333 #> OTU_19245 #> OTU_11920
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_14820 #> OTU_2324 #> OTU_17382 #> OTU_15891 #> OTU_18209 #> OTU_16101 #> OTU_15808
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_9086
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_15529 #> OTU_3497 #> OTU_13953 #> OTU_14928 #> OTU_18468
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_17863 #> OTU_14830 #> OTU_14824 #> OTU_14747 #> OTU_13788 #> OTU_14293
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_16786 #> OTU_14813 #> OTU_4362 #> OTU_14450
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_467 #> OTU_19189
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_10317
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_3327 #> OTU_14816
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_19859 #> OTU_1460 #> OTU_13230
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_9309 #> OTU_3106 #> OTU_14431 #> OTU_19297 #> OTU_13390
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_19047 #> OTU_8809
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_14814
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_10839
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_14876 #> OTU_14829
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_3149 #> OTU_2168 #> OTU_3613
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_13635
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_14586 #> OTU_16467
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_16873 #> OTU_9926
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_3821 #> OTU_8660
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_7481 #> OTU_14836 #> OTU_878 #> OTU_773 #> OTU_1089 #> OTU_18314 #> OTU_6688 #> OTU_11102
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_8055 #> OTU_506 #> OTU_636 #> OTU_13052
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_13524 #> OTU_6144 #> OTU_14790 #> OTU_1422 #> OTU_13874 #> OTU_12803 #> OTU_18539 #> OTU_19786 #> OTU_2279 #> OTU_15667 #> OTU_6613 #> OTU_18651 #> OTU_9848
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> OTU_13355 #> OTU_13519 #> OTU_331 #> OTU_19916 #> OTU_6457 #> OTU_6024 #> OTU_14844 #> OTU_18380 #> OTU_14780 #> OTU_20070 #> OTU_19960 #> OTU_12223 #> OTU_18927 #> OTU_19093 #> OTU_11949 #> OTU_7118 #> OTU_16233