中文 | 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

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:

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

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

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

Aşağıdaki aplikasyonu yapılandırılmış popülasyonların büyüme özelliklerini incelemek için kullanın:

### 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"))


gauravsk/ecoevoapps documentation built on July 9, 2024, 9:37 p.m.