¿Por qué siempre obtengo 1 para df cuando ejecuto la función adonis (permanova)?

2 minutos de lectura

avatar de usuario
usuario1711727

Ejecuto adonis en datos comunitarios y matriz ambiental (que contiene un factor de dos niveles y 6 variables continuas) usando Bray-Curtis y siempre tomo 1 df pero este no es el caso. Probablemente hay un error aquí.

Véase también el ejemplo en adonis

data(dune) 
data(dune.env)  
str(dune.env)  
adonis(dune ~ Management*A1, data=dune.env, permutations=99)

Aunque A1 es una variable numérica el resultado proporciona 1 df.

  • Lo siento, no tengo claro cuál es el problema; A1 es una variable continua y, por lo tanto, solo usa 1 grado de libertad, tal como lo haría en un modelo de regresión lineal.

    –Gavin Simpson

    26 de diciembre de 2018 a las 16:53

En el modelo:

> adonis(dune ~ Management*A1, data=dune.env, permutations=99)

Call:
adonis(formula = dune ~ Management * A1, data = dune.env, permutations = 99) 

Permutation: free
Number of permutations: 99

Terms added sequentially (first to last)

              Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)   
Management     3    1.4686 0.48953  3.2629 0.34161   0.01 **
A1             1    0.4409 0.44089  2.9387 0.10256   0.02 * 
Management:A1  3    0.5892 0.19639  1.3090 0.13705   0.21   
Residuals     12    1.8004 0.15003         0.41878          
Total         19    4.2990                 1.00000          
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

los principal efecto de A1 utiliza un solo grado de libertad porque es una variable continua. La interacción entre Management y A1 usa 3 grados de libertad adicionales ya que hay un “efecto” adicional de A1 por nivel de Management.

Todo esto es esperado y ciertamente no hay ningún error ilustrado en adonis() de este modelo.

Es importante destacar que debe asegurarse de que las variables de los factores se codifiquen como factores; de lo contrario, por ejemplo, si las categorías se codifican como números enteros, R seguirá interpretando esas variables como continuas/numéricas. Sólo los interpretará como factores si se le obliga a hacerlo. "factor" clase. Compruebe la salida de str(df)dónde df es su marco de datos que contiene las variables predictoras (covariables; las cosas en el lado derecho de ~), y asegúrese de que cada variable de factor sea de la clase adecuada. por ejemplo, el dune.env los datos son:

> str(dune.env)  
'data.frame':   20 obs. of  5 variables:
 $ A1        : num  2.8 3.5 4.3 4.2 6.3 4.3 2.8 4.2 3.7 3.3 ...
 $ Moisture  : Ord.factor w/ 4 levels "1"<"2"<"4"<"5": 1 1 2 2 1 1 1 4 3 2 ...
 $ Management: Factor w/ 4 levels "BF","HF","NM",..: 4 1 4 4 2 2 2 2 2 1 ...
 $ Use       : Ord.factor w/ 3 levels "Hayfield"<"Haypastu"<..: 2 2 2 2 1 2 3 3 1 1 ...
 $ Manure    : Ord.factor w/ 5 levels "0"<"1"<"2"<"3"<..: 5 3 5 5 3 3 4 4 2 2 ...

lo que indica que Management es un factor, A1 es numérica (es el espesor del horizonte del suelo A1), y las variables restantes son ordenado factores (pero aún factores; funcionan correctamente en la infraestructura de fórmula omdel de R).

  • Gracias, hasta ahora no me he dado cuenta de que las variables continuas en permanova usan un solo df.

    – usuario1711727

    26 de diciembre de 2018 a las 17:23


  • La variable continua en cualquier modelo (lineal) utiliza un solo df. Controlar lm & glm.

    – Jari Oksanen

    29 de diciembre de 2018 a las 10:16

¿Ha sido útil esta solución?