Ferramentas do usuário

Ferramentas do site


ecovirt:roteiro:math:zerosumr_old

Dinâmica de soma zero - Roteiro em R

ultimate_game.png

O conceito de de soma zero vem da teoria dos jogos, e descreve a divisão de uma quantia fixa entre participantes, de modo que só se ganha o que outros perdem.

Se os ganhos e consequentes perdas acontecem com uma certa probabilidade, o jogo torna-se uma dinâmica estocástica, como na teoria neutra da biodiversidade. Seu criador, Stephen Hubbell, assumiu que as comunidades estão saturadas, de modo que um novo indivíduo só se estabelece se outro morre. A sucessão ao acaso de mortes, nascimentos e chegada de migrantes criaria então uma dinâmica de zoma zero, que explicaria vários padrões das comunidades.

Neste tutorial, simulamos uma dinâmica estocástica de soma zero muito simples no ambiente R. Depois disso, você pode estudar a aplicação desse modelo no roteiro sobre teoria neutra da biodiversidade.

Para prosseguir você deve ter o ambiente R instalado. Se você não tem e não sabe como ter, consulte a página de Instalação.

Um Joguinho Besta

Vamos imaginar um jogo de apostas entre dois jogadores, sem empates. A cada rodada o perdedor da aposta paga uma quantia fixa ao ganhador. Os dois jogadores têm a mesma probabilidade de ganhar a cada rodada. Esse é um jogo de soma zero, pois o valor total em jogo não se altera. O que muda é apenas a fração deste total em poder de cada jogador. Note que a propriedade de soma zero é possível mesmo que os jogadores tenham chances diferentes de vencer, ou que a quantia que o perdedor paga também seja sorteada.

Em nossa simulação, o jogo só termina quando acaba, ou seja, quando um dos dois jogadores perde todo o dinheiro1). Vamos simular esta situação com uma função em R. Copie o código da função abaixo para a linha de comando do R:

jogo <- function(aposta=1,total=20){
  X <- total/2
  results <- X
  while(X>0&X<total){
    X <- X+sample(c(aposta,-1*aposta),1)
    results <- c(results,X)
  }
  plot(1:length(results),results, type="l", col="blue",ylim=c(0,total), xlab="N de rodadas", ylab="Valor")
  lines(1:length(results),total-results, col="red")
  abline(h=c(0,total),lty=2)
}

Esta função tem apenas dois argumentos:

  • aposta: que é o valor pago pelo perdedor a cada aposta
  • total: o valor total de dinheiro em jogo. No início este total é dividido igualmente entre os jogadores.

A simulação transcorre até o final do jogo. Para simular um jogo com apostas de uma unidade e total em jogo de cem unidades execute o comando no R:

jogo(aposta=1, total=100)

O que afeta o tempo de jogo?

A simulação transcorre até o final do jogo, ou até o tempo máximo se esgotar. Varie o total em jogo e o valor da aposta e avalie seu efeito na duração do jogo. Sugestões de valores:

  • total = 100, aposta = 1
  • total = 100, aposta = 10
  • total = 1000, aposta = 1
  • total = 1000, aposta = 10

Em dinâmicas estocásticas o resultado varia a cada vez, mesmo que os parâmetros sejam os mesmos. Por isso repita cada simulação algumas vezes para assegurar-se dos resultados.

Perguntas

  1. Qual o efeito do aumento do total em jogo e do tamanho da aposta sobre o tempo para que o jogo acabe?
  2. Este jogo também é um processo de caminhada aleatória em uma dimensão. Explique porque.
1)
ou quando você quiser parar o jogo, se achar que está demorando muito
ecovirt/roteiro/math/zerosumr_old.txt · Última modificação: 2016/05/10 07:19 (edição externa)