====== André Vieira Rodrigues ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:andrevrodrigues:cara-orkut1.jpg?200|}} Doutorando em Zoologia, Instituto de Biociências, USP. Título da tese: The evolution of self-domestication: a comparative approach. ====== Exercícios ====== [[.:lista de exercícios]] ====== Proposta de Trabalho Final ====== ==== Plano A: Seleção intra-sexual dependente da disponibilidade de recursos ==== **Contextualização** A função tem como propósito ser utilizada em aulas de comportamento animal, com o tema central de Seleção Sexual. A proposta é simular um cenário de seleção sexual dependente da disponibilidade de recursos (Emlen & Oring, 1977). Ou seja, uma situação hipotética na qual ocorre seleção intra-sexual, sendo que os próprios machos lutam por recursos (alimento, por exemplo) e as fêmeas se acasalam aleatoriamente com a disponibilidade destes. Assim, espera-se que apenas os machos com o fenótipo mais favorável (valores de 1 a 10, sendo 10 o mais favorável) conseguem ter acesso ao recurso. Com essa função, o usuário poderá comparar intensidade de seleção sexual em diferentes cenários de disponibilidade de recursos. Desta maneira, a função aceitará como argumento dois valores de quantidade de disponibilidade de recursos (variando de 1 – pouca disponibilidade e 10 – alta disponibilidade) e mais um valor com a quantidade de eventos de seleção (padrão = 100). Para o uso desta função, será necessário utilizar o pacote ''plotrix'' para a criação de alguns elementos gráficos. **Planejamento da função** **Entrada:**''selsex(scenario1, scenario2, n_males, gpc)'' * ''scenario1''(integer, 1 ≤ ''scenario1'' ≤ 10) * ''scenario2''(integer, 1 ≤ ''scenario2'' ≤ 10) * ''n_males''(integer, ''n_males'' > 0) * ''gpc'' (Logical: ''TRUE'' || ''FALSE'') **Verificação de parâmetros:** * ''scenario1'' é numérico, inteiro e entre 1 e 10. * ''scenario2'' é numérico, inteiro e entre 1 e 10. * se ''scenario1'' == ''scenario2'', advertir que não terá comparação significativa * ''n_males'' é numérico, inteiro e maior que 0. * se ''n_males'' < 30, advertir sobre problema amostral para simulação * ''gpc'' é Logical. **Pseudo-código:** * Cria objeto ''m_best1'' como vetor de comprimento ''n_males''. * Cria objeto ''m_best2'' como vetor de comprimento ''n_males''. * For ''i'' variando de 1 a ''n_males'': * Cria objeto ''m_disputa1'' com uma amostra de 1 a 10 com 11-''scenario1'' valor(es). * Pega maior valor de ''m_disputa1'' e coloca na posição ''i'' de ''m_best1''. * For ''i'' variando de 1 a ''n_males'': * Cria objeto ''m_disputa2'' com uma amostra de 1 a 10 com 11-''scenario2'' valor(es). * Pega maior valor de ''m_disputa2'' e coloca na posição ''i'' de ''m_best2''. * Cria objeto ''t'' como sendo um teste t entre ''m_best1'' e ''m_best2'' * Se ''gpc'' for igual a ''FALSE'' terminar a função e retornar apenas o teste t * Abre o device gráfico: ''x11()'' * Cria layout para quatro gráficos e uma área para as legendas * Plota um histograma de frequência dos valores de ''m_best1''. * Plota um histograma de frequência dos valores de ''m_best2''. * Cria um plot vazio * Coloca o texto: ''scenario1''"males for each female" como título * Cria objeto ''pos_circx'' como um vetor vazio de 100 valores * Cria objeto ''pos_circy'' como um vetor vazio de 100 valores * For ''i'' variando de 1 a 100: * Seleciona um valor real aleatório de 0 a 100 e coloca em ''pos_circx'' na posição ''i'' * Seleciona um valor real aleatório de 0 a 100 e coloca em ''pos_circy'' na posição ''i'' * Desenha um círculo marrom nas posições x y de ''pos_circx[i]'' e ''pos_circy[i]'', respectivamente, com o raio igual ao valor de ''scenario1''. * For ''i'' variando de 1 a 100: * For ''j'' variando de 1 a ''scenario1'': * desenha um ponto verde em posições aleatórias próximas do centro do círculo marrom. * Cria um plot vazio * Coloca o texto: ''scenario2''"males for each female" como título * Cria objeto ''pos_circx'' como um vetor vazio de 100 valores * Cria objeto ''pos_circy'' como um vetor vazio de 100 valores * For ''i'' variando de 1 a 100: * Seleciona um valor real aleatório de 0 a 100 e coloca em ''pos_circx'' na posição ''i'' * Seleciona um valor real aleatório de 0 a 100 e coloca em ''pos_circy'' na posição ''i'' * Desenha um círculo marrom nas posições x y de ''pos_circx[i]'' e ''pos_circy[i]'', respectivamente, com o raio igual ao valor de ''scenario2''. * For ''i'' variando de 1 a 100: * For ''j'' variando de 1 a ''scenario2'': * desenha um ponto verde em posições aleatórias próximas do centro do círculo marrom. * Cria um plot vazio * Desenha um círculo marrom pequeno para legenda * Desenha um ponto verde para legenda * Adiciona o texto: "Area of\navailable\resource" ao lado do círculo marrom * Adiciona o texto: "Male\ndistribution" ao lado do ponto verde * Retorna t. **Saída** * Dois histogramas com as frequências dos fenótipos. * Dois cenários simulados com a distribuição dos recursos, machos e fêmeas. * O sumário da comparação teste t entre ''m_best1'' e ''m_best2'' André, esta proposta está bem organizada, mas faltam alguns detalhes pra ela ficar completa, principalmente as fórmulas que vc vai usar pra calcular suas simulações e obter os resultados. Quando você diz "Plota dois cenários hipotéticos com a distribuição dos recursos, machos e fêmeas.", de onde saem essas fêmeas? Pode ser que seja óbvio pra quem está familiarizado com a teoria, mas eu fiquei confuso. Da mesma forma, "Plota um boxplot mostrando a diferença de distribuição dos fenótipos de machos no cenário 1 e 2", de onde saem esses fenótipos? Na sua saída, o boxplot e os histogramas me parecem serem redundantes, os dois apresentam a distribuição de fenótipos, correto? Se são a mesma informação, escolha um deles, se não, deixe isso claro na proposta [[vrios81@gmail.com|Vitor Rios]] **RESPOSTA ÀS REVISÕES** **Comentário 1:** "as fórmulas que vc vai usar pra calcular suas simulações e obter os resultados." **Resposta:** Não existem fórmulas, apenas selecionei o maior valor dentre um vetor em um dos ''for''. **Comentário 2:** "Quando você diz "Plota dois cenários hipotéticos com a distribuição dos recursos, machos e fêmeas.", de onde saem essas fêmeas?" **Resposta:** As fêmeas estariam distribuídas ao redor das áreas de recursos, não sendo necessário acrescentar um objeto ''fêmea'' ou similar. **Comentário 3:** ""Plota um boxplot mostrando a diferença de distribuição dos fenótipos de machos no cenário 1 e 2", de onde saem esses fenótipos?" **Resposta:** Esses fenótipos são caracterizados pelos objetos ''m_disputa1'', ''m_disputa2'', ''m_best1'' e ''m_best2'', e possuem valores que variam de 1 a 10 (1 - macho de baixo poder de disputa e 10 - machos com alto poder de disputa" **Comentário 4:** "Na sua saída, o boxplot e os histogramas me parecem serem redundantes, os dois apresentam a distribuição de fenótipos, correto? Se são a mesma informação, escolha um deles, se não, deixe isso claro na proposta" **Resposta:** Realmente. Excluí a criação do boxplot. ==== Plano B: Modelos de agressão ==== **Contextualização** Ao estudar disputas intraespecíficas, é possível adotar modelos que explicam qual competidor será o vencedor e também a duração do confronto. Para esta função, o conceito de //Resource Holding Potential// (RHP) será utilizado na definição do vencedor. Este conceito pode ser traduzido como força, tamanho corpóreo ou de um armamento ou capacidade de luta, ou seja, é uma medida absoluta de luta e manutenção de um recurso por um indivíduo. Entretanto, este conceito não traz informações sobre o tempo que uma disputa deverá durar. Neste contexto, três modelos principais são adotados para explicar e prever o tempo de duração de um confronto entre dois indivíduos de uma mesma espécie. Estes são: //War of Attrition// (WOA), //Cumulative Assessment Model// (CAM) e //Sequential Assessment Model// (SAM). O objetivo principal dessa função é demonstrar para o usuário como que o RHP dos combatentes se comporta em relação ao tempo da disputa para cada um dos três modelos (ou uma comparação entre os três). **Planejamento da função** **Entrada:**''ready_fight(n, modelo = "all")'' * ''n''(integer, ''n'' > 0) * ''model'' (character, padrão = "all" |"woa"|"cam"|"sam") **Verificação de parâmetros:** * ''n'' é numérico, inteiro e maior ou igual a 1. * se ''n'' < 20, advertir sobre problema amostral para simulação. * ''model'' é character e igual a uma das opções: “all” | “woa” | “sam” | “cam”. **Pseudo-código:** * Cria objeto ''rhp'' como vetor de comprimento ''n'' e valores de uma amostra de 1:100 sem repetições. * Cria objeto ''s_max'' igual a ''rhp'' sem o maior valor. * Cria objeto ''s_min'' igual a ''rhp'' sem o menor valor. * Cria objeto matriz ''diffs'' de diferença entre cada valor de ''rhp''. * Cria objeto matriz ''med'' de média entre cada valor de ''rhp''. * Se ''model'' igual a “all” ou “woa”. * Simula correlação positiva entre valores de ''s_max'' e um objeto de tempo ''t1''. * Simula correlação nula entre valores de ''s_min'' e um objeto de tempo ''t2''. * Simula correlação negativa entre valores do triângulo superior de ''diffs'' e um objeto de tempo ''t3''. * Se ''model'' igual a “all”: * Cria layout para apresentação dos três modelos. * Plota um gráfico de ''s_max'' por ''t1'' e adiciona linha de tendência. * Plota um gráfico de ''s_min'' por ''t2'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t3'' e adiciona linha de tendência. * Se não: * Plota um gráfico de ''s_max'' por ''t1'' e adiciona linha de tendência. * Plota um gráfico de ''s_min'' por ''t2'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t3'' e adiciona linha de tendência. * Se ''model'' igual a “all” ou “cam”: * Simula correlação positiva entre valores de ''s_max'' e um objeto de tempo ''t4''. * Simula correlação negativa entre valores de ''s_min'' e um objeto de tempo ''t5''. * Simula correlação negativa entre valores do triângulo superior de ''diffs'' e um objeto de tempo ''t6''. * Simula correlação positiva entre valores do triângulo superior de ''med'' e um objeto de tempo ''t7''. * Se ''model'' igual a “all”: * Mantêm layout anterior para apresentação dos três modelos. * Plota um gráfico de ''s_max'' por ''t4'' e adiciona linha de tendência. * Plota um gráfico de ''s_min'' por ''t5'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t6'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t7'' e adiciona linha de tendência. * Se não: * Plota um gráfico de ''s_max'' por ''t4'' e adiciona linha de tendência. * Plota um gráfico de ''s_min'' por ''t5'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t6'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t7'' e adiciona linha de tendência. * Se ''model'' igual a “all” ou “sam” * Simula correlação positiva entre valores de ''s_max'' e um objeto de tempo ''t8''. * Simula correlação negativa entre valores de ''s_min'' e um objeto de tempo ''t9''. * Simula correlação negativa entre valores do triângulo superior de ''diffs'' e um objeto de tempo ''t10''. * Simula correlação nula entre valores do triângulo superior de ''med'' e um objeto de tempo ''t11''. * Se ''model'' igual a “all”: * Mantêm layout anterior para apresentação dos três modelos. * Plota um gráfico de ''s_max'' por ''t8'' e adiciona linha de tendência. * Plota um gráfico de ''s_min'' por ''t9'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t10'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t11'' e adiciona linha de tendência. * Se não: * Plota um gráfico de ''s_max'' por ''t8'' e adiciona linha de tendência. * Plota um gráfico de ''s_min'' por ''t9'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t10'' e adiciona linha de tendência. * Plota um gráfico do triângulo superior de ''diffs'' por ''t11'' e adiciona linha de tendência. **Saída** * Gráficos para cada modelo: "woa", "cam" ou "sam" * Ou um layout comparando cada gráfico de cada modelo. André, esta proposta também precisa de mais detalhes de como os cálculos serão feitos, até para que a gente avaliar se vc implementou as equações corretamente no código. Aqui os objetos de tempo também surgem do nada e sem explicação de porque eles são necessários. Como você vai simular uma correlação negativa, nula ou positiva, e elas vão ser diferentes para cada modelo? Como você vai correlacionar o triângulo superior da matriz com o objeto de tempo? Um detalhe de estrutura do código que pode te ajudar (e facilitar o entendimento da proposta) é que você não precisa testar sempre se o tipo de modelo é "all" para plotar os resultados. Faça os cálculos para cada modelo requisitado separadamente e armazene cada resultado numa coluna de um data.frame "modelos", e faça os plots no fim da função, depois de calcular os modelos. Se o tipo do modelo for "all", vc faz o plot conjunto, senão plota só o modelo requisitado Eu sugeriria seguir com a proposta B, pois me parece mais complexa e compara mais cenários, mas tente reformular as duas primeiro e me mande um email quando fizer as alterações [[vrios81@gmail.com|Vitor Rios]] **Respostas à revisão** **Comentário:** "André, esta proposta também precisa de mais detalhes de como os cálculos serão feitos, até para que a gente avaliar se vc implementou as equações corretamente no código." **Resposta:** Como a ideia é "forçar" um gráfico que represente as correlações entre variáveis, fiz distribuições de valores do Y (usando ''rnorm()'') em relação ao X gerando slopes que levam a interpretação de correlações positivas, ou negativas ou nulas. **Comentário:** "Aqui os objetos de tempo também surgem do nada e sem explicação de porque eles são necessários." **Resposta:** Ao ler a contextualização coloco: "...não traz informações sobre o **tempo** que uma disputa deverá durar. Neste contexto, três modelos principais são adotados para **explicar e prever o tempo** de duração de um confronto entre dois indivíduos de uma mesma espécie.". Desta forma, não compreendi como o objeto pode ter aparecido "do nada" na sua leitura da proposta. **Comentário:** "Como você vai simular uma correlação negativa, nula ou positiva, e elas vão ser diferentes para cada modelo?" **Resposta:** As correlações expliquei na resposta do primeiro comentário. Os modelos explicam diferentes tipos de disputa em diferentes cenários, não existe relação entre os modelos com exceção do tema central. Ou seja, por questões didáticas apenas, essa função mostraria como que o tempo de luta se comporta em relação a capacidade de luta de combatentes em diferentes cenários. **Comentário:** "Como você vai correlacionar o triângulo superior da matriz com o objeto de tempo?" **Resposta:** "A matrix será de diferenças de RHPs entre os machos, então utilizarei ''as.vector(matrix[upper.tri(matrix)])'' para transformar em um vetor e relacionarei (conforme simulação citada anteriormente dos valores de tempo) com um vetor tempo. Sempre "forçando" correlações negativas, positivas ou nulas, conforme modelo respectivo. ==== Links para trabalho final ==== === Plano A === * Página da minha função: [[.:selsex]]. * Página de ajuda da minha função: [[.:Help]].