Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2019:alunos:trabalho_final:andrevrodrigues:start

André Vieira Rodrigues

cara-orkut1.jpg

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_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

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

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.

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

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.

Plano A

05_curso_antigo/r2019/alunos/trabalho_final/andrevrodrigues/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)