Hi Kendra,
Which values are in uni.test depends which test statistic you choose to use (in 
the test argument) - the default is log-likelihood ratio statistics (not 
sum-of-LR, but the original LR's that later get summed to make a multivariate 
statistic).

For something in the output that tells you the direction of the effect, try 
model coefficients, easy enough to access using something like:
        coef(glm.spid)

I'd advise plotting too!  Apart from using a residual plot to check your 
assumptions
        plot(glm.spid)
you could for example plot a subset corresponding to the spp with largest test 
statistics.  Something like
        uniSorted = sort(an$uni.test, index.return=TRUE, decreasing=TRUE)
Then plot
        spiddat[ , uniSorted$ix[1:10] ]

all the best
David


-----Original Message-----
From: Maas, Kendra [mailto:kendr...@mail.ubc.ca] 
Sent: Friday, 24 October 2014 9:27 AM
To: David Warton; 'r-sig-ecology@r-project.org'
Subject: RE: [R-sig-eco] mvabund-interprating the uni.test

thanks for responding.  To clarify, the values in uni.test are the sum-of-LR (I 
didn't specify which test to use, default is LR)?  So that value gives me the 
relative influence of treatment on each species but not the direction, correct. 
 Is there something in the output or either manyglm or the anova that gives the 
direction?  My treatments are a gradient from control to harshest, so negative 
intercept (positive slope) are species that increase with treatment-that is 
what I'm trying to find for the ones that have a significant p.  For my 
datasets, I have ~80 species that are responding so would like to find a way to 
assess direction of impact other than plotting each one.

thanks

Kendra

--
Kendra Maas, Ph.D.
Post Doctoral Research Fellow
University of British Columbia
604-822-5646

________________________________________
From: David Warton [david.war...@unsw.edu.au]
Sent: Thursday, October 23, 2014 2:57 PM
To: 'r-sig-ecology@r-project.org'; Maas, Kendra
Subject: RE: [R-sig-eco] mvabund-interprating the uni.test

Hi Kendra,
Thanks for the question.  It is great to see you looking at the relative 
size/significance of univariate tests as a way to gauge which species most 
strongly respond to some environmental gradient (/treatment) - this is a much 
more reliable way to do things than using something like SIMPER, which muddles 
up effect size and residual variability.

The univariate P-values are found in uni.p, the second last argument listed in 
your str call.  You can find out what else is in your anova.manyglm object by 
typing
        ?anova.manyglm
And looking at the section titled "Value", which lists the output arguments 
with brief descriptions of what they show.

All the best
David


David Warton
Associate Professor and Australian Research Council Future Fellow School of 
Mathematics and Statistics and the Evolution & Ecology Research Centre The 
University of New South Wales NSW 2052 AUSTRALIA phone (61)(2) 9385-7031 fax 
(61)(2) 9385-7123

http://www.eco-stats.unsw.edu.au/




-------- Original Message --------
Subject:        [R-sig-eco] mvabund-interprating the uni.test
Date:   Wed, 22 Oct 2014 22:07:38 +0000
From:   Maas, Kendra <kendr...@mail.ubc.ca>
To:     r-sig-ecology@r-project.org <r-sig-ecology@r-project.org>



I'm using mvabund uni.test to select species that are changing according to a 
treatment gradient. I've pulled out species that have a significantly different 
intercept from the null but I'd also like to indicate if they are positive or 
negative with treatment and extract the "sum-of-LR" as Warton does in the paper 
showing the usefulness of this approach 
(http://onlinelibrary.wiley.com/doi/10.1111/j.2041-210X.2011.00127.x/abstract). 
 I've run manyglm followed by anova on the spider data to try to match the 
mvabund documentation but I can't figure out where the results beyond the 
p-values are stored, here are the str for the manyglm and anova output.  (the 
dput are huge)

thanks

Kendra


> str(glm.spid)
List of 41
  $ coefficients       : num [1:3, 1:12] 2.2353 0.0582 -1.3425 2.1552 -0.4229 
...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:3] "(Intercept)" "bare.sand" "fallen.leaves"
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ var.coefficients   : num [1:3, 1:12] 0.1068 0.0185 0.1351 0.252 0.0466 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:3] "(Intercept)" "bare.sand" "fallen.leaves"
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ fitted.values      : num [1:28, 1:12] 9.349 0.843 9.349 9.349 9.349 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ linear.predictor   : num [1:28, 1:12] 2.24 -0.17 2.24 2.24 2.24 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ residuals          : num [1:28, 1:12] 1.767 -0.778 0.638 -0.83 -0.943 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ PIT.residuals      : num [1:28, 1:12] 0.934 0.534 0.79 0.238 0.101 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ sqrt.1_Hii         : num [1:28, 1:12] 0.945 0.89 0.945 0.945 0.945 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ var.estimator      : num [1:28, 1:12] 87.79 1.48 87.79 87.79 87.79 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ sqrt.weight        : num [1:28, 1:12] 0.998 0.693 0.998 0.998 0.998 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ theta              : Named num [1:12] 1.114 0.428 1.301 0.156 0.715 ...
   ..- attr(*, "names")= chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" 
...
  $ two.loglike        : Named num [1:12] -121.5 -142.1 -78.9 -60.6 -44.5 ...
   ..- attr(*, "names")= chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" 
...
  $ deviance           : Named num [1:12] 22.2 29.4 18.7 16 10.5 ...
   ..- attr(*, "names")= chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" 
...
  $ aic                : Named num [1:12] 129.5 150.1 86.9 68.6 52.5 ...
   ..- attr(*, "names")= chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" 
...
  $ iter               : Named num [1:12] 3 3 6 4 5 4 4 5 4 4 ...
   ..- attr(*, "names")= chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" 
...
  $ data               :'data.frame':   28 obs. of  3 variables:
   ..$ spiddat      : int [1:28, 1:12] 25 0 15 2 1 0 2 0 1 3 ...
   .. ..- attr(*, "dimnames")=List of 2
   .. .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
   .. ..- attr(*, "class")= chr [1:2] "mvabund" "matrix"
   ..$ bare.sand    : num [1:28] 0 0 0 0 0 ...
   ..$ fallen.leaves: num [1:28] 0 1.79 0 0 0 ...
   ..- attr(*, "terms")=Classes 'terms', 'formula' length 3 spiddat ~ bare.sand 
+ fallen.leaves
   .. .. ..- attr(*, "variables")= language list(spiddat, bare.sand, 
fallen.leaves)
   .. .. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
   .. .. .. ..- attr(*, "dimnames")=List of 2
   .. .. .. .. ..$ : chr [1:3] "spiddat" "bare.sand" "fallen.leaves"
   .. .. .. .. ..$ : chr [1:2] "bare.sand" "fallen.leaves"
   .. .. ..- attr(*, "term.labels")= chr [1:2] "bare.sand" "fallen.leaves"
   .. .. ..- attr(*, "order")= int [1:2] 1 1
   .. .. ..- attr(*, "intercept")= int 1
   .. .. ..- attr(*, "response")= int 1
   .. .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
   .. .. ..- attr(*, "predvars")= language list(spiddat, bare.sand, 
fallen.leaves)
   .. .. ..- attr(*, "dataClasses")= Named chr [1:3] "nmatrix.12" "numeric" 
"numeric"
   .. .. .. ..- attr(*, "names")= chr [1:3] "spiddat" "bare.sand" 
"fallen.leaves"
  $ stderr.coefficients: num [1:3, 1:12] 0.327 0.136 0.368 0.502 0.216 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:3] "(Intercept)" "bare.sand" "fallen.leaves"
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ phi                : Named num [1:12] 0.897 2.338 0.768 6.43 1.399 ...
   ..- attr(*, "names")= chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" 
...
  $ tol                : num 1.49e-08
  $ maxiter            : num 25
  $ maxiter2           : num 10
  $ AIC                : Named num [1:12] 129.5 150.1 86.9 68.6 52.5 ...
   ..- attr(*, "names")= chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" 
...
  $ AICsum             : num 1658
  $ family             : chr "negative.binomial"
  $ K                  : num 1
  $ theta.method       : chr "PHI"
  $ cor.type           : chr "I"
  $ shrink.param       : num 0
  $ call               : language manyglm(formula = spiddat ~ bare.sand + 
fallen.leaves, family = "negative.binomial", data = X)
  $ terms              :Classes 'terms', 'formula' length 3 spiddat ~ bare.sand 
+ fallen.leaves
   .. ..- attr(*, "variables")= language list(spiddat, bare.sand, fallen.leaves)
   .. ..- attr(*, "factors")= int [1:3, 1:2] 0 1 0 0 0 1
   .. .. ..- attr(*, "dimnames")=List of 2
   .. .. .. ..$ : chr [1:3] "spiddat" "bare.sand" "fallen.leaves"
   .. .. .. ..$ : chr [1:2] "bare.sand" "fallen.leaves"
   .. ..- attr(*, "term.labels")= chr [1:2] "bare.sand" "fallen.leaves"
   .. ..- attr(*, "order")= int [1:2] 1 1
   .. ..- attr(*, "intercept")= int 1
   .. ..- attr(*, "response")= int 1
   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
   .. ..- attr(*, "predvars")= language list(spiddat, bare.sand, fallen.leaves)
   .. ..- attr(*, "dataClasses")= Named chr [1:3] "nmatrix.12" "numeric" 
"numeric"
   .. .. ..- attr(*, "names")= chr [1:3] "spiddat" "bare.sand" "fallen.leaves"
  $ assign             : int [1:3] 0 1 2
  $ formula            :Class 'formula' length 3 spiddat ~ bare.sand + 
fallen.leaves
   .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
  $ rank               : int 3
  $ xlevels            : Named list()
  $ df.residual        : int 25
  $ x                  : num [1:28, 1:3] 1 1 1 1 1 1 1 1 1 1 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:3] "(Intercept)" "bare.sand" "fallen.leaves"
  $ y                  : num [1:28, 1:12] 25 0 15 2 1 0 2 0 1 3 ...
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ qr                 :List of 4
   ..$ qr   : num [1:28, 1:3] -5.292 0.189 0.189 0.189 0.189 ...
   .. ..- attr(*, "dimnames")=List of 2
   .. .. ..$ : chr [1:28] "1" "2" "3" "4" ...
   .. .. ..$ : chr [1:3] "(Intercept)" "bare.sand" "fallen.leaves"
   ..$ rank : int 3
   ..$ qraux: num [1:3] 1.19 1.11 1.18
   ..$ pivot: int [1:3] 1 2 3
   ..- attr(*, "class")= chr "qr"
  $ show.coef          : logi FALSE
  $ show.fitted        : logi FALSE
  $ show.residuals     : logi FALSE
  $ offset             : num [1:28, 1:12] 0 0 0 0 0 0 0 0 0 0 ...
  - attr(*, "class")= chr [1:2] "manyglm" "mglm"
> str(an.spid)
List of 11
  $ family      : chr "negative.binomial"
  $ p.uni       : chr "adjusted"
  $ test        : chr "Dev"
  $ cor.type    : chr "I"
  $ resamp      : chr "pit.trap"
  $ nBoot       : num 1000
  $ shrink.param: num [1:3] 0 0 0
  $ n.bootsdone : num 999
  $ table       :'data.frame':  3 obs. of  4 variables:
   ..$ Res.Df  : int [1:3] 27 26 25
   ..$ Df.diff : num [1:3] NA 1 1
   ..$ Dev     : num [1:3] NA 70.4 70.3
   ..$ Pr(>Dev): num [1:3] NA 0.002 0.007
   ..- attr(*, "heading")= chr [1:3] "Analysis of Deviance Table\n" "Model: 
manyglm(formula = spiddat ~ bare.sand + fallen.leaves, family = 
\"negative.binomial\", " "Model:     data = X)"
   ..- attr(*, "title")= chr "\nMultivariate test:\n"
  $ uni.p       : num [1:3, 1:12] NA 0.568 0.001 NA 0.485 0.988 NA 0.001 0.074 
NA ...
   ..- attr(*, "title")= chr "\nUnivariate Tests:\n"
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:3] "(Intercept)" "bare.sand" "fallen.leaves"
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  $ uni.test    : num [1:3, 1:12] NA 1.22 27.64 NA 2.42 ...
   ..- attr(*, "title")= chr "\nUnivariate Tests:\n"
   ..- attr(*, "dimnames")=List of 2
   .. ..$ : chr [1:3] "(Intercept)" "bare.sand" "fallen.leaves"
   .. ..$ : chr [1:12] "Alopacce" "Alopcune" "Alopfabr" "Arctlute" ...
  - attr(*, "class")= chr "anova.manyglm"

--
Kendra Maas, Ph.D.
Post Doctoral Research Fellow
University of British Columbia
604-822-5646
_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology

_______________________________________________
R-sig-ecology mailing list
R-sig-ecology@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology

Reply via email to