2012-04-16 19 views
6

Me preguntaba si alguien podría ayudarme a entender por qué recibo un mensaje de error cuando ingreso un script en R. Para más información, lo busco el efecto 6 variables diferentes (que creo que es 63 combinaciones o modelos) (X) tienen en bruto primario y la producción neta del ecosistema (Y) seperatly en diferentes escalas espaciales para mi proyecto de honores de ciencias ambientales. He decidido utilizar el análisis de regresión múltiple de búsqueda exhaustiva con el criterio de información akaikes (AIC) para tratar de encontrar un grupo de modelos que se ajusten mejor. (y particiones jerárquicas para comparar la varianza atribuida a las diferentes variables X) Quiero obtener los pesos para poder clasificar qué modelos "cumplen mejor" el criterio ver si hay uno o un grupo de ellos que equipan el resto y por lo tanto ser más probablemente se ajuste a los datos.Uso del paquete glmulti en R para búsqueda exhaustiva regresión múltiple para pesos akaike

Recientemente publiqué una pregunta similar en el paquete hier.part en Cross Validated recibí una gran respuesta y me dijeron que viniera si tenía alguna pregunta similar en el futuro.

El paquete que estoy usando para R es glmulti. which can be found here

El script que estoy usando es este

require(glmulti) 
GPPANDDRIVER<-read.table("C:\\Databases at different scales for R\\River Rhine and Netherlands\\GPP and drivers rhineland (comma delimited).csv",header=T,sep=",") 
GPP<-GPPANDDRIVER$GPP 
IND_VARS<-subset(GPPANDDRIVER,select=-GPP) 
# glmulti S4 generic 
glmulti(y=GPP, xr=IND_VARS, data, exclude = c(), name = "glmulti.analysis", intercept = TRUE, marginality = FALSE, bunch=30, chunk = 1, chunks = 1, 
level = 2, minsize = 0, maxsize = -1, minK = 0, maxK = -1, method = "h", crit = "aic", confsetsize = 63, popsize = 40, mutrate = 10^-3, sexrate = 0.1, imm = 0.3, plotty = TRUE, report = TRUE, deltaM = 0.05, deltaB = 0.05, conseq = 5, fitfunction = "glm", resumefile = "id", includeobjects=TRUE,) 

Aquí está el enlace para los datos .csv para los sitios en la región del Rin se ha mencionado en el ejemplo, http://www.filedropper.com/gppanddriversrhinelandcommadelimited

Estoy muy nuevo en R por lo presumí popsize significa el número de réplicas que es 40 para esta escala por lo que utiliza 40, I también asumió confsetsize significó la cantidad de modelos posibles que creo que es 63 debido a las 6 variables?

Si alguien puede ayudar sería muy apreciada

Gracias por que la paciencia y disculpas por la pregunta básica

Richard

edición Acabo de intentar ejecutar el script de esta mañana y ahora crashes R.

+0

Querido Richard, ¿pasé por alto algo o publicaste tus datos en alguna parte? Es mucho más fácil para nosotros ayudarte si publicas un ejemplo reproducible. –

+0

Hola Eric, gracias por la rápida respuesta, he subido un enlace al archivo .csv. ¿Sería útil cargar los otros archivos de la base de datos para el posterior análisis MR y AIC? También es esto en el formato correcto, soy nuevo aquí. – Neil

+0

Acabo de intentar ejecutar este script de nuevo y simplemente falla R @ EricD.Brean – Neil

Respuesta

7

Esto funcionó para mí. Creo que lo principal no es incluir ciegamente todos los parámetros en la llamada modelo. La mayoría de estos tienen valores predeterminados, por lo tanto (si el escritor del paquete ha hecho su trabajo) debería poder dejarlos tal como están y no preocuparse demasiado (aunque por supuesto debe RTFM y (intente con) entender lo que es decir ...)

dat <- read.csv("GPPdriversRhineland.csv") 
library(glmulti) 

decidí cambiar el nombre de los predictores más cortos con las etiquetas:

prednames <- c("NDVI","solar.rad","avg.temp","precip", 
       "nutr.avail","water.cap") 
names(dat)[1:6] <- prednames 

Esto es todo lo que necesita para adaptarse a todas las combinaciones de efectos principales: ya que tiene seis predictores, hay 64 modelos de nivel 1 (incluido el modelo nulo).

g1 <- glmulti("GPP",xr=prednames,data=dat,level=1) 

Para un desafío computacional más grande:

g2 <- glmulti("GPP",xr=prednames,data=dat,level=2) 

Creo que hay 2^(choose(6,2)+6) = 2,1 millones de posibles modelos aquí. No he observado ?glmulti lo suficiente como para indicarle cómo detener modelos de montaje. Acabo de comenzar (hasta ahora ha evaluado 66,000 modelos), pero ha encontrado un modelo de 2 niveles con AIC 500.5, que es mucho mejor que el min-AIC de 518 en el conjunto de modelos de 1 nivel ...

PS he jugado un poco con la configuración un poco más, tratando el enfoque algoritmo genético en lugar del enfoque exhaustivo (no veo una forma obvia de contar glmulti "usan el enfoque exhaustivo, pero se detiene después de N intenta "). Incluso con ajustes de algoritmo genético ligeramente más permisivos que el predeterminado, parece atascarse en AIC aproximadamente 504, por encima del valor encontrado en la detección exhaustiva (parcial) que probé primero.

por ejemplo:

g2 <- glmulti("GPP",xr=prednames,data=dat,level=2,marginality=TRUE, 
       method="g",conseq=25,popsize=500,mutrate=1e-2) 

PPS: la razón por la que estaba consiguiendo mejores resultados en el caso exhaustiva era que tenía marginality=FALSE, es decir, el modelo se le permitió dejar de lado los parámetros principales de efecto que estuvieron involucrados en interacciones incluidas en el modelo. Esto no es necesariamente sensato. Si apago la restricción de la marginalidad, entonces el algoritmo genético puede bajar a la AIC = 499 sin demasiados problemas ...

glmulti("GPP",xr=prednames,data=dat,level=2,marginality=TRUE, 
       method="d") 

también es útil: se imprime el número de modelos candidatos definidos para una especificación dada .

+0

Hola @ben gracias por tu respuesta, ejecuté el script que me diste en R y funcionó bien. Muchas gracias. Cuando ejecuto el script de interacción pairwise, tengo razón al pensar que los modelos con interacciones de pares incluidas tendrán en cuenta cómo las variables afectan la contribución de los demás a los montos de GPP. Por ejemplo, teniendo en cuenta las diferentes interacciones entre la temperatura y la precipitación en función de las cantidades? Si eso tiene sentido. – Neil

+0

Sí. Antes de ir demasiado lejos, probablemente debas asegurarte de que entiendes bien los modelos estadísticos (regresión múltiple) que subyacen en el trabajo que estás haciendo; de lo contrario, te puedes meter en problemas ... (cualquier libro de estadísticas de introducción/intermedio debería hablar sobre regresión múltiple, interacciones, etc.) –

+0

Gracias por la respuesta, tengo una buena comprensión de los modelos de regresión múltiple pero me salté la parte de las interacciones por parejas que parece. Voy a comparar mis resultados con los resultados de particionamiento jerárquico que calculé el otro día. ¡Gracias de nuevo! – Neil

Cuestiones relacionadas