2 votos

Estimación de suavizaciones separadas para un factor con cientos de niveles utilizando GAMs

Estoy ajustando un término de interacción de factor suave a un conjunto de datos longitudinales de abundancia del microbioma utilizando GAMs.

model <- gam(Abundance ~ s(Time, by = Genus) + 
             Batch + s(AnimalId, bs = "re"))

Estoy interesado en estimar suavidades separadas para cada nivel del Genus factor. El factor incluye cientos de niveles, pero no estoy seguro de si este es el enfoque correcto para un conjunto de datos con escasez.

Ahora bien, hay géneros específicos que me interesan sobre la base de un análisis exploratorio previo, pero me di cuenta de que cuando ejecuté modelos separados en subconjuntos del factor Género, el effective degrees of freedom tendía a disminuir en función del número de niveles que estaba mirando.

Mi(s) principal(es) pregunta(s) es(son):

  • ¿Por qué los grados de libertad efectivos disminuyen en función de nlevels(Genus) ?
  • ¿Cuáles son los pros y los contras de la eliminación de características con baja prevalencia o abundancia de muestras?
  • ¿Es este un enfoque razonable para estimar funciones de suavizado separadas para este tipo de conjunto de datos?

3voto

David J. Sokol Puntos 1730

Q1

Es probable que no quiera utilizar el by mecanismo para esta cantidad de niveles de factores, pero cada vez que se utiliza un factor by suavizarte debe incluir en el modelo como término paramétrico el factor. Sospecho que lo que ocurre es que, para modelar las diferentes medias, los suavizados cambian de forma y se vuelven menos ondulantes (utilizando menos FED) para poder modelar simplemente las diferencias de abundancia media entre los géneros.

Su modelo entonces debería ser:

model <- gam(Abundance ~ Genus +
               Batch +
               s(Time, by = Genus) +
               s(AnimalId, bs = "re"),
             family = something,
             method = "REML")

Q2

Una gran desventaja es que ya no puedes obtener estimaciones para los géneros que dejaste fuera. Un punto a favor es que podría no ser posible modelar (fácilmente) esos géneros de baja prevalencia o que modelarlos podría requerir un modelo mucho más complejo para capturar las diferencias en la abundancia y las relaciones variables de media-varianza que si sólo se modelan los géneros más abundantes.

El hecho de que cualquiera de ellos sea un gran problema depende de las preguntas a las que se intente dar respuesta.

Q3

Sugeriría que para algo en lo que se tienen 10 o más niveles de un factor, se podría replantear el uso del factor by enfoque. En su lugar, gravitaría hacia el fs que trata la colección de suavizados más como verdaderos efectos aleatorios para dar un "suavizado aleatorio" que incluye interceptos y pendientes aleatorios para cada género más términos aleatorios de ondulación. La restricción sobre el fs que lo hace factible para datos de este tipo es que sólo tenemos un conjunto de parámetros de suavizado que estimar en lugar de un parámetro de suavizado separado para cada género. La implicación de esto es que estamos asumiendo explícitamente que el suavizado para cada género tiene la misma ondulación general, pero potencialmente diferentes formas. Con el factor by formulación lisa está aceptando explícitamente que la lisa para cada género podría tener una ondulación diferente.

Como se ha descrito anteriormente, un modelo de partida utilizando el fs base sería:

model <- gam(Abundance ~ Batch +
               s(Time, Genus, bs = "fs") +
               s(AnimalId, bs = "re"),
             family = something,
             method = "REML")

observando que hemos eliminado el término paramétrico Genus como el s(Time, Genus, bs = "fs") incluye un intercepto aleatorio para cada nivel de Genus .

Si tiene una cantidad tan grande de datos, debería mirar el mgcv::gamm() función o mejor gamm4::gamm4() para realizar el modelado como el fs base está diseñado para ser más eficiente allí, o incluso más probable mgcv::bam() si el modelo y los datos son lo suficientemente grandes.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X