For vi er legion.
En bestand er sjeldent alene. Man finner ofte flere bestander av samme art spredt utover landskapet. Noen bestander er store, andre små. Noen ligger tett sammen, andre ligger mer isolert. Felles kalles disse bestandene (populasjonene) for en metapopulasjon (Levins (1969), Levin (1970)), eller ‘populasjon av populasjoner.’ Hvor landskapet mellom bestandene blir omtalt som ‘matrisen.’
Figure 1: Øyene langs kysten av Lovund i Nordland er habitat hvor fastlandsarter som vånd vil kunne danne bevege seg mellom og danne bestander. Antallet og hvor man finner individ vil variere med arealet og avstanden mellom øyene.
Hvis en ser \(N\) bestander som kan finnes på \(T\) forskjellige steder (habitat) i landskapet så vil \(x\) antall av bestandene bli utryddet hvert år (utryddelsesrate), mens \(m'\) nye bestander etableres hvert år (immigrasjonsrate). Noen habitat har bestander hvert år, mens andre habitat har mer flyktige bestander som opptrer bare noen år om annen.
Endring i antall bestander hvert år (\(t\)) kan da beskrives som
\[\begin{equation} \frac{dN}{dt} = m'N(T-N)-XN \tag{1} \end{equation}\]
Hvis en så setter \(p = N/T\) hvor \(p\) er andelen av områder med en bestand , og \(m = m'T\), vil gjøre likningen over til
\[\begin{equation} \frac{dp}{dt} = mp(1-p) - xp \tag{2} \end{equation}\]
som beskriver endringen i andelen av områder med en bestand per år. Hvis endringen er 0, altså systemet er stabilt, vil andelen bebodde habitat være:
\[\begin{equation} \hat{p} = 1-x/m \tag{3} \end{equation}\]
Disse formlene er lik noen av formlene man også bruker for å beskrive bestandsvekst (logistisk vekst) hvor formel (3) tilsvarer bæreevnen i logistisk vekst.
Matrisen, området mellom bestandene, kan også være havet og områdene vi ser på være faktiske øyer. Og vi ser ikke på om et området har en bestand eller ikke, men hvor mange arter som finnes der. Vi snakker da om øybiogeografi (MacArthur and Wilson (2016)). I øybiogeografi er antall arter på en øy avhengig av:
Avstand til fastlandet (hvor en antar at alle aktuelle arter finnes): jo lengre unna øya er fastlandet dess færre arter (2).
Størrelsen på øya: jo større øya er dess flere arter (2).
Tid isolert: jo kortere tid øya har vært isolert fra fastlandet dess flere arter har den.
plot(seq(0, 20, by = 2), type = "l", lty = 2, xlab = "Antall arter", ylab = "Innvandringer/Utryddelser", col = "turquoise")
lines(seq(0, 8, by = .8), col = "turquoise")
lines(seq(8, 0, by = -.8), col = "coral")
lines(seq(18, 0, by = -1.8), lty = 2, col = "coral")
text(x = 2, y = 8, "Fjernt")
text(x = 3, y = 16, "Nært")
text(x = 9, y = 8, "Stor øy")
text(x = 8, y = 16, "Liten øy")
Figure 2: Hvordan antall inndvandringer og utvandringer er avhengig av avstand til fastland og arealet.
Hvis en kan velge blant \(P\) arter på fastlandet vil en øy på et gitt tidspunkt t ha S antall arter (gitt invasjonsrate \(i_{\alpha}\) og utryddelsesrate \(e_{\alpha}\) for art \(\alpha\), Simberloff and Wilson (1970)).
\[ S(t) = \sum_{\alpha = 1}^{P} \frac{i_{\alpha}}{i_{\alpha} + e_{\alpha}}(1-e^{-(i_{\alpha}+e_{\alpha})t}) \] Per år så vil antall arter på en øy (\(S_{s}\)) kunne forandre seg ut fra \[\frac{dS_s}{dt} = i(P - S_s) - eS_s \]
En vil så kunne se hvordan immigrasjon- og utryddelsesraten (hhv. \(I(t)\) og \(E(t)\)) endrer seg over tid. Hvor \(S_{\alpha}(t)\) er lik 1 hvis arten \(\alpha\) er tilstede på øya ved tidspunkt \(t\), og 0 ellers. Over tid vil disse kunne gå mot stabile verdier (3).
\[ I(t) = \sum_{\alpha = 1}^{P} i_{\alpha}- \frac{i_{\alpha}^{2}}{i_{\alpha} + e_{\alpha}}(1-e^{-(i_{\alpha}+e_{\alpha})t}) = \sum_{\alpha = 1}^{P} i_{\alpha} - i_{\alpha}S_{\alpha}(t) \]
\[ E(t) = \sum_{\alpha = 1}^{P} i_{\alpha}- \frac{i_{\alpha}e_{\alpha}}{i_{\alpha} + e_{\alpha}}(1-e^{-(i_{\alpha}+e_{\alpha})t}) = \sum_{\alpha = 1}^{P} e_{\alpha}S_{\alpha}(t) \]
# install package from http://cran.nexr.com/web/packages/island/index.html
i_rates = rexp(n = 10, rate = 1.2)
e_rates = rexp(n = 10, rate = .9)
idx = seq(from = 0, to = 5, by = .1)
Ss = sapply(idx, function(x){
sum((i_rates/(i_rates+e_rates))*(1 - exp(-(i_rates+e_rates)*x)))
})
It = sapply(idx, function(x){
sum(i_rates-(i_rates^2/(i_rates+e_rates))*(1 - exp(-(i_rates+e_rates)*x)))
})
Et = sapply(idx, function(x){
sum(((i_rates*e_rates)/(i_rates+e_rates))*(1 - exp(-(i_rates+e_rates)*x)))
})
par(mfrow = c(3,1), omi = c(0,0,0,0), mar = c(5,5,0,0), bty = "L")
plot(It~idx, xlab = "Tidssteg", ylab = "Antall nye arter per tidssted", type = "l")
plot(Et~idx, xlab = "Tidssteg", ylab = "Antall tapte arter per tidssteg", type = "l")
plot(Ss~idx, xlab = "Tidssteg", ylab = "Antall arter på øya", type = "l")
Figure 3: Hvordan systemet vil konvergere til stabile verdier over tid.
Levin (1970) antok at 1) alle habitat er like og derfor lik migrasjonsrater til og fra alle habitat, og 2) at habitat er enten bebodd eller ubebodd. Men alle habitat er ikke like: noen er små, store gode, dårlige, nærme eller fjernt unna. Dette vil igjen påvirke hvor mange individ som migrerer mellom habitat, ikke bare hvorvidt en øy er bebodd eller ikke. Hanski (1994) viser hvordan vi kan ta hensyn til dette (kan også anbefale å lese Hanski and Ovaskainen (2000)).
Man antar utryddelsesraten synker dess større habitatet er, \(E_{i} = \frac{e}{A_{i}^{x}}\). Mindre habitat har mindre bestander som lettere kan bli utryddet av rovdyr eller andre tilfeldigheter. Mens immigrasjonsraten (\(S_{i}\)) er avhengig av habitatene omkring. Immigrasjonsrate er avheging av om det er individ der (\(p_{j}\)), og øker med størrelsen (\(A_{j}\)) til habitatene rundt, men synker med økende avstand (\(d_{ij}\)) til de: \(S_{i} = c \sum_{j = 1}^{N} = p_{j}A_{j}e^{(-\alpha d_{ij})}\)1. Med det utgangspunktet så kan vi se på hvordan en metapopulasjon oppfører seg.
Den virkelige verden er ikke et tilfeldig utvalg. Den har kanskje kommet dit som en rekke av tilfeldige hendelser, men hvor den stopper er ikke tilfeldig. Slik at en kan ikke velge hva som helst av verdier for øystørrelse, avstander og forvente at metapopulasjonen vil eksistere over tid. Som er hva vi ser rundt oss mesteparten av tiden. Slik at jeg måtte leke litt rundt for å finne ut hvilke verdier vi må jobbe med. Trykk ‘Show code’ for å se koden hvor vi leter fram til “fornuftige” utvalg av parameterverdier å velge blant.
library(ggplot2);library(ggExtra);library(data.table)
ParameterSpace = expand.grid(nIterations = 1:3,
RangeØyer = seq(40,60,length.out = 1),
RangeStartProp = seq(.2,.4,length.out = 3),
RangeLandskap = seq(3.1,3.7,length.out = 3),
RangeKonstantC = seq(.45,.75,length.out = 3),
RangeKonstantE = seq(75,100,length.out = 5))
ParameterSpace$SnittPrevalens = NA
ParameterSpace$SdPrevalens = NA
for(i in 1:nrow(ParameterSpace)){
print(paste(i , "av", nrow(ParameterSpace)))
# Antall øyer/habitat i systemet
nØyer = ParameterSpace$RangeØyer[i] #i
# lengde på tidsserie
tmax = 25
# Sett et frø for utgangspunkt
#set.seed(999)
# Tilfeldig antall øyer er bebodd, og tilfeldig hvilken av disse
#AntallBebodd = sample(1:nØyer,1)
AntallBebodd = ParameterSpace$RangeStartProp[i]*nØyer #i
Bebodd = sample(1:nØyer,AntallBebodd)
Tilstede = rep(0, nØyer)
Tilstede[Bebodd]<-1
TidsserieTilstede = matrix(rep(rep(NA, nØyer), tmax), ncol = nØyer)
TidsserieTilstede[1,]<-Tilstede
TidsserieKoloniseringsrater = matrix(rep(rep(NA, nØyer), tmax), ncol = nØyer)
TidsserieKoloniseringsrater[1,]<-0
# tilfeldig plassering av øyene
ArenaStørrelse = ParameterSpace$RangeLandskap[i]
xPos = runif(n = nØyer, min = 0, max = ArenaStørrelse)
yPos = runif(n = nØyer, min = 0, max = ArenaStørrelse)
# Tilfeldig størrelse
ØyStr = rlnorm(n = nØyer, meanlog = .1, sdlog = .1) #Ai
# Regn ut mellom-øy avstand
MellomØyAvstand = dist(cbind(xPos, yPos), diag = T, upper = T) # dij
Alpha = -1#1/mean(MellomØyAvstand)
# Konstanter
c_konstant = ParameterSpace$RangeKonstantC[i]
e_konstant = ParameterSpace$RangeKonstantE[i]
# Utryddelsesrater er konstant over tid
UtryddelsesRateØy_i = e_konstant/ØyStr
# fra Hanski, Ilkka, et al. "The quantitative incidence function model and persistence of an endangered butterfly metapopulation." Conservation Biology 10.2 (1996): 578-590.
ØystrEffekt = 0.952
muTick = 0.158
AjAi = sapply(ØyStr, function(x) x*ØyStr)
mij = exp(-Alpha*as.matrix(MellomØyAvstand))*AjAi # number of immigrants
# Tidssteg
t = 2
while(t< ){
KoloniseringsRateØy_i = sapply(1:nØyer, function(i){
c_konstant*sum(Tilstede[-i]*ØyStr[-i]*
exp(-Alpha*as.matrix(MellomØyAvstand)[-i,i]))}) # Si
TidsserieKoloniseringsrater[t,]<-KoloniseringsRateØy_i
# Sannsynligheten for bebodd øy
Pi = KoloniseringsRateØy_i/(KoloniseringsRateØy_i + UtryddelsesRateØy_i) # Også kjent som Ji
#Pi = 1/(1+(muTick/(KoloniseringsRateØy_i*ØyStr^ØystrEffekt)))
Kolonisert = sapply(Pi, function(x) sample(0:1, 1, prob = c(1-x,x)))
# Oppdater bebodd-status
Tilstede<-Kolonisert
TidsserieTilstede[t,]<-Tilstede
# Oppdater tidssteg
t = t+1
}
ParameterSpace$SnittPrevalens[i] = median(rowMeans(TidsserieTilstede), na.rm = T)
ParameterSpace$SdPrevalens[i] = sd(rowMeans(TidsserieTilstede), na.rm = T)
}
# library(ggplot2);library(ggExtra);library(gridExtra)
p1 = ggplot()+
geom_point(mapping = aes(x = xPos, y = yPos, size = ØyStr), pch = 21, show.legend = FALSE)+
ggtitle(paste("Utgangstetthet:", mean(TidsserieTilstede[1,])))
p2 = ggplot()+
geom_line(mapping = aes(x = 1:tmax, y = rowMeans(TidsserieTilstede)))+
ylab("Andel bebodde") + ylab("Tidssteg")
grid.arrange(p1, p2, nrow = 2)For pedagogikkens skyld så viser vi i figur 4 et system av habitat med nogenlunde stabile dynamikker, men dette er som sagt ikke alltid tilfelle.
library(ggplot2);library(ggExtra);library(data.table)
# Antall øyer/habitat i systemet
nØyer = 40 #i
# lengde på tidsserie
tmax = 500
# Sett et frø for utgangspunkt
#set.seed(999)
# Tilfeldig antall øyer er bebodd, og tilfeldig hvilken av disse
#AntallBebodd = sample(1:nØyer,1)
AntallBebodd = ceiling(nØyer*.2)
Bebodd = sample(1:nØyer,AntallBebodd)
Tilstede = rep(0, nØyer)
Tilstede[Bebodd]<-1
TidsserieTilstede = matrix(rep(rep(NA, nØyer), tmax), ncol = nØyer)
TidsserieTilstede[1,]<-Tilstede
TidsserieKoloniseringsrater = matrix(rep(rep(NA, nØyer), tmax), ncol = nØyer)
TidsserieKoloniseringsrater[1,]<-0
# tilfeldig plassering av øyene
ArenaStørrelse = 3.4
xPos = runif(n = nØyer, min = 0, max = ArenaStørrelse)
yPos = runif(n = nØyer, min = 0, max = ArenaStørrelse)
# Tilfeldig størrelse
ØyStr = rlnorm(n = nØyer, meanlog = .1, sdlog = .1) #Ai
# Ovaskainen 2003 brukes snitt = 1, og sd = 4
# Regn ut mellom-øy avstand
MellomØyAvstand = dist(cbind(xPos, yPos), diag = T, upper = T) # dij
Alpha = -1#1/mean(MellomØyAvstand)
# Konstanter
c_konstant = .6
e_konstant = 87
# l_ex = 0.8;l_em = .5; l_im = 0.5
# Utryddelsesrater er konstant over tid
UtryddelsesRateØy_i = e_konstant/ØyStr
# fra Hanski, Ilkka, et al. "The quantitative incidence function model and persistence of an endangered butterfly metapopulation." Conservation Biology 10.2 (1996): 578-590.
ØystrEffekt = 0.952
muTick = 0.158
AjAi = sapply(ØyStr, function(x) x*ØyStr)
mij = exp(-Alpha*as.matrix(MellomØyAvstand))*AjAi # number of immigrants
#print(eigen(mij)$values[1])
# Tidssteg
t = 2
while(t<tmax){
KoloniseringsRateØy_i = sapply(1:nØyer, function(i){
c_konstant*sum(Tilstede[-i]*ØyStr[-i]*
exp(-Alpha*as.matrix(MellomØyAvstand)[-i,i]))
}) # Si
TidsserieKoloniseringsrater[t,]<-KoloniseringsRateØy_i
# Sannsynligheten for bebodd øy
Pi = KoloniseringsRateØy_i/(KoloniseringsRateØy_i + UtryddelsesRateØy_i) # Også kjent som Ji
#Pi = 1/(1+(muTick/(KoloniseringsRateØy_i*ØyStr^ØystrEffekt)))
Kolonisert = sapply(Pi, function(x) sample(0:1, 1, prob = c(1-x,x)))
# Oppdater bebodd-status
Tilstede<-Kolonisert
TidsserieTilstede[t,]<-Tilstede
# Oppdater tidssteg
t = t+1
}
library(ggplot2);library(ggExtra);library(gridExtra)
p1 = ggplot()+xlab("Koordinat x")+ylab("Koordinat y")+
geom_point(mapping = aes(x = xPos, y = yPos, fill = colMeans(TidsserieTilstede, na.rm = T), size = ØyStr), pch = 21, show.legend = F)+theme_cowplot()
p2 = ggplot()+
geom_line(mapping = aes(x = 1:tmax, y = rowMeans(TidsserieTilstede)))+
ylab("Andel bebodde habitat")+xlab("Tidssteg")+theme_cowplot()
grid.arrange(p1, p2, nrow = 3,
layout_matrix = cbind(c(1,1,1,1,2,2), c(1,1,1,1,2,2)))
Figure 4: Populasjonene er spredt utover landskapet, og migrasjonen mellom de er avengig av arealet og avstanden til populasjonene rundt. Trykk Show code over for parameterverdier for simuleringen.
Metapopuasjonsteori er blitt brukt til å finne ut hvordan bestander av sommerfuglen prikkrutevinge (Melitaea cinxia) på øyene i Åland svinger fra år til år (Hanski et al. (1996)). Her beveger den seg mellom øyer og mellom de tørre blomsterengene som den trives i.
I den virkelige verden finnes det også gode og dårlige år. Slike tilfeldigheter (som skjer innenfor et visst omfang) kalles miljøstokastisitet. Miljøstokastisitet rammer alle bestander like mye - store bestander vil riktignok kunne tåle det bedre enn mindre bestander.
Habitatstørrelsen \(A_{j}\) i forrige del kan også tolkes som habitatkvalitet. Gode og dårlige år kan derfor simuleres ved å lage en normalfordeling rundt 0 hvor en trekker en verdi for hvert år, som så legges til alle habitatstørrelser. Gode år vil være positive verdier og øke habitatstørrelsen, mens dårlige år vil være negative verdier som reduserer habitatstørrelsen. Økende stokastisitet vil tilsi at en øker variansen på normalfordelingen man trekker ifra. Økende varians betyr at en vil få enda bedre gode år, men tilsvarende også enda verre dårlige år (figur 5).
På lang sikt har stokastisitet som regel negative konsekvenser for den langsiktig veksten for bestander. Og ja, klimaendringer med økende frekvens av ekstremvær betyr at det vil bli mer stokastisitet. Økende stokastisitet kan føre til at bestander går fra å være i vekst til å være i nedgang (figur 5).
library(data.table)
nSimulations = 100
ParameterSpace = expand.grid(nIterations = 1:nSimulations,
#RangeØyer = seq(40,60,length.out = 1),
RangeStartProp = seq(.35,.6,length.out = 1),
RangeLandskap = seq(3.4,3.7,length.out = 1),
RangeKonstantC = seq(.24,.75,length.out = 1),# .23->.24
RangeKonstantE = seq(150,100,length.out = 1),# 60->120
eNoise = seq(0,3,length.out = 4))
setorder(ParameterSpace, nIterations)
ParameterSpace$SnittPrevalens = NA
ParameterSpace$SdPrevalens = NA
ParameterSpace$MinPrevalens = NA
ParameterSpace$AndelUtvikling = NA
iteration = 0
RangeØyer = 40
nØyer = RangeØyer # ParameterSpace$RangeØyer[i] #i
TidsArray = array(rep(0, tmax*nØyer),
dim = c(tmax, nØyer, nrow(ParameterSpace)))
TidsserieKoloniseringsrater = array(rep(0, tmax*nØyer),
dim = c(tmax, nØyer, nrow(ParameterSpace)))
GeografiArray = array(rep(NA, 3*nØyer),
dim = c(3, nØyer, nrow(ParameterSpace)))
for(i in 1:nrow(ParameterSpace)){
#print(paste(i , "av", nrow(ParameterSpace)))
# Antall øyer/habitat i systemet
# lengde på tidsserie
tmax = 100
iteration <- ParameterSpace$nIterations[i]
AntallBebodd = ParameterSpace$RangeStartProp[i]*nØyer #i
set.seed(iteration) # slik at ulike miljøstøy-nivå vil testes på de samme øy-konfigurasjonene
Bebodd = sample(1:nØyer,AntallBebodd)
Tilstede = rep(0, nØyer)
Tilstede[Bebodd]<-1
TidsserieTilstede = matrix(rep(rep(NA, nØyer), tmax), ncol = nØyer)
TidsserieTilstede[1,]<-Tilstede
TidsArray[1,,iteration]<-Tilstede
TidsserieKoloniseringsrater[1,,iteration]<-Tilstede
# tilfeldig plassering av øyene
ArenaStørrelse = ParameterSpace$RangeLandskap[i]
set.seed(iteration) # slik at ulike miljøstøy-nivå vil testes på de samme øy-konfigurasjonene
xPos = runif(n = nØyer, min = 0, max = ArenaStørrelse)
set.seed(-iteration) # slik at ulike miljøstøy-nivå vil testes på de samme øy-konfigurasjonene
yPos = runif(n = nØyer, min = 0, max = ArenaStørrelse)
# Tilfeldig størrelse
set.seed(iteration) # slik at ulike miljøstøy-nivå vil testes på de samme øy-konfigurasjonene
ØyStr = rlnorm(n = nØyer, meanlog = .1, sdlog = .2) #Ai
GeografiArray[,,i]<-rbind(ØyStr, xPos, yPos)
# Regn ut mellom-øy avstand
MellomØyAvstand = dist(cbind(xPos, yPos), diag = T, upper = T) # dij
Alpha = -1#1/mean(MellomØyAvstand)
# Konstanter
c_konstant = ParameterSpace$RangeKonstantC[i]
e_konstant = ParameterSpace$RangeKonstantE[i]
eNoise = ParameterSpace$eNoise[i]
# Utryddelsesrater er konstant over tid
UtryddelsesRateØy_i = e_konstant/ØyStr
# fra Hanski, Ilkka, et al. "The quantitative incidence function model and persistence of an endangered butterfly metapopulation." Conservation Biology 10.2 (1996): 578-590.
# ØystrEffekt = 0.952
# muTick = 0.158
# AjAi = sapply(ØyStr, function(x) x*ØyStr)
# mij = exp(-Alpha*as.matrix(MellomØyAvstand))*AjAi # number of immigrants
# Tidssteg
t = 2
NoiseE = rnorm(n = tmax, sd = eNoise)
while(t<tmax){
KoloniseringsRateØy_i = sapply(1:nØyer, function(i){
Aj = ØyStr[-i]
Aj = Aj +NoiseE
c_konstant*sum(Tilstede[-i]*Aj*
exp(-Alpha*as.matrix(MellomØyAvstand)[-i,i]))}) # Si
TidsserieKoloniseringsrater[t,,i]<-KoloniseringsRateØy_i
# Sannsynligheten for bebodd øy
Pi = KoloniseringsRateØy_i/(KoloniseringsRateØy_i + UtryddelsesRateØy_i) # Også kjent som Ji
Pi = ifelse(Pi>1,1,ifelse(Pi<0,0,Pi))
Kolonisert = sapply(Pi, function(x) sample(0:1, 1, prob = c(1-x,x)))
# Oppdater bebodd-status
Tilstede<-Kolonisert
TidsserieTilstede[t,]<-Tilstede
TidsArray[t,,i]<-Tilstede
# Oppdater tidssteg
t = t+1
}
ParameterSpace$SnittPrevalens[i] = median(rowMeans(TidsserieTilstede), na.rm = T)
ParameterSpace$SdPrevalens[i] = sd(rowMeans(TidsserieTilstede), na.rm = T)
ParameterSpace$MinPrevalens[i] = min(rowMeans(TidsserieTilstede), na.rm = T)
ParameterSpace$AndelUtvikling[i] = coef(lm(rowMeans(TidsserieTilstede)~I(1:length(rowMeans(TidsserieTilstede)))))[2]
if(i==nrow(ParameterSpace)){
saveRDS(list(ParameterSpace = ParameterSpace,
Geografi = GeografiArray,
TidsArray = TidsArray,
TidsserieKoloniseringsrater = TidsserieKoloniseringsrater),
"ParameterSpace_MetaPopStoch.rds")
}
}
library(ggplot2);library(cowplot);library(scales);library(gridExtra)
p1 = ggplot(data = ParameterSpace, aes(y = MinPrevalens, x = eNoise, group = factor(eNoise)))+geom_boxplot()+theme_cowplot()+
theme(axis.title.x = element_blank(), axis.text.x = element_blank())+ylab("Andel\n(minimum)")
p2 = ggplot(data = ParameterSpace, aes(y = SnittPrevalens, x = eNoise, group = factor(eNoise)))+geom_boxplot()+theme_cowplot()+
theme(axis.title.x = element_blank(), axis.text.x = element_blank())+ylab("Andel\n(gj.snitt)")
p3 = ggplot(data = ParameterSpace, aes(y = AndelUtvikling*200, x = eNoise, group = factor(eNoise)))+geom_hline(yintercept = 0, linetype="dashed")+theme_cowplot()+
geom_boxplot()+ylab("Vekst \n (andel endring per år x 200)") + xlab("Miljøstokastisitet")#+
#scale_y_continuous(breaks = seq(-.2,.2,.1))+coord_cartesian(ylim = c(-0.1,0.1))
grid.arrange(p1,p2,p3)
Figure 5: Stokastisitet reduserer minimum og gjennomsnittlige andelen av habitat som over tid har en bestand, og kan forårsake negativ veksten i bebodde habitat. Den negative veksten vil til slutt føre til at metapopulasjonen vil dø ut.
Men hvilke habitat er viktige? Og hva kan vi gjøre for å styrke metapopulasjonen? Det er spørsmålet får vi gyve løs på senere.