knitr::opts_chunk$set(echo = TRUE, message = FALSE,
warning = FALSE)
Проблема динамики численности мелких млекопитающих занимает центральное место в популяционных исследованиях. Однако закономерности и причины изменения обилия насекомоядных изучены в меньшей степени, чем для грызунов. Территория Восточно-Уральского радиоактивного следа (ВУРСа) является природным полигоном с техногенным загрязнением, на которой актуально изучение состояния и путей адаптации популяций животных.
Отловы животных проводились сотрудниками лаборатории эволюционной экологии ИЭРиЖ на импактном (район старой лежневой дороги в головной части следа) и условно контрольном (окр. пос. Метлино, юго-восточный берег оз. Кожакуль) участках по стандартной методике с использованием ловушек-плашек.
Описать видовой состав и динамику численности насекомоядных (бурозубок) за 20-летний период наблюдений с 2003 по 2023 гг. на территории Восточно-Уральского радиоактивного следа.
library(readxl)
S <- read_excel("Sorex.xlsx")
formattable::formattable(S)
| year | Control | Impact | C_lovushka | I_lovushka | C_male | C_female | I_male | I_female | C_S.araneus | I_S.araneus | C_S.caec. | I_S.caec. |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 | 32 | 38 | 970 | 1500 | 11 | 21 | 19 | 19 | 31 | 32 | 0 | 6 |
| 2004 | 6 | 1 | 900 | 1456 | 4 | 2 | 1 | 0 | 6 | 1 | 0 | 0 |
| 2005 | 55 | 34 | 1250 | 1524 | 18 | 37 | 18 | 16 | 53 | 33 | 2 | 0 |
| 2006 | 107 | 144 | 776 | 1970 | 48 | 59 | 83 | 61 | 91 | 134 | 14 | 5 |
| 2007 | 12 | 1 | 1440 | 2120 | 9 | 3 | 1 | 0 | 12 | 1 | 0 | 0 |
| 2008 | 15 | 14 | 400 | 788 | 4 | 11 | 6 | 8 | 15 | 12 | 0 | 1 |
| 2009 | 3 | 24 | 717 | 3547 | 1 | 2 | 14 | 10 | 3 | 24 | 0 | 0 |
| 2010 | 45 | 17 | 665 | 882 | 27 | 18 | 8 | 9 | 27 | 7 | 18 | 7 |
| 2011 | 7 | 0 | 500 | 1300 | 4 | 3 | 0 | 0 | 5 | 0 | 2 | 0 |
| 2012 | 0 | 0 | 500 | 490 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2013 | 2 | 1 | 400 | 1312 | 1 | 1 | 1 | 0 | 2 | 1 | 0 | 0 |
| 2014 | 21 | 3 | 400 | 1200 | 13 | 8 | 3 | 0 | 15 | 2 | 5 | 1 |
| 2015 | 5 | 0 | 400 | 400 | 4 | 1 | 0 | 0 | 4 | 0 | 1 | 0 |
| 2016 | 36 | 13 | 300 | 300 | 27 | 9 | 5 | 8 | 23 | 4 | 9 | 9 |
| 2017 | 5 | 0 | 298 | 300 | 2 | 3 | 0 | 0 | 5 | 0 | 0 | 0 |
| 2018 | 7 | 0 | 400 | 400 | 4 | 3 | 0 | 0 | 4 | 0 | 3 | 0 |
| 2019 | 28 | 0 | 300 | 500 | 16 | 12 | 0 | 0 | 21 | 0 | 6 | 0 |
| 2020 | 29 | 0 | 488 | 500 | 16 | 13 | 0 | 0 | 12 | 0 | 16 | 0 |
| 2021 | 0 | 0 | 400 | 400 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2022 | 15 | 0 | 400 | 400 | 6 | 9 | 0 | 0 | 7 | 0 | 7 | 0 |
| 2023 | 51 | 0 | 400 | 400 | 16 | 35 | 0 | 0 | 20 | 0 | 28 | 0 |
Грызуны и бурозубки относятся к цикломорфным животным, период колебания их численности составляет обычно около трех лет. За 20 лет наблюдений отмечено 6–7 циклов.
library(readxl)
library(tidyverse)
S <- read_excel("Sorex.xlsx")
S1 <- S %>%
select(year:I_lovushka) %>%
transmute(year,
Control = Control/C_lovushka*100,
Impact = Impact/I_lovushka*100
) %>%
pivot_longer(names_to = "zone", values_to = "abu", -year)
G <- ggplot(S1,aes(x = year, y = abu, color = zone))+
geom_point() +
geom_line()+
scale_color_manual(values = c("green", "red")) +
scale_x_continuous(breaks = 2003:2023) +
labs(x = NULL, y = "Обилие, экз./100 л.-с",
title = "Обилие насекомоядных по годам, экз./100 л.-с") +
theme_classic() +
theme(
legend.position = "bottom",
axis.text.x = element_text(angle = 45))
plotly::ggplotly(G)
Динамика обилия на контрольном и импактом участках в целом совпадают, фазы высокой и низкой численноси одинаковы.
library(readxl)
library(tidyverse)
S <- read_excel("Sorex.xlsx")
tmp <- S %>%
select(year:I_lovushka) %>%
transmute(year,
Control = Control/C_lovushka*100,
Impact = Impact/I_lovushka*100
)
wilcox.test(x = tmp$Control, y = tmp$Impact,
alternative = "two.sided")
##
## Wilcoxon rank sum test with continuity correction
##
## data: tmp$Control and tmp$Impact
## W = 348, p-value = 0.001227
## alternative hypothesis: true location shift is not equal to 0
Для подтверждения различий на участках посчитали тест Вилкоксона. Значение теста составляет 348 , а соответствующее значение p равно 0.0012.Поскольку это p-значение меньше 0,05, мы можем отвергнуть нулевую гипотезу, следовательно местообитания статистически значимо различаются между собой.
library(readxl)
library(tidyverse)
S <- read_excel("Sorex.xlsx")
C <- S %>%
select(year:I_lovushka) %>%
transmute(year,
Control = Control/C_lovushka*100,
Impact = Impact/I_lovushka*100
) %>%
pivot_longer(names_to = "zone", values_to = "abu", -year)
A1 <- aov(abu~zone, data=C)
summary(A1)
## Df Sum Sq Mean Sq F value Pr(>F)
## zone 1 111.1 111.06 9.879 0.00315 **
## Residuals 40 449.7 11.24
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(A1)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = abu ~ zone, data = C)
##
## $zone
## diff lwr upr p adj
## Impact-Control -3.252224 -5.343488 -1.160959 0.0031455
residuals(A1) %>% shapiro.test()
##
## Shapiro-Wilk normality test
##
## data: .
## W = 0.85264, p-value = 7.275e-05
M1 <- lm(abu~zone, data=C)
residuals(M1) %>% shapiro.test()
##
## Shapiro-Wilk normality test
##
## data: .
## W = 0.85264, p-value = 7.275e-05
summary(M1)
##
## Call:
## lm(formula = abu ~ zone, data = C)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.2632 -1.0110 -0.9640 0.9692 9.5255
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.2632 0.7317 5.827 8.28e-07 ***
## zoneImpact -3.2522 1.0347 -3.143 0.00315 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.353 on 40 degrees of freedom
## Multiple R-squared: 0.1981, Adjusted R-squared: 0.178
## F-statistic: 9.879 on 1 and 40 DF, p-value: 0.003145
t <-data.frame(x = M1$residuals) %>%
ggplot(aes(x)) +
geom_vline(xintercept = 0,
color = "blue", linetype = "dashed" ) +
geom_density() +
theme_bw() +
labs(x = "Residuals", y = "Density")
plotly::ggplotly(t)
Далее сделали дисперсионный однофакторный анализ ANOVA, который так же подтвердил, значимую разницу двух участков. Линейная модель показыввает нам что R-квадрат равен 0.1981, что указывает на то, что 20% дисперсии можно объяснить местообитанием.
library(readxl)
library(tidyverse)
S <- read_excel("Sorex.xlsx")
C <- S %>%
select(year:I_lovushka) %>%
transmute(year,
Control = Control/C_lovushka*100,
Impact = Impact/I_lovushka*100
) %>%
pivot_longer(names_to = "zone", values_to = "abu", -year)
r <- cbind(C,fitted = M1$fitted.values) %>%
ggplot()+
geom_abline(aes(intercept = M1$coefficients[[1]], slope = M1$coefficients[[2]]))+
geom_segment(mapping = aes(x = zone, xend = zone, y = abu, yend =fitted, ), color = "blue")+
geom_point(mapping = aes(x = zone, y = abu), shape = 21, fill = "white")+
labs(x = "Местообитание", y = "Обилие",
title = "Зависимость обилия от местообитания")+
theme_bw()
plotly::ggplotly(r)
Распределение остатков ненормальное согласно тесту Шапиро-Уилка.
knitr::opts_chunk$set(echo = FALSE, message = FALSE,
warning = FALSE)
S2 <- S %>%
select(-Control,- Impact, -C_lovushka, -I_lovushka,
-C_S.araneus, -I_S.araneus, -C_S.caec. ,-I_S.caec.
) %>%
transmute(year,
male=(S$C_male/(S$C_male+S$C_female))*100 ,
female=(S$C_female/(S$C_male+S$C_female))*100
) %>%
pivot_longer(names_to = "Sex", values_to = "abu", -year)
F <- ggplot(S2,aes(x = year, y = abu, fill = Sex))+
geom_col()+
scale_x_continuous(breaks = 2003:2023) +
labs(x = NULL, y = "Соотношение полов, %",
title = "Половая структура насекомоядных на контроле, %") +
theme_classic() +
theme(
legend.position = "bottom",
axis.text.x = element_text(angle = 45))
plotly::ggplotly(F)
Обобщенный график.
O <- S %>%
select(-C_lovushka, -I_lovushka, -C_S.araneus, -I_S.araneus, -C_S.caec., -I_S.caec.)%>%
mutate(C_male=(S$C_male/(S$C_male+S$C_female))*100 ,
C_female=(S$C_female/(S$C_male+S$C_female))*100,
I_male=(S$I_male/(S$I_male+S$I_female))*100 ,
I_female=(S$I_female/(S$I_male+S$I_female))*100
) %>%
pivot_longer(
cols = c(C_male, C_female, I_male, I_female),
names_to = 'Sex',
values_to = 'abu'
)
E <- ggplot(O,aes(x = year, y = abu, fill = Sex)) +
geom_col(position = "stack") +
scale_x_discrete(breaks = 2003:2023) +
labs(x = NULL, y = "Соотношение полов, %",
title = "Половая структура насекомоядных на контроле и импакте, %") +
theme_classic() +
theme(
legend.position = "bottom")
plotly::ggplotly(E)
Соотношение 1 : 1 почти не характерно для отловленных особей.
W1 <-sum(S$C_male)
W2 <-sum(S$C_female)
Y=W1+W2
R1 =W1/Y*100
R2=W2/Y*100
W3 <-sum(S$I_male)
W4 <-sum(S$I_female)
Y1=W3+W4
R3 =W3/Y1*100
R4=W4/Y1*100
u<- c(R1, R2, R3, R4)
print(u)
## [1] 48.02495 51.97505 54.82759 45.17241
По общим подсчетам заметна такая тенденция: на контрольном участке доля самок немного выше (52 %), чем самцов (48 %) а на импакте наоборот доля самцов выше (55 %), чем самок (45%).
Видовой состав насекомоядных на исследуемой территории включает 6 видов рода Sorex и 1 вид рода Neomys. К видам-доминантам относятся обыкновенная бурозубка Sorex araneus и средняя бурозубка S. caecutiens. Также отмечены малая бурозубка S. minutus, тундряная бурозубка S. tundrensis, равнозубая бурозубка S. isodon, крупнозубая бурозубка S. daphaenodon и водяная кутора Neomys fodiens. Видовой состав контрольной территории представлен 6 видами, а импактой территории 4 видами.
library(readxl)
T <- read_excel("table.xlsx")
formattable::formattable(T)
| Контроль | …2 | …3 | …4 | …5 | …6 | …7 | …8 | …9 | …10 | …11 | …12 | …13 | …14 | …15 | …16 | …17 | …18 | …19 | …20 | …21 | …22 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Таксон | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 |
| Sorex araneus | 31 | 6 | 53 | 91 | 12 | 15 | 3 | 27 | 5 | 0 | 2 | 15 | 4 | 23 | 5 | 4 | 21 | 12 | 0 | 7 | 20 |
| Sorex caecutiens | 0 | 0 | 2 | 14 | 0 | 0 | 0 | 18 | 2 | 0 | 0 | 5 | 1 | 9 | 0 | 3 | 6 | 16 | 0 | 7 | 28 |
| Sorex isodon | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Sorex tundrensis | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
| Sorex minutus | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 1 | 3 |
| Sorex daphaenodon | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| Neomys fodiens | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Итого | 32 | 6 | 55 | 108 | 12 | 15 | 3 | 45 | 7 | 0 | 2 | 21 | 5 | 36 | 5 | 7 | 28 | 29 | 0 | 15 | 51 |
| Импакт | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| Таксон | 2003 | 2004 | 2005 | 2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2022 |
| Sorex araneus | 32 | 1 | 33 | 134 | 1 | 12 | 24 | 7 | 0 | 0 | 1 | 2 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Sorex caecutiens | 6 | 0 | 0 | 5 | 0 | 1 | 0 | 7 | 0 | 0 | 0 | 1 | 0 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Sorex isodon | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Sorex tundrensis | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Sorex minutus | 0 | 0 | 0 | 5 | 0 | 1 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Sorex daphaenodon | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Neomys fodiens | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Итого | 38 | 1 | 34 | 144 | 1 | 14 | 24 | 17 | 0 | 0 | 1 | 3 | 0 | 13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
H <- S %>%
transmute(year,
S.ar_C=(S$C_S.araneus/S$C_lovushka)*100 ,
S.ar_I=(S$I_S.araneus/S$I_lovushka)*100,
S.caec_C=(S$C_S.caec./S$C_lovushka)*100 ,
S.caec_I=(S$I_S.caec./S$I_lovushka)*100
)%>%
pivot_longer(names_to = "species", values_to = "abu", -year)
l <- ggplot(H,aes(x = year, y = abu, color = species))+
geom_point() +
geom_line()+
scale_color_manual(values = c("green", "red", "blue","orange")) +
scale_x_continuous(breaks = 2003:2023) +
labs(x = NULL, y = "Обилие, экз./100 л.-с",
title = "Динамика обилия доминирующих видов Sorex araneus и S. caecutiens, экз./100 л.-с") +
theme_classic() +
theme(
legend.position = "bottom",
axis.text.x = element_text(angle = 45))
plotly::ggplotly(l)
Фазы обилия животных двух видов бурозубок в целом довольно синхронны на участках, что может косвенно свидетельствовать об отсутствии конкуренции между ними, в том числе пищевой, так как обыкновенная бурозубка значительно крупнее средней, следовательно, способна охотиться на более крупных насекомых, и пищевые ресурсы этих видов не пресекаются. Более низкую встречаемость средней бурозубки в отловах можно объяснить опять же ее меленькими размерами, и тем, что она реже попадается в ловушки-давилки. Однако, нельзя отрицать и в целом более низкую численность средней бурозубки по сравнению с обыкновенной.
J <- S %>%
transmute(year,
S.ar_C=(S$C_S.araneus/S$C_lovushka)*100 ,
S.ar_I=(S$I_S.araneus/S$I_lovushka)*100,
S.caec_C=(S$C_S.caec./S$C_lovushka)*100 ,
S.caec_I=(S$I_S.caec./S$I_lovushka)*100
)
cor(J[, c('S.ar_C', 'S.ar_I', 'S.caec_C', 'S.caec_I')])
## S.ar_C S.ar_I S.caec_C S.caec_I
## S.ar_C 1.0000000 0.74529900 0.48606174 0.4427044
## S.ar_I 0.7452990 1.00000000 0.01233548 0.1883452
## S.caec_C 0.4860617 0.01233548 1.00000000 0.2726956
## S.caec_I 0.4427044 0.18834518 0.27269555 1.0000000
Рассчитали коэфициент Пирсона, по результатам можно сделать вывод, что динамики обилия Sorex araneus и S. caecutiens на контроле имеют среднюю связь (r=0.49), а на импакте связь отсутствуют (r=0.18). Это дает основание полагать, что между этими видами нет явной конкуренции.
tmp1 <- S %>%
transmute(year,
Aran=(S$C_S.araneus/S$C_lovushka)*100 ,
Caec=(S$C_S.caec./S$C_lovushka)*100)
wilcox.test(x = tmp1$Aran, y = tmp1$Caec,
alternative = "two.sided")
##
## Wilcoxon rank sum test with continuity correction
##
## data: tmp1$Aran and tmp1$Caec
## W = 324, p-value = 0.008917
## alternative hypothesis: true location shift is not equal to 0
P <- S %>%
transmute(year,
Aran=(S$C_S.araneus/S$C_lovushka)*100 ,
Caec=(S$C_S.caec./S$C_lovushka)*100) %>%
pivot_longer(names_to = "species", values_to = "abu", -year)
A2 <- aov(abu~species, data=P)
summary(A2)
## Df Sum Sq Mean Sq F value Pr(>F)
## species 1 33.21 33.21 5.561 0.0233 *
## Residuals 40 238.87 5.97
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
TukeyHSD(A2)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = abu ~ species, data = P)
##
## $species
## diff lwr upr p adj
## Caec-Aran -1.778343 -3.302527 -0.2541581 0.0233459
residuals(A2) %>% shapiro.test()
##
## Shapiro-Wilk normality test
##
## data: .
## W = 0.84608, p-value = 4.999e-05
M2 <- lm(abu~species, data=P)
residuals(M2) %>% shapiro.test()
##
## Shapiro-Wilk normality test
##
## data: .
## W = 0.84608, p-value = 4.999e-05
summary(M2)
##
## Call:
## lm(formula = abu ~ species, data = P)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.9378 -1.1808 -0.9545 0.8334 8.7890
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.9378 0.5333 5.509 2.31e-06 ***
## speciesCaec -1.7783 0.7541 -2.358 0.0233 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.444 on 40 degrees of freedom
## Multiple R-squared: 0.122, Adjusted R-squared: 0.1001
## F-statistic: 5.561 on 1 and 40 DF, p-value: 0.02335
n <- data.frame(x = M2$residuals) %>%
ggplot(aes(x)) +
geom_vline(xintercept = 0,
color = "blue", linetype = "dashed" ) +
geom_density() +
theme_bw() +
labs(x = "Residuals", y = "Density")
plotly::ggplotly(n)
P <- S %>%
transmute(year,
Aran=(S$C_S.araneus/S$C_lovushka)*100 ,
Caec=(S$C_S.caec./S$C_lovushka)*100) %>%
pivot_longer(names_to = "species", values_to = "abu", -year)
f <- cbind(P,fitted = M2$fitted.values) %>%
ggplot()+
geom_abline(aes(intercept = M2$coefficients[[1]], slope = M2$coefficients[[2]]))+
geom_segment(mapping = aes(x = species, xend =species , y = abu, yend =fitted, ), color = "blue")+
geom_point(mapping = aes(x = species, y = abu), shape = 21, fill = "white")+
labs(x = "Вид", y = "Обилие",
title = "Зависимость обилия от вида")+
theme_bw()
plotly::ggplotly(f)
Проверили с помощью критерия Вилкоксона достоверно ли различаются виды на контроле и импакте. На контроле виды достоверно различаются, далее сделали дисперсионный анализ ANOVA, проверили на нормальность остатки, линейная модель показыввает нам что R-квадрат равен 0.122, что указывает на то, что только 12% дисперсии можно объяснить видовой принадлеженостью. Однако распределение остатков ненормальное согласно тесту Шапиро-Уилка.
На импактоном участке, значимых различий между видами не выявлено, согласно критерию Вилкоксона.
tmp2 <- S %>%
transmute(year,
Aran=(S$I_S.araneus/S$I_lovushka)*100 ,
Caec=(S$I_S.caec./S$I_lovushka)*100)
wilcox.test(x = tmp2$Aran, y = tmp2$Caec,
alternative = "two.sided")
##
## Wilcoxon rank sum test with continuity correction
##
## data: tmp2$Aran and tmp2$Caec
## W = 276.5, p-value = 0.1161
## alternative hypothesis: true location shift is not equal to 0