{{: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}}