setwd("~/Dropbox/Fernando 2018/archives/data")
library("lme4", lib.loc="/Library/Frameworks/R.framework/Versions/3.5/Resources/library")
## Loading required package: Matrix
enemy<- read.table("invas_fam_out_2.csv", sep = ",", header = T)
attach(enemy)
damage<-as.factor(damage)
fam<-as.factor(fam)
##Modelo sin interacciónes
fit1<-glmer(seeds.2~damage+(1|pop)+(1|pop:fam), family = "poisson")
summary(fit1)
## Generalized linear mixed model fit by maximum likelihood (Laplace
## Approximation) [glmerMod]
## Family: poisson ( log )
## Formula: seeds.2 ~ damage + (1 | pop) + (1 | pop:fam)
##
## AIC BIC logLik deviance df.resid
## 5316.5 5332.2 -2654.3 5308.5 372
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -7.0189 -1.2915 0.1637 1.3344 11.8492
##
## Random effects:
## Groups Name Variance Std.Dev.
## pop:fam (Intercept) 0.04283 0.2070
## pop (Intercept) 0.01759 0.1326
## Number of obs: 376, groups: pop:fam, 52; pop, 4
##
## Fixed effects:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.90547 0.07415 52.672 < 2e-16 ***
## damage1 -0.10053 0.01470 -6.839 7.98e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## damage1 -0.093
##Probando efectos fijos (damage) con la correción Kenward-Roger para datos desbalanceados
library(pbkrtest)
modtodos<-lmer(seeds.2~damage+(1|pop)+(1|pop:fam), REML = F)
modsindamage<-lmer(seeds.2~1+(1|pop)+(1|pop:fam), REML = F)
p.damage<-KRmodcomp(modtodos,modsindamage)
p.damage
## F-test with Kenward-Roger approximation; computing time: 0.15 sec.
## large : seeds.2 ~ damage + (1 | pop) + (1 | pop:fam)
## small : seeds.2 ~ 1 + (1 | pop) + (1 | pop:fam)
## stat ndf ddf F.scaling p.value
## Ftest 5.1432 1.0000 331.8785 1 0.02398 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Podemos mejorar la presición de la estimación con un boostrap paramétrico
pboost.damage<-PBmodcomp(modtodos,modsindamage) #Demora un minuto o dos dependiendo del equipo
summary (pboost.damage)
## Parametric bootstrap test; time: 24.97 sec; samples: 1000 extremes: 28;
## large : seeds.2 ~ damage + (1 | pop) + (1 | pop:fam)
## small : seeds.2 ~ 1 + (1 | pop) + (1 | pop:fam)
## stat df ddf p.value
## PBtest 5.0879 0.02897 *
## Gamma 5.0879 0.03280 *
## Bartlett 4.7359 1.0000 0.02954 *
## F 5.0879 1.0000 28.906 0.03184 *
## LRT 5.0879 1.0000 0.02409 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##Probando efectos aleatorios
mod.sin.pop<-glmer(seeds.2~damage+(1|pop:fam), family="poisson")
mod.sin.fam<-glmer(seeds.2~damage+(1|pop), family="poisson")
#Se calculan las probabilidades asociadas a los efectos aleatorios, son las mas conservadoras sin usar correcciones (a la baja) del valor de p, debido a la naturaleza desbalanceada de los datos.
anova(fit1,mod.sin.pop)
## Data: NULL
## Models:
## mod.sin.pop: seeds.2 ~ damage + (1 | pop:fam)
## fit1: seeds.2 ~ damage + (1 | pop) + (1 | pop:fam)
## Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)
## mod.sin.pop 3 5322.6 5334.4 -2658.3 5316.6
## fit1 4 5316.5 5332.2 -2654.3 5308.5 8.1102 1 0.004402 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(fit1,mod.sin.fam)
## Data: NULL
## Models:
## mod.sin.fam: seeds.2 ~ damage + (1 | pop)
## fit1: seeds.2 ~ damage + (1 | pop) + (1 | pop:fam)
## Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)
## mod.sin.fam 3 5927.8 5939.6 -2960.9 5921.8
## fit1 4 5316.5 5332.2 -2654.3 5308.5 613.25 1 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Finalmente el diagnostico de residuales del modelo...
plot(residuals(fit1)~predict(fit1,type="link"), xlab=expression(hat(eta)), ylab="Deviance residuals")

#...y los intervalos de confianza para las familias y poblaciones
library(lattice)
dotplot(ranef(fit1,condVar=TRUE))
## $`pop:fam`

##
## $pop
