Актуальность исследования

Анализ морфометрических параметров яичной скорлупы представляет значительный интерес в контексте экологических исследований, мониторинга состояния популяций птиц и оценки влияния антропогенных факторов. Толщина скорлупы традиционно рассматривается как один из ключевых показателей, отражающих физиологическое состояние птиц, качество питания и воздействие стрессовых факторов окружающей среды.

В последние десятилетия особое внимание уделяется разработке и применению интегральных индексов, таких как индекс Ратклиффа, который позволяет учитывать не только абсолютные значения толщины, но и характер ее распределения по поверхности яйца. Сочетание традиционных морфометрических подходов с современными статистическими методами открывает новые возможности для более точной оценки состояния репродуктивной системы птиц.

Цель и задачи исследования

Цель - установить наличие и характер взаимосвязи между средней толщиной скорлупы и индексом Ратклиффа, а также определить оптимальное количество измерений, необходимое для получения статистически надежных результатов.

Задачи: 1) Провести корреляционный анализ между средней толщиной скорлупы и значением индекса Ратклиффа

  1. Оценить достаточность текущего объема измерений (8-20 на образец)

  2. Определить минимально необходимое количество измерений для достижения стабильных результатов

##Анализ распределения исследуемых параметров

##Общая корреляция между толщиной скорлупы и индексом Ратклиффа Индекс Ратклиффа представляет собой нормализованный показатель, учитывающий не только среднюю толщину скорлупы, но и характер ее распределения. Теоретически предполагается существование взаимосвязи между этими параметрами, однако характер и сила этой связи могут варьировать в зависимости от видовой принадлежности птиц, условий среды и других факторов.

Корреляционный анализ позволяет количественно оценить степень взаимосвязи между двумя переменными и проверить статистическую значимость обнаруженных закономерностей.

# Вычисляем коэффициент корреляции Пирсона
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))
  )
)

##Визуализация взаимосвязи параметров

ggplot(data_corr, aes(x = `Ср. арифм толщина`, y = `Индекс Ратклиффа`)) +
  geom_point(aes(color = factor(Зона)), 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 %>%
  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, "blue", "red"), size = 3, alpha = 0.7) +
    geom_smooth(method = "lm", se = TRUE, 
                color = ifelse(zone == 1, "darkblue", "darkred")) +
    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)