[R-sig-eco] Doubt about function colext() of package Unmarked. Wrong estimates for a metapopulation simulation.
Augusto Ribas
ribas.aca at gmail.com
Sat Nov 24 15:52:19 CET 2012
Hello dear list.
I was using function colext to estimate colonization and extinction of
simulated data and i'm not getting what i expected. Hope someone can
enlighten me here.
The way i'm simulating is the one used in the The R Book (M Crawley),
chapter 26. But its pretty straight forward. You make a scenario
(matrix with 0 and 1) and loop killing populations at extinction rate
then the survivors create propagulos and populate matrix.
############################################################################################
set.seed(10)
#Define Colonization (m) and extinction (e)
m<-0.20
e<-0.10
#Prepare scenario
s<-(1-e)
N<-matrix(rep(0,10000),nrow=100)
xs<-sample(1:100)
ys<-sample(1:100)
for (i in 1:100){
N[xs[i],ys[i]]<-1
}
#Simulate 250 seasons
for (t in 1:250){
#kill populations
S <-matrix(runif(10000),nrow=100)
N<-N*(S<s)
#how many colonizaers
im<-floor(sum( N*m))
#place them
placed<-matrix(sample(c(rep(1,im) ,rep (0,10000-im))),nrow=100)
N<-N+placed
#delete who arrived on a already colonized place
N<-apply(N,2,function(x) ifelse(x>1,1,x))
}
#Ocuppance
sum(N)/length(N)
##################################################################################################
Then i thought i could save results from this simulation to use on
package unmarked and try to figure out the colonization and extinction
rates.
###############################################################################
#make a list to save results from the simulation each season
ocup<-list()
#Simulate like above and save each matrix on my ocup list
for (t in 1:30){
S <-matrix(runif(10000),nrow=100)
N<-N*(S<s)
im<-floor(sum( N*m))
placed<-matrix(sample(c(rep(1,im) ,rep (0,10000-im))),nrow=100)
N<-N+placed
N<-apply(N,2,function(x) ifelse(x>1,1,x))
ocup[[t]]<-N
}
#Ocupation stable
lapply(ocup,function(N) sum(N)/length(N))
##################################################################################
Until here everything is ok. Now i try to take some samples from this
population, on this 30 simulated season to use on unmarked, so i did
this:
##################################################################################
#select 100 points to sample (this is wrong right? Not all points have
the same chance to be sampled)
coleta.x<-sample(1:100)
coleta.y<-sample(1:100)
data.frame(coleta.x,coleta.y)
#prepare a matrix to receive the results
coleta<-matrix(NA,ncol=30,nrow=100,dimnames=list(paste("Local",1:100),paste("Season",1:30)))
head(coleta)
for(j in 1:30) {
for(i in 1:100) {
coleta[i,j]<-ocup[[j]][coleta.x[i],coleta.y[i]]
}
}
head(coleta)
##################################################################################
Then used function colext on Unmarked and:
#####################################################################################
library(unmarked)
coleta.unmarked <-unmarkedMultFrame(coleta,numPrimary=30)
coleta.prms<-colext(psiformula= ~1,gammaformula = ~ 1,epsilonformula = ~ 1,
pformula = ~ 1,coleta.unmarked)
coleta.prms
plogis(coleta.prms at opt$par)
################################################################################
Ang i get the results:
> coleta.prms
Call:
colext(psiformula = ~1, gammaformula = ~1, epsilonformula = ~1,
pformula = ~1, data = coleta.unmarked)
Initial:
Estimate SE z P(>|z|)
0.16 0.201 0.797 0.425
Colonization:
Estimate SE z P(>|z|)
-2.52 0.0987 -25.5 2.63e-143
Extinction:
Estimate SE z P(>|z|)
-2.36 0.0947 -24.9 3.19e-137
Detection:
Estimate SE z P(>|z|)
12.2 16.8 0.728 0.467
AIC: 1766.498
Using the logistic function to see in probability 0-1 we have:
> plogis(coleta.prms at opt$par)
[1] 0.53989597 0.07479338 0.08615581 0.99999511
I dont understand why the occupation and detectability is correct, but
both colonization and extinction are not the values i used on
simulation. They should be 0.20 and 0.10, not these 0.07 and 0.08.
I think maybe the way i select the sample was wrong, but anyway the
answers should be near as any element of the matrix is independent.
I cant figure out why it have not worked, hope someone can easily see
what i cant see here.
Does anyone know why in this example i dont get 0.20 and 0.10 as
answers here(the values i used when i started the simulation up in the
begin).
Well thanks for your time to read my doubt and hope you could help me
figure out what i'm doing wrong here.
Have a nice weekend
Best wishes
Augusto Ribas
--
Grato
Augusto C. A. Ribas
Site Pessoal: http://recologia.wordpress.com/
Lattes: http://lattes.cnpq.br/7355685961127056
More information about the R-sig-ecology
mailing list