Matrix @ref(eq:matex)
\[\begin{equation} L = \begin{pmatrix} 0 & 0 & 0 & 0 & 0 & 0 & b & \\ s_{1} & 0 & 0 & 0 & 0 & 0 & 0 & \\ 0 & s_{2} & 0 & 0 & 0 & 0 & 0 & \\ 0 & 0 & s_{3} & 0 & 0 & 0 & 0 & \\ 0 & 0 & 0 & s_{4} & 0 & 0 & 0 & \\ 0 & 0 & 0 & 0 & s_{5} & 0 & 0 & \\ 0 & t_{1} & t_{2} & t_{3} & t_{4} & s_{6} & 0 & \\ \end{pmatrix} \end{equation}\]
Испльзуем матрицу для стабильной популяции H. mantegazzianum
mat_stable <- read.table("data/matrix_no_v6-v7.tsv", sep="\t", dec=",",
head=T)
mat_stable <- as.matrix(mat_stable)
print(as.table(mat_stable), zero.print='.')
## v1 v2 v3 v4 v5 v6 g
## A . . . . . . 173.000
## B 0.037 . . . . . .
## C . 0.839 . . . . .
## D . . 0.832 . . . .
## E . . . 0.705 . . .
## F . . . . 0.762 . .
## G . 0.008 0.053 0.162 0.066 0.022 .
Вычислим ее собственное число и собственные вектора
library("popdemo")
lambda <- eigs(mat_stable, what="lambda")
lambda <- round(lambda, 3)
ss <- eigs(mat_stable, what="ss")
ss <- round(ss ,3)
rv <- eigs(mat_stable, what="rv")
rv <- round(rv, 3)
Относительная скорость роста популяции (собственное число): λ = 1.058
Соотношение возрастных групп (v1…v6, g) ss = 0.896, 0.031, 0.025, 0.02, 0.013, 0.009, 0.005
Репродуктивная значимость возрастных групп (v1…v6, g) rv = 0.227, 6.503, 7.846, 7.61, 2.876, 0.773, 37.183
mat_no.v6.v7 <- read.table(“data/matrix_no_v6-v7.tsv”, sep=“, dec=”,“, head=T)
mat_no.v6.v7<-as.matrix(mat_no.v6.v7)
eigs(mat_no.v6.v7)
sens_mat_no.v6.v7 <- sens(mat_no.v6.v7) write.table(sens_mat_no.v6.v7, file=“results/sens_mat_no.v6.v7.tsv”, sep=“, row.names = F)
start.vector <- c(10, 0, 0, 0, 0, 0, 0)
project_mat_no.v6.v7<- project(mat_no.v6.v7, start.vector, time = 3)
vec(project_mat_no.v6.v7)[1:3, ]
mat_no.v6.v7 %*% start.vector
start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000
mat_no.v6.v7 %*% start.vector
n = 15
rslt_mat <- as.matrix(start.vector)
for(y in 1:n){ cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) }
project_mat_no.v6.v7<- project(mat_no.v6.v7, start.vector, time = 15)
for(k in 1:16){ test <- vec(project_mat_no.v6.v7)[k:k, ] -
rslt_mat[,k]
print(test) }
n = 15
rslt_mat <- as.matrix(start.vector)
for(y in 1:n){ rslt_mat[7,y] <- 0 cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) } # Подведем итоги. На какой год сумма особей всех групп станет равно 0? simulated_m <- as.data.frame(t(rslt_mat)) colnames(simulated_m) <- c(‘v1’, ‘v2’, ‘v3’, ‘v4’, ‘v5’, ‘v6’, ‘g’)
sum_all_stages <- simulated_m %>% mutate(sumVar = rowSums(.[1:7]))
yr <- as.numeric(rownames(sum_all_stages))
sum_all_stages <- cbind.data.frame(yr, sum_all_stages$sumVar) colnames(sum_all_stages) <- c(‘yr’, ‘N’)
ggplot(sum_all_stages, aes(x = yr, y = N)) + geom_line() + geom_point() #
kill_qual_options <- c(0.01, 0.01)
n = 100 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { kq <- sample(kill_qual_options,1) rslt_mat[7,y] <- rslt_mat[7,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} y = y + 1 } # Подведем итоги. На какой год сумма особей всех групп станет равно 0? simulated_m <- as.data.frame(t(rslt_mat)) colnames(simulated_m) <- c(‘v1’, ‘v2’, ‘v3’, ‘v4’, ‘v5’, ‘v6’, ‘g’)
sum_all_stages <- simulated_m %>% mutate(sumVar = rowSums(.[1:7]))
yr <- as.numeric(rownames(sum_all_stages))
sum_all_stages <- cbind.data.frame(yr, sum_all_stages$sumVar) colnames(sum_all_stages) <- c(‘yr’, ‘N’)
ggplot(sum_all_stages, aes(x = yr, y = N)) + geom_line() + geom_point() #
start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000
kill_qual_options <- seq(0, 0.5, 0.01)
for(kq in kill_qual_options){ n = 150 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { rslt_mat[7,y] <- rslt_mat[7,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} } if(kq == 0){ years_to_kill_all <- y } else{ years_to_kill_all <- append(years_to_kill_all, y) } }
sim_res <- cbind.data.frame(kill_qual_options, years_to_kill_all)
ggplot(sim_res, aes(x = kill_qual_options, y = years_to_kill_all)) + geom_line(size = 2) + geom_point(size = 4) + labs( x = “Доля выживших генеративных растений”, y = “Количество лет” ) + theme_linedraw( base_family = “Times New Roman”, base_size = 36, )
start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000
kill_qual_options <- seq(0, 0.5, 0.01)
for(kq in kill_qual_options){ n = 1000 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { rslt_mat[3,y] <- rslt_mat[3,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} } if(kq == 0){ years_to_kill_all <- y } else{ years_to_kill_all <- append(years_to_kill_all, y) } }
sim_res <- cbind.data.frame(kill_qual_options, years_to_kill_all)
ggplot(sim_res, aes(x = kill_qual_options, y = years_to_kill_all)) + geom_line(size = 2) + geom_point(size = 4) + # xlim(0, 0.18) + labs( x = expression(paste(‘Доля выживших v’[2],’ растений’)), y = “Количество лет” ) + theme_linedraw( base_family = “Times New Roman”, base_size = 36, ) # —————
start.vector <- c(173, 6, 5, 4, 3, 2, 1) start.vector <- start.vector * 1000
kill_qual_options <- seq(0, 0.5, 0.01)
for(kq in kill_qual_options){ n = 1000 rslt_mat <- as.matrix(start.vector) for(y in 1:n) { rslt_mat[1:7,y] <- rslt_mat[1:7,y] * kq cur_vector <- mat_no.v6.v7 %*% rslt_mat[,y] rslt_mat <- cbind(rslt_mat, cur_vector) s_a <- sum(cur_vector) if(s_a < 1){break} } if(kq == 0){ years_to_kill_all <- y } else{ years_to_kill_all <- append(years_to_kill_all, y) } }
sim_res <- cbind.data.frame(kill_qual_options, years_to_kill_all)
ggplot(sim_res, aes(x = kill_qual_options, y = years_to_kill_all)) + geom_line(size = 2) + geom_point(size = 4) + xlim(0, 0.2) + ylim(0, 8) + labs( x = expression(paste(‘Доля выживших растений’)), y = “Количество лет” ) + theme_linedraw( base_family = “Times New Roman”, base_size = 36, ) # ————— #
```