Ta strona wykorzystuje ciasteczka ("cookies") w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Czy wyrażasz na to zgodę?

Czytaj więcej
< All Topics
Print

Zagęszczeniozależne mechanizmy regulacyjne

Geneza zagęszczeniozaleźności

 

W rzeczywistym środowisku nigdy prawdopodobieństwo śmierci i rozrodu nie jest takie samo. Przy wzroście liczebności populacji na jednego osobnika przypada mniej zasobów. Możemy spodziewać się wzrostu śmiertelności i spadku rozrodczości (albo przynajmniej zmiany prawdopodobieństwa jednego z tych zdarzeń). Schemat rozumowania wygląda tak:

Prawdopodobieństwo rozrodu maleje przy zmniejszaniu się zasobów przypadających na jednego osobnika.

Ilość zasobów przypadających na jednego osobnika maleje przy wzroście liczebności populacji.

Prawdopodobieństwo rozrodu maleje przy wzroście liczebności populacji.

 

 

Prawdopodobieństwo śmierci rośnie przy zmniejszaniu się zasobów przypadających na jednego osobnika.

Ilość zasobów przypadających na jednego osobnika maleje przy wzroście liczebności populacji.

Prawdopodobieństwo śmierci rośnie przy wzroście liczebności populacji.

 

Jest to klasyczne założenie modeli zagęszczeniozależnych (tak naprawdę są to modele liczebnościozależne, ale brzmi to okropnie). Modele tego typu dominują w ekologii i tylko niektórzy modelarze rozważają zasoby jako osobną wielkość zastępująca liczebność we wzorze na prawdopodobieństwa, a jednocześnie cechującą się różnie definiowanym odnawianiem. W naszych rozważaniach ograniczymy się do modeli zagęszczeniozależnych.

 

 

Matematyczny opis zageszczeniozaleźności

 

Zakładamy, że prawdopodobieństwa śmierci i rozrodu są funkcjami liczebności populacji. Jaką jednak funkcję wybrać do opisu tego zjawiska?

Typowe dla fizyków podejście kazałoby w pierwszej kolejności analizować funkcje liniowe:

prawdopodobieństwo=a*N+b.Parametr a oznacza wtedy tempo zmian (wzrostu/spadku) prawdopodobieństwa przy wzroście liczebności. Dla prawdopodobieństwa rozrody byłaby to liczba ujemna, dla prawdopodobieństwa śmierci dodatnie. Parametr b oznacza prawdopodobieństwo przy minimalnej liczebności populacji. Matematyk natychmiast zauważy, że funkcje liniowe tylko dla pewnego ograniczonego przedziału liczebności przyjmują wartości z przedziału [0,1], które mogłyby być uznawane za prawdopodobieństwa.

Dla ekologów tego typu rozważania mają wyłącznie “akademicki” charakter. Ważne jest to, jak wyglądają zależności śmiertelności i rozrodczości od liczebności rzeczywistych populacji. Można je wyliczyć eksperymentalnie.

Załóżmy, że badany organizm może (ale nie musi) rozmnażać się tylko raz w okresie Δt i wtedy wydaje na świat jednego potomka. Zakładamy hodowle takich organizmów w akwariach, w których umieszczamy 10, 20, 30, 40, 50, 60, 70 i 80 organizmów populacji początkowej. Organizmy dokarmiamy wsypując do każdego akwarium dokładnie taką samą dawkę pokarmu. Hodowlę prowadzimy przez czas Δt i po tym czasie liczymy ile organizmów populacji początkowej przeżyło i ile podjęło rozród. Wyniki mogą wyglądać następująco:

Częstości śmierci i rozrodu są pewnymi zmiennymi losowymi, ale w dużym stopniu pokrywają się z prawdopodobieństwami tych zdarzeń. Biorąc pod uwagę, że liczba zdarzeń takich jak rozród, czy śmierć ma rozkład dwumianowy można powiedzieć, że częstości rozrodu i śmierci wahają się wokół prawdopodobieństw śmierci i rozrodu osobnika. Prawdopodobieństwa te rosną w miarę wzrostu liczebności populacji i najlepszym ich oszacowaniem byłaby jakaś regresja. Dla regresji liniowych łatwo jest uzyskać określone równania w wielu programach, także w arkuszu kalkulacyjnym.

Dla informatyka modelowanie przy funkcjach liniowych jest problematyczne – wymagałoby ograniczenia zbioru możliwych wartości parametrów służących do wyliczania prawdopodobieństw, a i tak przy stosowaniu losowych procedur nie ma gwarancji, że w pewnym momencie symulacji liczebność populacji stanie się zbyt duża, a wyliczone dla niej prawdopodobieństwa będą albo mniejsze od 0 albo większe od 1. Co wtedy ma zrobić program? By nie generować błędów, należałoby przerwać obliczenia. Nie oznaczałoby to nic znaczącego dla modelowanej populacji ponad to, że weszła ona w inny rodzaj mechanizmów regulacyjnych, których nie uwzględniono w modelu, więc symulacje przerwano. Lepszym sposobem jest zastosowanie regresji nieliniowych, a konkretnie wybieranie regresji z rodziny funkcji, których zbiór wartości zawiera się w przedziale [0,1].

 

 

Model najprostszej populacji z zageszczeniozależnym mechanizmem regulacyjnym

 

Załóżmy, że udało się nam ustalić za pomocą wyliczania regresji nieliniowych jakieś funkcje pr(N) i ps(N), których zbiór wartości przynajmniej dla liczb nieujemnych znajduje się w przedziale [0,1]. Pozwalają one na wyliczanie prawdopodobieństw śmierci i rozrodu w każdym kroku czasowym [t, t+1) na podstawie liczebności w chwili t (zawsze bierze się pod uwagę początek przedziału czasowego, bo to liczebność na początku tego przedziału oznacza jaka będzie dystrybucja zasobów w najbliższej przyszłości). Program symulujący najprostszą populację z zagęszczeniozależnym mechanizmem regulacyjnym wygląda następująco:

from random import random
N0=10
ar=-0.0091
br=1.0446
ass=0.0096
bs=-0.0072
czas=100
lpow=10
tekst=''
wyniki = open('wyniki.txt', 'w')

for pow in range(1,lpow+1):
    N=N0
    ostnr=N0
    t=0
    tekst=tekst + str(pow) + ", " + str(t) + ", " + str(N) + "\n"
    for t in range(1,czas+1):
        n=0
        pr=fr(N)
        ps=fs(N)
        if (pr<0 or pr>1):
            break
        if (ps<0 or ps>1):
            break
        for i in range(N):
            if random()<pr:
                n=n+1
            if random()<ps:
                pass
            else:
                n=n+1
        N=n
        if N>100000:
            break
        tekst = tekst + str(pow) + ", " + str(t) + ", " + str(N) + "\n"
open('wyniki.txt', 'a').write(tekst)
wyniki.close()

Skopiowanie go do IDLE Pythona i próba uruchomienia wygeneruje błędy z powodu braku wzoru dla funkcji fr() i fs(). I tu pojawia się problem nierozstrzygalny metodami eksperymentalnymi: jaką rodzinę funkcji wybrać do wyliczania regresji nieliniowych? Po pierwsze ograniczymy się do rodzin funkcji monotonicznych. Po drugie zastosujemy minimalną liczbę parametrów, a więc rodzin funkcji dwuargumentowych. Przykłady takich funkcji to:

Wykresy pokazane na rysunku zostały wygenerowane dla wielomianu w(N) = 0.005*N-3. Można w to miejsce wstawić dowolny wielomian, a cała funkcja będzie miała wartości w przedziale [0,1]. Funkcja exp( ) – to e( ). Funkcję arcus tangens (odwrotną do tangens) zapisuje się w Pythonie jako atan( ). Obie funkcje exp() i atan() należą do biblioteki math. Funkcja z podwójnym exp(-exp()) nosi nazwę funkcji Gompertza. Nie są to jedyne funkcje przyjmujące wartości w przedziale [0,1]. Jest ich wiele. Pomimo, że wyrażają się skomplikowanym wzorem, ich wyliczanie za pomocą komputera jest proste (wystarczy wpisać wzory i nazwy prawidłowo interpretowane przez Pythona lub inny program).

 

 

Metody wyliczania regresji nieliniowych

 

Poza wyborem rodziny funkcji mających wartości w przedziale [0,1] istnieje także problem metody szacowania parametrów regresji, czyli funkcji najlepiej dopasowanej do danych.

Regresja i linia trendu, najczęściej wybierane są z danej rodziny funkcji w oparciu o kryterium zwane metodą najmniejszych kwadratów. Oznacza to, że wielkości ∑(yi-pr(xi))2 (gdzie yi oznacza częstość rozrodu przy liczebności xi) oraz ∑(yi-ps(xi))2 (gdzie yi oznacza częstość śmierci przy liczebności xi) osiągają minimum. Dla wielu rodzin funkcji takie kryterium nie pozwala na wyprowadzenie wzorów dla parametrów ar, br oraz as i bs. Problem rozwiązywany jest na dwa sposoby:

1. Stosuje się przybliżone oszacowane parametrów regresji stosując metody numeryczne, z których najbardziej znane to metoda Gaussa-Newtona i Marquardta (obie dają ten sam wynik liczbowy o ile jest on prawidłowy). Obie wymagają dużo obliczeń (nawet napisanie programu wyliczającego takie parametry jest pracochłonne), ale na szczęście należą do standardów. W Internecie jest wiele darmowych programów pozwalających na ich wyliczenie.

2. Stosuje się tzw. linearyzację funkcji należących do danej rodziny, co oznacza w przypadku rozważanych trzech rodzin funkcji takie przekształcenia, aby uzyskać równość F(y)=ax+b.   Dla regresji logistycznych jest są to funkcje: ar*N+br=-log((1-pr)/pr) i as*N+bs=-log((1-ps)/ps)). Dla regresji arcustangensowych są to funkcje  ar*N+br=tan(pi*(pr-0.5)) i as*N+bs=tan(pi*(ps-0.5)). Dla regresji Gompertza są to funkcje  ar*N+br=-log(-log(pr)) oraz as*N+bs=-log(-log(ps)). Po takiej transformacji wartości pr i ps uzyskanych eksperymentalnie możemy wyliczać zwykłą regresję liniową między liczebnością populacji a uzyskanymi danymi.

W zależności od wyboru regresji i metody oszacowania jej parametrów dla takiego samego zestawu danych możemy uzyskać w sumie 16 różnych funkcji. Przykładowo dla danych pokazanych na początku rozdziału uzyskujemy następujące wartości.

Rodzaj regresji Metoda najmniejszych kwadratów Linearyzacja
ar br as bs ar br as bs
liniowe -0.0091 1.0443 0.0096 -0.0071     –     –     –     –
logistyczne -0.0438 2.6373 0.0468 -2.5115 -0.0462 2.8088 0.0447 – 2.3861
arcustangensowe -0.0398 2.4062 0.0437 -2.3590 -0.0578 3.578 0.0454 – 2.4683
Gompertza -0.0329 2.4004 0.0303 -1.2157 -0.0378 2.7051 0.0301 – 1.1555

Do szacowania nieliniowych regresji metodą najmniejszych kwadratów zastosowano procedury w programie SAS. Program ten operuje rozbudowanym algorytmem Marquardta, który w dużym stopniu uniezależnia otrzymywanie wyniku od wartości początkowych parametrów. Polecam go bo inne programy z reguły pokazują błędne wyniki, zwłaszcza dla regresji logistycznej.

Łatwo się przekonać, że wykresy wszystkich regresji nieliniowych między N a pr oraz wszystkich regresji między N a ps w dużym stopniu się pokrywają i nie różnią się zasadniczo od odpowiedniej regresji liniowej.

 

Zadania dla studentów

  • Przenieść kod programu najprostszej populacji z mechanizmem regulacyjnym do Pythona. Wprowadzać do niego różne wzory na prawdopodobieństwa rozrodu i śmierci. Uruchomić Pythona i poczekać na plik tekstowy ‘wyniki.txt’.
  • Przenieść wyniki do Excela lub arkusza kalkulacyjnego, tak by poszczególne wielkości (powtórzenie, czas, liczebność) były w osobnych kolumnach. Należy w tym celu uruchomić Excela lub Calca. Otworzyć nowy plik i wybrać opcję tekstowy. Otworzyć ‘wyniki.txt’. Pojawią się opcje umożliwiające rozdzielenie kolumn.
  • Liczebności populacji z kolejnych powtórzeń przenieść obok siebie (tak by określonemu momentowi czasowemu odpowiadało 10 różnych liczebności uzyskanych podczas 10 powtórzeń właśnie w tym momencie). Wykonać wykres zależności poszczególnych dynamik od czasu. Zatytułować go. Obowiązkowo podpisać osie.
  • Zmodyfikować kod programu, tak aby występowały w nim funkcje logistyczne z parametrami wyliczonymi metodą Marquardta. Oznacza to zmianę parametrów na wyliczone oraz zmianę kodu w jednym miejscu w dwóch linijkach, gdzie definiuje się pr i ps.
  • Wykonać program, przenieść dane do Excela lub arkusza kalkulacyjnego, zrobić wykres 10 dynamik liczebności. Zatytułować go “Wzory logistyczne, metoda Marquardta” lub bardziej szczegółowo, obowiązkowo podpisać osie.
  • Opisane operacje powtórzyć dla parametrów uzyskanych poprzez linearyzację, a następnie inne rodziny funkcji.
  • Ocenić różnice między wykresami zwracając uwagę na to, wokół jakich wartości wahają się dynamiki, jaka jest amplituda tych wahań oraz czas po jakim następuje wzrost populacji, a następnie już tylko wahania wokół jednej wartości. Można to ocenić wizualnie albo wymyślając jakąś odpowiednią charakterystykę liczbową.
  • Odpowiedzieć na pytania:
  • Czy jest konieczne stosowanie jakiś wzorów na prawdopodobieństwo rozrodu i śmierci osobnika w modelu populacji?
  • Czy wyniki modelowania zależą od rodziny funkcji jaką założono przy wyliczaniu regresji między liczebnością a prawdopodobieństwem rozrodu albo śmierci osobnika?
  • Czy stosowanie innych rodzin funkcji tworzy nam inny model populacji (modele liniowe, logistyczne, arcustangensowe, Gompertza)?
  • Co tracimy ograniczając się do tworzenia tylko modeli logistycznych? Jakie warunki powinny spełniać parametry ar, br, as i bs aby uzyskiwać modele w miarę trwałych populacji? .

 

Spis treści