Estoy llevando a cabo un meta-análisis y estoy luchando con el azar de la estructura cuando hay una continua moderador y un anidada al azar plazo. Comenzando con un simple ejemplo:
library(metafor)
dat<- dat.konstantopoulos2011
dat$year <-rnorm(nrow(dat))
dat$yi <- dat$yi + dat$year/3 + dat$district/200
dat$study <- factor(dat$study)
dat$district<-factor(dat$district)
Este conjunto de datos tiene 11 distritos, con 3-11 estudios por distrito. Hay un efecto de tamaño según el estudio. dat$yi
son los tamaños del efecto, que se correlacionan con la continua moderador dat$year
(pendiente 0.33) y tienen distintas intersecciones de los 11 distritos. Es el siguiente modelo correcto?
rma.mv(yi ~ year, vi, random = ~ 1 | district/study, data=dat)
Sólo quiero aclarar porque el modelo habitual en la ecología sería:
lme(yi ~ year, random = ~1|district, data=dat) #and VarFixed (~ vi), lmecontrol (sigma=1)
correspondiente en metafor a
rma.mv(yi ~ age, vi, random = ~ 1 | district, data=dat)
Puedo comprender intuitivamente que por lo general no quieren tener todos varianza para terminar en el "estudio" plazo, pero que esto es diferente en un meta-análisis fueron las desviaciones se conoce con exactitud. Sólo quiero para asegurarse de que la anidación de estudio en el distrito es la correcta.
Mis datos reales para el meta-análisis es un poco más complicado. Se compone de los tamaños del efecto (la media de la diapausa fecha) a partir de 447 poblaciones, extraído de 57 estudios. El 57 estudios se llevaron a cabo en 46 especies de 32 géneros en 9 órdenes. No hay un solo continuo de moderador. Un completo azar plazo serían order/genus/species/study/population
. I plan para colocar el plazo study
, porque casi siempre hay un solo estudio de cada especie, a excepción de algunos casos donde los mismos autores realizaron varios estudios con la igualdad de métodos en la misma especie. También estoy pensando en dejar el término genus
, como la mayoría de las especies provienen de diferentes géneros. Esto haría que el azar plazo order/species/population
con tamaños de muestra de 9/46/447. O sería sólo order/species
? El primer modelo parece bien, pero para calcular el valor de R2 necesito utilizar un modelo nulo con el moderador caído, y en ese caso el plazo order
de repente se explica cero de la varianza. Aquí está el script hasta el momento (incluyendo el acceso a los datos en bruto):
#libraries
library(RCurl)
library(glmmTMB)
library(nlme)
#load data
url <- getURL('https://raw.githubusercontent.com/JensJoschi/variability_timing/master/lit_extract/mcmcresults.txt')
studies <- read.table(text=url, header = TRUE)
studies <- studies[,-c(2:4,6:18,23:25,28,30:32)]
studies<-studies[order(studies
Ahora me pregunto acerca de la 0 la varianza de la duración de la $order),]
r<-studies$
. Es esto porque popid no debe ser parte de la aleatorios plazo, o hice algo fundamentalmente equivocado en mis modelos? Dado que los modelos son correctos, ¿puedo usar el R2-valores (reporting 0 0.67 0.79; y 0,54 en general)?
Por último, me pregunto por qué upper_e-studies$lower_e #credible interval range
r[r<(1/6)]<-1/6 #prevents studies from getting infinite weight
vi<-r #CI should be (r / (2*1.96))^2 but perhaps this is sufficient for demonstration purposes
vi2<-1/vi
vi2<-vi2/sum(vi2)
#Order, genus, spec, ID and popid are the terms for nesting, med_e the effect sizes,
#vi the variances, and degN is a moderator (latitude).
#Vi2 is a scaled inverse variance needed for glmmTMB.
#Plotting:
plot(studies
siempre da estimaciones diferentes, no importa el azar términos de uso. Hay algo mal con mi uso de la función? Voy a necesitar más tarde, porque uno de mis tamaños del efecto se distribuye beta. Yo realmente apreciaría si alguien con más experiencia puede comprobar los modelos.
Más información sobre el estudio aquí