Как доказать сотрудничество из поведенческих последовательностей

10

Ситуация: две птицы (самец и самка) защищают свои яйца в гнезде от злоумышленника. Каждая птица может использовать для защиты либо атаку, либо угрозу, а также присутствовать или отсутствовать. Из данных возникает закономерность, что поведение может быть взаимодополняющим - атаки мужчин, в то время как женщины используют отображение угроз, и наоборот.

У меня вопрос: как статистически обосновать такое сотрудничество? Или кто-нибудь может знать какое-нибудь поведенческое исследование, которое имеет дело с подобным анализом? Подавляющее большинство последовательных анализов, которые я обнаружил, сосредоточены на ДНК.

введите описание изображения здесь

Здесь я предоставляю некоторые фиктивные данные , но мой оригинальный набор данных состоит из десятков пар, которые были записаны ровно за 10 минут при защите их гнезда. Следовательно, последовательность поведения каждой птицы составляет 600 состояний (каждая секунда имеет состояние). Эти более короткие данные должны содержать шаблон, аналогичный всему набору данных.

male_seq <- rep(c("absent","present","attack","threat","present","attack",
                  "threat","present","attack","absent"),
                  times = c(3,4,8,2,6,3,2,6,2,1))

female_seq <- rep(c("absent","present","threat","present","threat","present",
                    "threat","attack","present","threat","attack","present",
                    "attack","threat","absent"),
                  times = c(2,6,2,1,2,1,1,3,5,3,1,3,3,2,2))
Ladislav Naďo
источник
2
(+1) за прекрасно иллюстрированный, правильно оформленный и интересный вопрос!
Тим
1
Как реальные вторжения вступают в это? Соответствует ли каждая последовательность непрерывным 10-минутным интервалам или только интервалам, где присутствует нарушитель? Означает ли "отсутствие" отсутствие в гнезде или отсутствие в районе, когда произошло вторжение?
Уэйн
Привет, Уэйн! Нарушитель присутствует от начала до конца (кукла-хищник на палочке была представлена ​​гнездящимся птицам на 10 минут). Отсутствие означает отсутствие в месте гнездования - иногда родители просто убегают (иногда возвращаются через несколько минут).
Ладислав Наго
Итак, каждая строка квадратов включает в себя все вторжение, а каждый соседний квадрат описывает непрерывный 10-минутный период. Хорошо. Теперь, вы можете уточнить, что вы подразумеваете под "сотрудничество"? Вы имеете в виду разные роли (угроза против атаки) или же вы разделяете обязанности охранника (отсутствует / присутствует против угрозы / атаки)?
Уэйн
Под сотрудничеством я подразумеваю «когда мужчина нападает, женщина угрожает», и я хотел бы проверить эту гипотезу против альтернативы: «когда мужчина нападает, женщина не предпочитает делать угрозы» (другими словами, поведение женщины не зависит от мужского поведения).
Ладислав Наго

Ответы:

3

Я публикую второй ответ после вашего последнего комментария

Под сотрудничеством я подразумеваю «когда мужчина нападает, женщина угрожает», и я хотел бы проверить эту гипотезу против альтернативы: «когда мужчина нападает, женщина не предпочитает делать угрозы» (другими словами, поведение женщины не зависит от мужского поведения).

male_seqfemale_seqmale_seq == "attack"female_seq == "treat"п

prmfun <- function() {
  sum(female_seq[sample(male_seq) == "attack"] == "threat")
}

mean(replicate(1e5, prmfun()) >= sum(female_seq[male_seq == "attack"] == "threat"))
## [1] 5e-05

ЧАС0ЧАС0

Более того, даже если вы предполагаете, что поведения появляются в кластерах с одинаковым поведением, повторяющимся в течение некоторого периода времени, с помощью теста перестановки вы можете перетасовать целые кластеры:

female_rle <- rle(female_seq)
n_rle <- length(female_rle$values)

prmfun2 <- function() {
  ord <- sample(n_rle)
  sim_female_seq <- rep(female_rle$values[ord], female_rle$lengths[ord])
  sum(sim_female_seq[male_seq == "attack"] == "threat")
}

mean(replicate(1e5, prmfun2()) >= sum(female_seq[male_seq == "attack"] == "threat"))
## [1] 0.00257

В любом случае шаблоны сотрудничества в предоставленных вами данных, похоже, далеко не случайны. Обратите внимание, что в обоих случаях мы игнорируем автокоррелированную природу этих данных, мы скорее спрашиваем: если бы мы выбрали случайный момент времени, когда атаковал самец, будет ли женщина меньше или с большей вероятностью делать угощения в одно и то же время?

T-1T

Тим
источник
2

ИксYИксYTИксT-1,яИксT,JИксT-1TяJИкс Y

Pr(ИксT-1,яИксT,J)знак равноPr(ИксT,J|ИксT-1,я,YT-1,К)Pr(YT-1,часYT,К)знак равноPr(YT,час|YT-1,К,ИксT-1,я)

Вероятности переходов могут быть легко рассчитаны путем подсчета истории переходов и нормализации вероятностей впоследствии:

states <- c("absent", "present", "attack", "threat")
# data is stored in 3-dimensional array, initialized with
# a very small "default" non-zero count to avoid zeros.
female_counts <- male_counts <- array(1e-16, c(4,4,4), list(states, states, states))
n <- length(male_seq)

for (i in 1:n) {
  male_counts[female_seq[i-1], male_seq[i-1], male_seq[i]] <- male_counts[female_seq[i-1], male_seq[i-1], male_seq[i]] + 1
  female_counts[male_seq[i-1], female_seq[i-1], female_seq[i]] <- female_counts[male_seq[i-1], female_seq[i-1], female_seq[i]] + 1
}

male_counts/sum(male_counts)
female_counts/sum(female_counts)

Это также может быть легко смоделировано с использованием предельных вероятностей:

male_sim <- female_sim <- "absent"

for (i in 2:nsim) {
  male_sim[i] <- sample(states, 1, prob = male_counts[female_sim[i-1], male_sim[i-1], ])
  female_sim[i] <- sample(states, 1, prob = female_counts[male_sim[i-1], female_sim[i-1], ])
}

Результат такого моделирования приведен ниже.

введите описание изображения здесь

Более того, его можно использовать для прогнозирования на один шаг вперед:

male_pred <- female_pred <- NULL

for (i in 2:n) {
  curr_m <- male_counts[female_seq[i-1], male_seq[i-1], ]
  curr_f <- female_counts[male_seq[i-1], female_seq[i-1], ]
  male_pred[i] <- sample(names(curr_m)[curr_m == max(curr_m)], 1)
  female_pred[i] <- sample(names(curr_f)[curr_f == max(curr_f)], 1)
}

с точностью 69-86% по предоставленным вами данным:

> mean(male_seq == male_pred, na.rm = TRUE)
[1] 0.8611111
> mean(female_seq == female_pred, na.rm = TRUE)
[1] 0.6944444

Если бы переходы происходили случайным образом, вероятности переходов следовали бы за дискретным равномерным распределением. Это не доказательство , но может служить способом осмысления ваших данных с помощью простой модели.

Тим
источник
Кажется, вы предполагаете, что альтернативой сотрудничеству является какой-то случайный ответ. Я мог видеть, что альтернативой является несогласованный ответ, который может быть запрограммирован заранее. Например, птица летит кругами. Таким образом, когда партнер имеет дело с нарушителем, круг больше. Таким образом, они имеют дело с злоумышленником один за другим, без сотрудничества как такового, но ожидая, пока один не закончится.
Аксакал
@Aksakal, но вопрос касается взаимодействий, а то, что вы описываете, является своего рода взаимодействием. (Я не утверждаю, что эта упрощенная модель верна.)
Тим
Я согласен, что ОП не ясно, ищет ли он какую-либо регулярную модель или конкретно «сотрудничество». Я бы сказал, что когда три птицы летят в одном и том же пространстве, должна появиться какая-то модель поведения. Я думаю, что «сотрудничество» подразумевает нечто большее, чем просто шаблон. В противном случае вы могли бы сказать, что это трехстороннее сотрудничество, причем злоумышленник также сотрудничает в некотором смысле.
Аксакал
@Aksakal Вы можете быть правы, но если эти данные состоят только из четырех состояний, наблюдаемых во времени, то предложенная мной упрощенная модель может послужить отправной точкой.
Тим