André Vieira Rodrigues
Doutorando em Zoologia, Instituto de Biociências, USP. Título da tese: The evolution of self-domestication: a comparative approach.
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_best1como vetor de comprimenton_males. - Cria objeto
m_best2como vetor de comprimenton_males. - For
ivariando de 1 an_males:- Cria objeto
m_disputa1com uma amostra de 1 a 10 com 11-scenario1valor(es). - Pega maior valor de
m_disputa1e coloca na posiçãoidem_best1.
- For
ivariando de 1 an_males:- Cria objeto
m_disputa2com uma amostra de 1 a 10 com 11-scenario2valor(es). - Pega maior valor de
m_disputa2e coloca na posiçãoidem_best2.
- Cria objeto
tcomo sendo um teste t entrem_best1em_best2 - Se
gpcfor igual aFALSEterminar 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_circxcomo um vetor vazio de 100 valores - Cria objeto
pos_circycomo um vetor vazio de 100 valores - For
ivariando de 1 a 100:- Seleciona um valor real aleatório de 0 a 100 e coloca em
pos_circxna posiçãoi - Seleciona um valor real aleatório de 0 a 100 e coloca em
pos_circyna posiçãoi - Desenha um círculo marrom nas posições x y de
pos_circx[i]epos_circy[i], respectivamente, com o raio igual ao valor descenario1.
- For
ivariando de 1 a 100:- For
jvariando de 1 ascenario1:- 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_circxcomo um vetor vazio de 100 valores - Cria objeto
pos_circycomo um vetor vazio de 100 valores - For
ivariando de 1 a 100:- Seleciona um valor real aleatório de 0 a 100 e coloca em
pos_circxna posiçãoi - Seleciona um valor real aleatório de 0 a 100 e coloca em
pos_circyna posiçãoi - Desenha um círculo marrom nas posições x y de
pos_circx[i]epos_circy[i], respectivamente, com o raio igual ao valor descenario2.
- For
ivariando de 1 a 100:- For
jvariando de 1 ascenario2:- 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_best1em_best2
<box red 70% | Vitor Rios> 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 Vitor Rios </box>
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
rhpcomo vetor de comprimentone valores de uma amostra de 1:100 sem repetições. - Cria objeto
s_maxigual arhpsem o maior valor. - Cria objeto
s_minigual arhpsem o menor valor. - Cria objeto matriz
diffsde diferença entre cada valor derhp. - Cria objeto matriz
medde média entre cada valor derhp. - Se
modeligual a “all” ou “woa”.- Simula correlação positiva entre valores de
s_maxe um objeto de tempot1. - Simula correlação nula entre valores de
s_mine um objeto de tempot2. - Simula correlação negativa entre valores do triângulo superior de
diffse um objeto de tempot3. - Se
modeligual a “all”:- Cria layout para apresentação dos três modelos.
- Plota um gráfico de
s_maxport1e adiciona linha de tendência. - Plota um gráfico de
s_minport2e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport3e adiciona linha de tendência.
- Se não:
- Plota um gráfico de
s_maxport1e adiciona linha de tendência. - Plota um gráfico de
s_minport2e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport3e adiciona linha de tendência.
- Se
modeligual a “all” ou “cam”:- Simula correlação positiva entre valores de
s_maxe um objeto de tempot4. - Simula correlação negativa entre valores de
s_mine um objeto de tempot5. - Simula correlação negativa entre valores do triângulo superior de
diffse um objeto de tempot6. - Simula correlação positiva entre valores do triângulo superior de
mede um objeto de tempot7. - Se
modeligual a “all”:- Mantêm layout anterior para apresentação dos três modelos.
- Plota um gráfico de
s_maxport4e adiciona linha de tendência. - Plota um gráfico de
s_minport5e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport6e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport7e adiciona linha de tendência.
- Se não:
- Plota um gráfico de
s_maxport4e adiciona linha de tendência. - Plota um gráfico de
s_minport5e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport6e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport7e adiciona linha de tendência.
- Se
modeligual a “all” ou “sam”- Simula correlação positiva entre valores de
s_maxe um objeto de tempot8. - Simula correlação negativa entre valores de
s_mine um objeto de tempot9. - Simula correlação negativa entre valores do triângulo superior de
diffse um objeto de tempot10. - Simula correlação nula entre valores do triângulo superior de
mede um objeto de tempot11. - Se
modeligual a “all”:- Mantêm layout anterior para apresentação dos três modelos.
- Plota um gráfico de
s_maxport8e adiciona linha de tendência. - Plota um gráfico de
s_minport9e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport10e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport11e adiciona linha de tendência.
- Se não:
- Plota um gráfico de
s_maxport8e adiciona linha de tendência. - Plota um gráfico de
s_minport9e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport10e adiciona linha de tendência. - Plota um gráfico do triângulo superior de
diffsport11e 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.
<box red 70% | Vitor Rios> 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 Vitor Rios </box>
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: Função: selsex().
- Página de ajuda da minha função: Help.
