2024年6月4日

捉放法要標記多少才會準確?用js程式進行模擬

 你有沒有好奇過進行捉放法的活動時,到底要標記多少才會準確啊?

為了解答這個疑惑,我就寫了一支程式來模擬看看吧。

https://chihhsiangchien.github.io/capture-recapture-inquiry/index.html


輸入參數有三項:族群實際數目、取樣次數、取樣大小,按下執行的按鈕之後,

程式自動會進行捉放法,假設族群實際數目有200隻,取樣5次,取樣大小50的設定,那麼就會先進行標記1隻的情況,一共做了5次捉放法,每次取樣都抓50隻來估計族群大小。然後再做標記2隻的情況、標記3隻的情況,一直到標記200隻的情況。

做出來的結果就如第一張圖,標記數量太少,越容易低估或高估。舉例來說明明族群有200隻,但是你標記1隻後,取樣50隻發現有1隻做標記,就會估算出族群數量為50隻。或是當標記20隻,但是你取樣50隻,只有1隻作記號,那麼就會估算成1000隻。從下圖可以見到大概在標記60隻以下經常會看到估算過高或過低的情形,你也許會認為那就只要標記實際族群的某個比例就可以算準了,但是那前提是你得先知道實際族群是多少。你都已經知道實際族群了,何需再用捉放法呢?

所以第一張圖頂多就是讓你知道標記要多一些,才會比較準。




接下來第二和第三張圖,是用平均數來估計族群大小,比方說取樣5次做平均。右邊那張圖的縱座標是對數顯示

第四和第五張圖則是用中位數來估計

最後一張圖則是同時將平均數的估計數和中位數的估計數放在一起比較。以預設的參數來進行模擬,會發現這種情況的中位數的估計誤差在多數的情況都比平均數來得小,因為標記數目太小容易產生極端值,而這正是中位數可以避免這樣的情況。