Metapopulasjoner

Økologi Økosystem

For vi er legion.

Endre Grüner Ofstad
10-16-2022

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.’

Show code
library(ggmap)
library(mapproj)
library(cowplot)
aa = ggmap(get_map(c(left = 12.43, right = 12.55,bottom = 66.35, top = 66.40)))+
  xlab("Lengdegrad")+ ylab("Breddegrad")+theme_cowplot()
aa
Ø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.

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.

Øyer

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:

Show code
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")
Hvordan antall inndvandringer og utvandringer er avhengig av avstand til fastland og arealet.

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) \]

Show code
# 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")
Hvordan systemet vil konvergere til stabile verdier over tid.

Figure 3: Hvordan systemet vil konvergere til stabile verdier over tid.

Alt er en plass

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.

Show code
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.

Show code
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)))
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.

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 gode og onde dager

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).

Show code
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)
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.

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.

Hanski, Ilkka. 1994. “A Practical Model of Metapopulation Dynamics.” Journal of Animal Ecology, 151–62.
Hanski, Ilkka, Atte Moilanen, Timo Pakkala, and Mikko Kuussaari. 1996. “The Quantitative Incidence Function Model and Persistence of an Endangered Butterfly Metapopulation.” Conservation Biology 10 (2): 578–90.
Hanski, Ilkka, and Otso Ovaskainen. 2000. “The Metapopulation Capacity of a Fragmented Landscape.” Nature 404 (6779): 755–58.
Levin, Simon A. 1970. “Community Equilibria and Stability, and an Extension of the Competitive Exclusion Principle.” The American Naturalist 104 (939): 413–23.
Levins, Richard. 1969. “Some Demographic and Genetic Consequences of Environmental Heterogeneity for Biological Control.” American Entomologist 15 (3): 237–40.
MacArthur, Robert H, and Edward O Wilson. 2016. The Theory of Island Biogeography. Princeton university press.
Simberloff, Daniel S, and Edward O Wilson. 1970. “Experimental Zoogeography of Islands. A Two-Year Record of Colonization.” Ecology 51 (5): 934–37.

  1. Vi antar stort antall øyer, og at Allee-effekten er neglisjerbar og ser bort fra \(y^2\), Hanski (1994)↩︎

References