Анализ морфометрических параметров яичной скорлупы представляет значительный интерес в контексте экологических исследований, мониторинга состояния популяций птиц и оценки влияния антропогенных факторов. Толщина скорлупы традиционно рассматривается как один из ключевых показателей, отражающих физиологическое состояние птиц, качество питания и воздействие стрессовых факторов окружающей среды.
В последние десятилетия особое внимание уделяется разработке и применению интегральных индексов, таких как индекс Ратклиффа, который позволяет учитывать не только абсолютные значения толщины, но и характер ее распределения по поверхности яйца. Сочетание традиционных морфометрических подходов с современными статистическими методами открывает новые возможности для более точной оценки состояния репродуктивной системы птиц.
Цель - установить наличие и характер взаимосвязи между средней толщиной скорлупы и индексом Ратклиффа, а также определить оптимальное количество измерений, необходимое для получения статистически надежных результатов.
Задачи:
Провести корреляционный анализ между средней толщиной скорлупы и значением индекса Ратклиффа
Оценить достаточность текущего объема измерений (8-20 на образец)
Определить минимально необходимое количество измерений для достижения стабильных результатов
data_corr <- read_excel("индекс ратклифа и толщина.xlsx", sheet = "Аркуш1")
# Гистограммы распределения
p1 <- ggplot(data_corr, aes(x = `Ср. арифм толщина`)) +
geom_histogram(bins = 20, fill = "steelblue", alpha = 0.7) +
labs(title = "Распределение средней толщины скорлупы",
x = "Средняя толщина (мкм)", y = "Частота") +
theme_minimal()
p2 <- ggplot(data_corr, aes(x = `Индекс Ратклиффа`)) +
geom_histogram(bins = 20, fill = "coral", alpha = 0.7) +
labs(title = "Распределение индекса Ратклиффа",
x = "Индекс Ратклиффа", y = "Частота") +
theme_minimal()
gridExtra::grid.arrange(p1, p2, ncol = 2)Обе переменные имеют одновершинное распределение без выраженных выбросов. Форма распределений не демонстрирует критических отклонений, что позволяет использовать параметрические методы анализа.
Индекс Ратклиффа представляет собой нормализованный показатель, учитывающий не только среднюю толщину скорлупы, но и характер ее распределения (чем больше индекс Ратклиффа, тем прочнее скорлупа). Теоретически предполагается существование взаимосвязи между этими параметрами, однако характер и сила этой связи могут варьировать в зависимости от видовой принадлежности птиц, условий среды и других факторов. \[ R = \frac{m}{L \cdot D}, \]
где \(m\) — масса скорлупы (г), \(L\) — длина яйца (мм), \(D\) — диаметр яйца (мм).
Корреляционный анализ позволяет количественно оценить степень взаимосвязи между двумя переменными и проверить статистическую значимость обнаруженных закономерностей.
# Вычисляем коэффициент корреляции Пирсона
cor_test <- cor.test(data_corr$`Ср. арифм толщина`,
data_corr$`Индекс Ратклиффа`,
method = "pearson")
# Создаем таблицу с результатами
cor_results <- data.frame(
Показатель = c("Коэффициент корреляции (r)", "95% доверительный интервал",
"t-статистика", "Степени свободы", "p-value"),
Значение = c(
round(cor_test$estimate, 4),
paste(round(cor_test$conf.int[1], 4), "-", round(cor_test$conf.int[2], 4)),
round(cor_test$statistic, 4),
cor_test$parameter,
ifelse(cor_test$p.value < 0.001, "< 0.001", round(cor_test$p.value, 4))
)
)По результатам корреляционного анализа между средней толщиной яичной скорлупы и индексом Ратклиффа была выявлена статистически значимая взаимосвязь. Полученное значение коэффициента корреляции Пирсона (0.9086) свидетельствует о наличии линейной зависимости, что подтверждает предположение о связи индекса Ратклиффа с морфометрическими характеристиками скорлупы.
Наличие статистически значимой корреляции указывает на то, что индекс Ратклиффа может рассматриваться как информативный показатель, отражающий особенности распределения толщины скорлупы и связанный с ее средним значением.
ggplot(data_corr, aes(
x = `Ср. арифм толщина`,
y = `Индекс Ратклиффа`,
color = factor(Зона,
levels = c(1, 2),
labels = c("Импактная зона", "Фоновая зона"))
)) +
geom_point(size = 3, alpha = 0.7) +
geom_smooth(method = "lm", se = TRUE, color = "darkred") +
labs(title = "Корреляция между толщиной скорлупы и индексом Ратклиффа",
x = "Средняя толщина скорлупы (мкм)",
y = "Индекс Ратклиффа",
color = "Зона отбора") +
theme_minimal() +
theme(legend.position = "bottom") +
annotate(
"text",
x = max(data_corr$`Ср. арифм толщина`) * 0.7,
y = max(data_corr$`Индекс Ратклиффа`) * 0.9,
label = paste(
"r =", round(cor_test$estimate, 3),
"\np", ifelse(cor_test$p.value < 0.001, "< 0.001",
paste("=", round(cor_test$p.value, 4)))
),
size = 5
)Графическая визуализация зависимости между средней толщиной скорлупы и индексом Ратклиффа подтверждает результаты корреляционного анализа. Наличие выраженного линейного тренда указывает на согласованность морфометрических показателей, что свидетельствует о взаимосвязанном характере изменения средней толщины скорлупы и индекса.
# Корреляция отдельно для каждой зоны
cor_by_zone <- data_corr %>%
mutate(
Зона_тип = ifelse(Зона == 1, "Импактная зона", "Фоновая зона")
) %>%
group_by(Зона_тип) %>%
summarise(
Корреляция = cor(`Ср. арифм толщина`, `Индекс Ратклиффа`, method = "pearson"),
n = n(),
p_value = cor.test(`Ср. арифм толщина`, `Индекс Ратклиффа`)$p.value
) %>%
mutate(
p_value_format = ifelse(p_value < 0.001, "< 0.001", round(p_value, 4)),
Значимость = ifelse(p_value < 0.05, "Да", "Нет")
)zone_plots <- list()
for (zone in c(1, 2)) {
zone_data <- data_corr %>% filter(Зона == zone)
zone_name <- ifelse(zone == 1, "Импактная зона", "Фоновая зона")
zone_cor <- cor.test(
zone_data$`Ср. арифм толщина`,
zone_data$`Индекс Ратклиффа`
)
zone_plots[[zone]] <- ggplot(
zone_data,
aes(x = `Ср. арифм толщина`, y = `Индекс Ратклиффа`)
) +
geom_point(
color = ifelse(zone == 1, "red", "blue"),
size = 3,
alpha = 0.7
) +
geom_smooth(
method = "lm",
se = TRUE,
color = ifelse(zone == 1, "darkred", "darkblue")
) +
labs(
title = zone_name,
subtitle = paste(
"r =", round(zone_cor$estimate, 3),
", p =", ifelse(zone_cor$p.value < 0.001, "< 0.001",
round(zone_cor$p.value, 4))
),
x = "Средняя толщина (мкм)",
y = "Индекс Ратклиффа"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)
)
}
gridExtra::grid.arrange(zone_plots[[1]], zone_plots[[2]], ncol = 2)Графическое сравнение взаимосвязи между средней толщиной яичной скорлупы и индексом Ратклиффа в импактной и фоновой зонах выявило различия в силе и характере корреляции. В импактной зоне наблюдается очень высокая положительная корреляция (r = 0.948, p < 0.001), что указывает на тесную линейную зависимость между рассматриваемыми параметрами.
В фоновой зоне также выявлена статистически значимая положительная корреляция (r = 0.786, p < 0.001), однако она характеризуется меньшей силой и большим разбросом значений. Это может свидетельствовать о большей вариабельности морфометрических характеристик скорлупы в условиях отсутствия выраженного антропогенного воздействия.
Таким образом, более высокая степень согласованности параметров в импактной зоне может отражать влияние стрессовых факторов среды, приводящих к унификации морфометрических характеристик яичной скорлупы, тогда как в фоновой зоне сохраняется более широкий диапазон естественной изменчивости.
В процессе работы возникла методическая задача определения достаточного числа измерений толщины скорлупы на фотографиях. Поскольку число возможных измерений ограничено (как минимум временем), а разброс значений может быть значительным, важно оценить, при каком объёме данных среднее значение толщины становится устойчивым.
Для решения этой задачи был использован бутстрэп-метод, позволяющий оценить неопределённость средней без предположений о форме распределения данных.
Для оценки устойчивости средней толщины скорлупы была определена функция, вычисляющая ширину 95%-ного бутстрэп-доверительного интервала для заданного числа измерений.
Функция основана на многократном случайном переотборе измерений с возвращением и расчёте среднего значения для каждой бутстрэп-выборки. Ширина доверительного интервала используется как мера неопределённости оценки средней: чем она меньше, тем стабильнее полученное среднее значение.
Для каждого образца последовательно рассматриваются подвыборки различного объёма - от двух измерений до максимально доступного числа измерений для данного образца.
Для каждого значения n вычисляется ширина 95%-ного бутстрэп-доверительного интервала средней толщины скорлупы. Такой подход позволяет проследить, как изменяется точность оценки средней при увеличении числа измерений.
Для формального определения момента стабилизации оценки средней используется относительное изменение ширины доверительного интервала при увеличении числа измерений.
В качестве практического критерия считается, что если при увеличении n относительное уменьшение ширины доверительного интервала становится меньше 5%, дальнейшее увеличение объёма выборки даёт лишь незначительный выигрыш в точности. Анализ проводится для значений n больше 5, чтобы исключить влияние крайне малых и нестабильных выборок.
На заключительном этапе минимально достаточное число измерений агрегируется по зонам. Для каждой зоны рассчитываются среднее, медианное и максимальное значения, что позволяет оценить вариабельность требований к объёму измерений.
plateau_n %>%
group_by(zone) %>%
summarise(
`Среднее необходимое n` = round(mean(min_n, na.rm = TRUE), 1),
`Медианное необходимое n` = median(min_n, na.rm = TRUE),
`Максимальное необходимое n` = max(min_n, na.rm = TRUE),
.groups = "drop"
) %>%
knitr::kable(
caption = "Оценка необходимого числа измерений толщины скорлупы по зонам"
)| zone | Среднее необходимое n | Медианное необходимое n | Максимальное необходимое n |
|---|---|---|---|
| Импактная зона | 8.3 | 8 | 14 |
| Фоновая зона | 7.7 | 8 | 10 |
#Примерно необходимое число измерений
recommended_n <- plateau_n %>%
group_by(zone) %>%
summarise(
recommended_n = median(min_n, na.rm = TRUE),
.groups = "drop"
)
ggplot(bootstrap_results, aes(n, ci_width, group = sample)) +
geom_line(alpha = 0.3, color = "grey50") +
geom_vline(
data = recommended_n,
aes(xintercept = recommended_n),
color = "red",
linewidth = 1
) +
facet_wrap(~ zone, scales = "free_y") +
labs(
x = "Количество измерений",
y = "Ширина 95% бутстрэп-доверительного интервала средней толщины"
)В качестве рекомендуемого числа измерений используется медианное значение по образцам внутри зоны как более устойчивая характеристика. На графике показана зависимость ширины бутстрэп-доверительного интервала от числа измерений для отдельных образцов, а вертикальной линией отмечено рекомендуемое количество измерений для каждой зоны. Значения левее линии соответствуют высокой неопределённости оценки, тогда как правее линии дополнительное увеличение числа измерений приводит лишь к незначительному повышению точности.
Корреляционный анализ выявил наличие связи между средней толщиной скорлупы и индексом Ратклиффа, а визуализация данных подтвердила наличие общей тенденции между показателями.
Разделение данных по зонам показало, что характер и сила выявленной связи могут различаться в зависимости от условий среды, что указывает на неоднородность данных и необходимость учитывать фактор зоны при интерпретации результатов.
С применением бутстрэп-метода была оценена устойчивость средней толщины скорлупы при различном количестве измерений. Полученные результаты позволяют в последующих исследованиях использовать около 10 измерений толщины скорлупы на образец как практический компромисс между точностью оценки и трудоёмкостью измерений.