中文 | Español | English | português | Turkish
# Set default parameters for R chunks in Rmd knitr::opts_chunk$set(echo = FALSE, warning = FALSE) # Load the ecoevoapps package library(ecoevoapps) library(ggplot2)
Bazı popülasyonları modellemenin en efektif yöntemi bireyleri farklı yaş gruplarına kategorize etmektir (Tenhumberg, 2010). Bu şekilde yapılandırılmış popülasyonların nüfus büyümesi yaş grupları arası geçiş oranlarına bağlıdır. Örnek olarak, jüvenilden genç yetişkine geçen bireylerin hayatta kalma olasılığı genç yetişkinlerden olgun yetişkinlere geçen bireylerin hayatta kalma olasılığından farklı olabilir. Bu tip popülasyonların dinamiklerini yaş grupları arası hayatta kalma olasılıklarını ve her yaş grubundaki bireylerin nüfus büyümesine doğumla ne kadar katkı sağladıklarını bilerek modelleyebiliriz.
Leslie matrisi yaş gruplarına göre hayatta kalma olasılığını ve doğurganlığını organize etmenin temel yoludur. Bu matris $NxN$ boyutlarında bir matris olup, $N$ popülasyon döngüsündeki toplam yaş grubu sayısını ifade eder. Matrisin her elemanı her yaş grubu sütunundaki bireylerin her yaş satırına nasıl katkı sağladığını kaydeder. Mesela, ikinci sütun / ilk satır bize ikinci yaş grubundaki bireylerin birinci yaş grubuna nasıl katkı sağladığını belirtir.
Hayatta kalma olasılığı ve doğurganlığı dikkate almak icin temel bir yol olmasına ek olarak, matrisin üç önemli özelliği vardır:
Popülasyonun bir sonraki adımdaki (adım = $t+1$) durumunu simüle etmek icin, Leslie matrisimiz, popülasyonun başlangıç nüfusunu (adım = $t$) iceren bir matrisle çarpmamız yeterlidir.
Leslie matrisin en büyük özdeğeri $\lambda$dır, popülasyonun asimptotik büyüme oranını belirtir. $\lambda < 1$ olduğu takdirde popülasyon tükenmeye ilerler, $\lambda > 1$ popülasyon üstel büyür, ve $\lambda = 1$ popülasyon nüfusu değişmez.
En büyük özdeğere ait olan özvektör stabil popülasyon yapılanmasını verir (popülasyon denge durumuna ulaştığında her yaş grubunda yer alan birey sayısı arasındaki oran).
### APP fluidPage( ## INPUT sidebarPanel( # Initial sizes numericInput(inputId = "N1", label = "Initial number of individuals at age 1", min = 0, max = NA, value = 100), numericInput(inputId = "N2", label = "Initial number of individuals at age 2", min = 0, max = NA, value = 100), numericInput(inputId = "N3", label = "Initial number of individuals at age 3", min = 0, max = NA, value = 100), # Leslie matrix numericInput(inputId = "F1", label = "Fecundity at age 1", min = 0, max = NA, value = 0), numericInput(inputId = "F2", label = "Fecundity at age 2", min = 0, max = NA, value = 8), numericInput(inputId = "F3", label = "Fecundity at age 3", min = 0, max = NA, value = 1), sliderInput(inputId = "S12", label = "Survival from age 1 to 2 (%)", min = 1, max = 100, value = 40), sliderInput(inputId = "S23", label = "Survival from age 2 to 3 (%)", min = 0, max = 100, value = 80), width=4), ## OUTPUT mainPanel( tabsetPanel(type = "pills", tabPanel("Popülasyon diyagramı ve Leslie matrisi", renderPlot({ diagr() }, width = 500), br(), column(width = 5, style='border-right: 0.02px solid grey', br(), h4("Leslie matrix"), renderTable({ Leslie_to_print() })), column(width = 7, h4("Eigen analysis"), em(strong("Asymptotic population growth rate (lambda)")), renderText({ eigenval() }), br(), # br(), br(), em(strong("Stable population structure")), renderTable({ eigenvec() }) )), tabPanel("Popülasyon dinamikleri (gidişatları)", h4("Population trajectory of each age class"), renderPlot({ plot_pop_trajectory() }), h4("Trajectory of the age distribution"), renderPlot({ plot_pop_agedist() }), h4("Trajectory of the overall populatin growth rate"), renderPlot({ plot_pop_lambda() })) ) ) ) ## Leslie matrix Leslie_matrix <- reactive({ matrix( c(input$F1,input$F2, input$F3, input$S12/100,0,0, 0, input$S23/100,0), ncol = 3, byrow = T ) }) Leslie_to_print <- reactive({ ll <- Leslie_matrix() colnames(ll) <- paste("Age",1:3) ll }) init <- reactive({ c(input$N1,input$N2,input$N3) }) ## Largest eigenvalue eigenval <- reactive({ paste0("First Eigenvalue of the Leslie matrix = ",round(eigen(Leslie_matrix())$values,2)[1]) }) ## Eigenvector corresponding to largest eigenvalue tmp <- reactive({ round(eigen(Leslie_matrix())$vectors[,1]*100/ sum(eigen(Leslie_matrix())$vectors[,1])) }) eigenvec <- reactive({ matrix( c("Eigenvector", round(eigen(Leslie_matrix())$vectors[,1],2), "%", tmp()[1], tmp()[2], tmp()[3]), ncol=4, byrow=T, dimnames = list(NULL, c(" ","Age 1","Age 2", "Age 3")) ) }) diagr <- reactive({ plot_leslie_diagram(Leslie_matrix()) }) # Simulation plots pop_trajectory <- reactive({ run_structured_population_simulation(leslie_mat = Leslie_matrix(), init = init(), time = 1000) }) plot_pop_trajectory <- reactive({ plot_structured_population_size(pop_trajectory()) + labs(title = "") + theme(legend.text = element_text(size = 13), legend.title = element_text(size = 13)) }) plot_pop_agedist <- reactive({ plot_structured_population_agedist(pop_trajectory(), leslie_mat = Leslie_matrix())+ labs(title = "") + theme(legend.text = element_text(size = 13), legend.title = element_text(size = 13), plot.caption = element_text(size = 13)) }) plot_pop_lambda <- reactive({ plot_structured_population_lambda(pop_trajectory(), leslie_mat = Leslie_matrix()) + labs(title = "") + theme(legend.text = element_text(size = 13), legend.title = element_text(size = 13), plot.caption = element_text(size = 13)) })
suppressWarnings(ecoevoapps::print_app_footer(language = "tr"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.