{{:bie5782:01_curso_atual:alunos:trabalho_final:ferni211:foto.png?200|}}
====== Maria Fernanda De la Fuente ======
Doutoranda no programa de Pós-graduação em Etnobiologia e Conservação da Natureza na UFRPE.[[http://www.pgetno.ufrpe.br/|PPGETNO]]
Membro do Laboratório de Etologia Teórica e Aplicada. [[http://letaufrpe.weebly.com/|LETA]]
Minha área de interesse e atuação é o comportamento animal, atualmente pesquiso sobre o forrageio social e análise de redes sociais em primatas de vida livre.
[[.:Exercícios]]
=====Trabalho Final=====
====PROPOSTA A – Hierarquia de dominância====
Contextualização: Ao estudar o comportamento animal dentro de um grupo, podemos nos deparar com interações e associações entre os indivíduos que nos indicam a presença de algum tipo de estrutura hierárquica. Analisar estes contextos é muito importante para entender melhor sobre a estrutura social do grupo/espécie e interpretar adequadamente os comportamentos entre os indivíduos do grupo. A hierarquia de dominância dentro de um grupo pode ser analisada através de várias medições de relações diáticas (dominante-subordinado), como por exemplo, encontros agonísticos, prioridade a recursos, entre outros.
Tarefa da função: A partir de interações diáticas, criar uma matriz de dominância, calcular o índice de hierarquia linear do grupo, e calcular o índice de dominância de cada membro do grupo (posição hierárquica de cada indivíduo comparado aos outros).
Objeto de entrada da função: Objeto de entrada será um data-frame com os dados das interações entre as díades em cada linha, no qual a primeira coluna terá a identidade do emissor (ou “ganhador”) da interação, na segunda coluna a identidade do receptor (ou “perdedor”) da interação, e na terceira coluna o número de interações em que o emissor “ganhou” do receptor.
Objeto de saída: a função vai retornar uma lista com os seguintes resultados: 1. Matriz de dominância do grupo, 2. Resultado do índice de hierarquia linear do grupo, e 3. Resultados dos índices de dominância de cada membro do grupo.
Oi, Maria!\\
Eu gostei mais dessa proposta e ela parece, de fato, interessante. Contudo, gostaria de mais algumas **informações teóricas** para entender sua ideia melhor:\\
1. O que é uma matriz de dominância do grupo?\\
2. Eu acho que entendo o que seja o índice de hierarquia do grupo, mas como ele é calculado? Existe uma fórmula já para isso?\\
3. Também entendo (acho!) o que seja índice de dominância de cada membro do grupo mas, assim como na pergunta anterior, já existe uma fórmula para calcular esse índice?\\
\\
Agora, vamos falar sobre **sua função**, mas com um cunho mais técnico.\\
Eu achei ela meio simples e acredito que ela pode ser melhorada para facilitar a vida do pesquisador. Eu estava aqui pensando e, a meu entender, seu objeto de entrada é algo que a pessoa tem que fazer antes de usar a função. Você vai precisar me ajudar aqui, mas como etólogo que //não// sou, eu imagino que uma tabela de coleta de dados para um estudo de comportamento como o que você apresentou tenha 3 colunas: uma para o evento de interação, a outra para o emissor e a terceira para o receptor. E se a gente fizesse sua função pegar essa tabela, que veio do campo, e somar automaticamente quantas interações houve entre cada dupla de indivíduos e quantas vezes quem ganhou de quem para, a partir daí, criar o dataframe que você precisa para calcular os objetos de retorno de sua função? Acho que assim ela fica mais útil, mais generalizável e mais desafiadora. O que acha?\\
\\
É isso, qualquer coisa, tamo aí!\\
Abraços!\\
//[[lmcteixeira2@gmail.com|Lucas]]//
===Resposta Comentários===
Oi Lucas, obrigada pela resposta! Vou tentar responder tuas perguntas:
1. Para se adequar ao conceito de estrutura, a dominância deve ser estabelecida como uma relação binaria dentro do conjunto de membros. Onde, por exemplo, se individuo A domina o indivíduo B e o indivíduo B domina C, então A>B e B>C. Esta estrutura pode ser representada por uma matriz de relações de dominância, na qual a identidade de todos os indivíduos se encontram nas linhas e colunas, sendo que as linhas representam os emissores ou “ganhadores” da interação e nas colunas os receptores ou “perdedores”. Dentro da matriz teremos então o número de interações de cada indivíduo com todos os outros indivíduos do grupo, onde o indivíduo da linha domina o indivíduo da coluna, caso não haja interações entre os indivíduos o valor na matriz seria 0.
2. Sim, existe uma fórmula para calcular o índice da hierarquia linear, é o índice de linearidade de Landau. No entanto, estou pesquisando para ver se há outras formulas e escolher a mais apropriada.
{{:bie5782:01_curso_atual:alunos:trabalho_final:ferni211:indice_de_landau.png?200|Índice}}
Onde: n=número de animas no grupo; Va= número de animais que o indivíduo “a” domina.
3. Também existe uma formula simples para calcular o índice de dominância de cada membro dentro do grupo (índice de Coulon). Índice de dominância= G/G+P. Onde: G=número de interações “ganhas”; e P = número de interações “perdidas” com outros indivíduos.
Sobre a função: A coleta de dados etológicos em campo é feita, por exemplo, com a ajuda de um gravador de voz ou em planilhas em folhas de papel mesmo (etograma). Das duas formas, o pesquisador precisa passar os dados de campo para planilha no computador (a não ser que tenha um tablet ou algo assim). Na verdade, eu tinha pensado sobre adicionar na função a opção de somar o total de interações entre cada dupla, como você sugeriu, até porque essa é a informação necessária para cria a matriz de dominância de qualquer forma. Só fiquei com a dúvida se é possível somar os valores da coluna do número de interações com relação as outras duas colunas (uma vez que em uma tem a identidade do emissor e na outra a do receptor)? Ou seria preciso fazer mais uma coluna com as duplas da interação (emissor-receptor) em cada linha?
Oi, Maria! Obrigado pela resposta e desculpa a demora em responder. Fiquei sem internet ontem.\\
\\
Obrigado também pelas explicações! Pude entender sua proposta bem melhor agora!\\
Sim, ter que digitalizar tabelas de campo é algo bastante comum pra gente... rs Mas o que eu queria dizer, e aí peço desculpas se não fui claro, era exatamente isso: em vez da pesquisadora //(sim, mulheres na ciência! Yaay!)// criar uma tabela com essas três colunas que você apresentou como sendo o input, a pesquisadora fica a cargo de, "apenas", digitalizar essa matriz. Sua função, então, teria como input essa essa matriz, criando esse dataframe com as três colunas automaticamente e, a partir, daí calcular os índices que você propõe.\\
\\
Essa minha sugestão embasa-se numa tentativa de tornar a vida da pesquisadora mais fácil, porque assim ela teria apenas uma função (digitalizar a matriz) e não duas (digitalizar a matriz e criar o dataframe), tornando-se também menos //error-prone//. Contudo, preciso admitir que a forma de fazer isso requer um certo conhecimento de operações matriciais de que eu não disponho com segurança. Apesar disso, a gente tem uma brincadeira no R: não é se é possível fazer, mas como fazer ;)\\
\\
De qualquer forma, vou pedir a minhas e meus colegas de monitoria que deem uma olhada na sua proposta também e analisem a viabilidade dela, tudo bem? Assim você tem mais segurança sobre qual caminho seguir.\\
\\
Qualquer coisa, só falar!\\
AbRaços,\\
Lucas
--------------------------------------------------------
====PROPOSTA B – Confiabilidade entre observadores====
Contextualização: Muitas vezes, em estudos experimentais ou a longo prazo, os dados de campo são coletados por diferentes pesquisadores. Se os observadores não coletam/observam exatamente da mesma maneira determinado fenômeno, haverá um decréscimo na confiabilidade e validade dos dados coletados, e consequentemente do estudo em geral. Isto pode acontecer especialmente no estudo do comportamento animal, uma vez que a percepção e interpretação dos observadores pode estar influenciada por diferentes fatores e experiências individuais. Para evitar este problema, antes do início da coleta de dados é recomendado realizar um estudo piloto, no qual todos os observadores coletam os mesmos dados ao mesmo tempo, mas de forma individual e independente, para depois executar um teste de concordância entre eles.
Tarefa da função: Calcular a confiabilidade entre observadores através de teste de concordância e calcular a probabilidade de que a mesma seja acima do esperado ao acaso.
Objeto de entrada da função: Um data-frame em que as linhas são as observações realizadas e nas colunas os diferentes observadores. Como argumento da função entra o teste de concordância a ser calculado.
Objeto de saída: o resultado do teste de concordância e o p-value.
Ois!\\
Confesso que achei que essa sua proposta poderia ser mais desafiadora. Se entendi corretamente, ela vai apenas retornar o valor de um certo teste estatístico (qual seria? Kappa?), não oferecendo um diferencial. Dessa forma, aconselho focar para a proposta A.
-----------------------------------------------------------
=====Página de Ajuda=====
domi package:nenhum R Documentation
Cria matriz de dominância, calcula o índice de dominância individual e o índice
de hierarquia linear do grupo com base a dados de interações diáticas fornecidos
pelo usuário.
Description:
A partir de um dataframe, cria matriz de dominância com o número de interações
entre cada par de indivíduos no grupo. Calcula o índice de dominância (Coulon)
para cada indivíduo do grupo e o índice de hierarquia linear (Landau) do grupo.
Retorna uma lista com a matriz de dominância, os índices de Coulon e o índice de
Landau.
Usage:
domi(dados, ind)
Arguments:
dados: Dataframe com 3 colunas que deve conter na primeira coluna a identidade
dos emissores das interações; na segunda coluna a identidade dos receptores das
interações; e na terceira coluna o número de interações observadas entre o emissor
e receptor. Cada linha pode ser uma observação ou a somatória de varias observações
entre emissor e receptor (depende do método de observação em campo).
ind: valor numérico referente ao número total de indivíduos no grupo, deve ser
número inteiro.
Details:
Todos os argumentos da função devem ser fornecidos.
Value:
A função domi retorna uma lista com os seguintes componentes:
comp1: Matriz de dominância. Nas linhas da matriz se encontram todos os indivíduos
do grupo que emitiram a interação (emissores), e nas colunas se encontram todos os
indivíduos do grupo que receberam a interação (receptores). Dentro da matriz se
encontram o número de interações entre todos os emissores e receptores do grupo.
comp2: Índices de dominância individual (Coulon). Neste componente da lista se
encontram os índices de dominância de cada indivíduo, indicando a posição hierárquica
de cada um dentro do grupo. Retorna valores de 0 a 1, quanto mais próximo de 1 significa
que o animal é mais dominante do que os outros.
comp3: Índice de linearidade de Landau. A função retorna o índice de hierarquia
linear do grupo. Podendo ser valores de 0 a 1, quanto mais próximo de 1 mais linear
é a hierarquia do grupo, isto é, existe um indivíduo de alto ranking no grupo que
domina todos os membros do grupo (A), o segundo no ranking (B) domina todos os indivíduos
menos o A, o terceiro do ranking (C) domina todos os indivíduos exceto A e B, etc (A>B>C).
Quando o índice é mais próximo de 0, a hierarquia é não linear, pois podem existir
relações circulares entre os indivíduos (A>B, B>C, C>A), e indivíduos com o mesmo
ranking de dominância (D=E).
Warnings:
A função é interrompida e retornam-se mensagens de erro quando o objeto de entrada
não é um dataframe e quando o argumento 'ind' não é fornecido.
Author(s):
María Fernanda De la Fuente Castellón
ferni211@yahoo.com.ar
References:
Lehner P.N. 1996. Handbook of Ethological Methods. Second edition. Cambridge:
Cambridge University Press. 672p.
Examples:
#Exemplo 1
#criando vetores para incluir no dataframe
emissor<-c(rep("A", 32), rep("B", 110), rep("C", 102), rep("D", 27), rep("E", 13))
receptor<-c(rep("D", 21), rep("E", 11), rep("A", 41),rep("C", 1), rep("D", 37), rep("E", 31), rep("A", 17),
rep("B", 14), rep("D", 12), rep("E", 59), rep("A", 3), rep("E", 24), rep("A", 13))
interacoes<-c(rep(1,284))
#criando dataframe para exemplo com grupo de 5 individuos
exemplo<-data.frame(emissor, receptor, interacoes)
domi(exemplo, ind=5)
#Exemplo 2
#exemplo com objeto de classe errada (nao dataframe)
data<-c(rep("A", 32), rep("B", 110), rep("C", 102), rep("D", 27), rep("E", 13))
domi(data, ind=5)
#Exemplo 3
#exemplo sem colocar o argumento do número de indivíduos no grupo (ind)
domi(exemplo)
=====Código da função=====
#funcao que a partir de dados sobre interacoes diáticas de individuos de um grupo cria uma matriz
#de dominancia, calcula o indice de dominancia individual de cada membro do grupo (indice de Coulon)
#e calcula o indice de hierarquia linear do grupo (indice de Landau)
domi<-function(dados, ind=y)
{
#confere se o objeto 'dados' é um dataframe
if(class(dados)!="data.frame")
#caso nao seja um dataframe, a funcao para e exibe mensagem de erro informando o problema
stop("\n Objeto 'dados' nao e um dataframe.\n")
#confere se esta faltando o argumento 'ind'
if(missing(ind))
#caso estiver faltando, a funcao para e exibe mensagem de erro
stop("\n Número total de individuos no grupo ('ind') não fornecido.\n")
#CRIANDO MATRIZ DE DOMINANCIA
#identificando os individuos do grupo a partir dos niveis da primeira coluna do dataframe
#para colocar a identificacao dos individuos nos nomes de linhas e colunas da matriz
id<-levels(dados[,1])
#criando matriz de dominancia a partir de uma tabela com as informacoes do dataframe
#neste momento o argumento ind informa o tamanho do grupo para criar o numero certo de
#linhas e colunas da matriz, a soma das interacoes entre as diades preenche a matriz
matdom<-matrix(table(dados[,1], dados[,2]), ncol = ind, nrow=ind, dimnames=list(id, id))
#CALCULANDO O INDICE DE DOMINANCIA INDIVIDUAL (COULON)
#formula do indice: numero de interacoes emitidas/numero de interacoes emitidas+numero de interacoes recebidas
#soma das interacoes emitidas de cada individuo
somaemi<-tapply(dados[,3], dados[,1], sum)
#soma das interacoes recebidas de cada individuo
somarec<-tapply(dados[,3], dados[,2], sum)
#soma total das interacoes (emitidas e recebida) de cada individuo
total<-(somaemi+somarec)
#dividindo as interacoes emitidas pelo numero total de interacoes emitidas e recebidas de cada individuo
coulon<-(somaemi/total)
#CALCULANDO INDICE DE HIERARQUIA LINEAR (LANDAU)
{
#renomeando matriz de dominancia para substituir numero de interacoes entre diades por 1, 0.5 ou 0,
#uma vez que a formula do indice é (12/((n^3)-n))*sum((v-((n-1)/2))^2), o v= numero de individuos que
#cada animal domina. Desta forma, 1 é cada animal dominado, 0.5 é quando o numero de interacoes emitidas entre uma
#diade é igual (teriam o mesmo nivel de dominancia entre eles) e 0 quando o individuo nao é dominado
m<-matdom
#cria dois loops para passar por todos os valores da matriz (combinacoes de linhas e colunas)
for(i in 1:nrow(m))
for(j in 1:nrow(m))
#se o valor [emissor, receptor] é maior que o valor [receptor,emissor] entre uma diade,
#o valor da primeira é substituido por 1
if (m[i,j]>m[j,i]) m[i,j]=1
# se ambos valores entre a diade sao iguais, o valor das duas é substituido por 0.5
else if(m[i,j]==m[j,i]) m[i,j]=m[j,i]=0.5
# se nao ocorre nada do anterior, substituir por zero
else m[i,j]=0
#coloca zeros ao longo da diagonal da matriz, pois um individuo nao pode interagir com ele mesmo
diag(m)=0
# soma os valores das linhas da nova matriz para calcular o numero de animais que cada individuo domina
v<-rowSums(m)
# mostra o numero de individuos do grupo
n<-nrow(m)
#formula para calcular o índice de Landau
landau<-(12/((n^3)-n))*sum((v-((n-1)/2))^2)
}
#criando lista com os objetos para retornar
lista<-list(matdom, coulon, landau)
#nomeando os objetos da lista que retorna
names(lista)<-paste(list("Matriz de dominância", "Indices de dominância individual (Coluon)", "Indice de hierarquia linear do grupo (Landau)"))
#funcao retorna a lista com a matriz de dominancia, o indice de Coulon e indice de Landau
return(lista)
}
=====Arquivos da função=====
{{:bie5782:01_curso_atual:alunos:trabalho_final:ferni211:funcao_domi.r|Script função domi}}
{{:bie5782:01_curso_atual:alunos:trabalho_final:ferni211:help_domi.txt|Help domi}}