Investigações posteriores sobre autocorrelação (Gaspar)

De Física Computacional
Edição feita às 16h32min de 19 de setembro de 2011 por Tekkito (Discussão | contribs)

(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

Definição

Partimos da definição de autocorrelação de um sistema de agentes em relação ao estado do mesmo sistema em :



sendo o número de agentes e a riqueza do -ésimo agente. Também na forma na forma de produto escalar:



sendo o vetor que representa o sistema de agentes.

Autocorrelação para distribuição uniforme entre 0 e 1

Reconhecemos da definição acima que o denominador depende somente de . Portanto, é esperado que ao longo da simulação, teremos para cada estado de referência um denominador diferente, pois a distribuição de renda do sistema vai se alterando. Entretanto, o denominador será sempre o mesmo em pois trata-se do estado inicial do sistema, que é uma distribuição uniforme de riqueza entre 0 e 1. Pode-se mostrar que, para uma distribuição uniforme,

para uniforme.

Caso particular: quando um agente suga toda a riqueza

Seja o -ésimo agente o agente que vai concentrar toda a riqueza. Então,

em que representa a riqueza total do sistema. Como o sistema é conservativo, podemos usar o estado inicial do sistema para obter de acordo com

A autocorrelação para vale, portanto,

Como a riqueza é concentrada em apenas um agente, sobrevive apenas a -ésima parcela da soma, correspondente à riqueza do -ésimo agente:

Mas

de modo que

Denominador da autocorrelação em função de

Abaixo, gráficos do denominador em função de e de (parâmetro de assimetria) para um sistema de 300 agentes (média entre 100 rodadas, ou amostras) para as regras do mínimo e do perdedor. Observe como o denominador não é afetado por para .


"Anomalias" da autocorrelação

Abaixo, gráficos de para um sistema de 300 agentes (média entre 100 rodadas, ou amostras), sendo um gráfico para cada . Para manter os gráficos limpos, eles são apresentados sem legendas.

Informações úteis:

  • cada gráfico contem 41 curvas de autocorrelação;
  • cada curva de autocorrelação é traçada em relação aos estados do sistema nos tempos ;
  • observe que, à medida que o sistema se aproxima do estado de equilíbrio, as curvas de autocorrelação se "empacotam" em torno de um certo valor;
  • observe que, para a regra do perdedor, há um certo tempo durante o qual a autocorrelação é maior do que 1, mas que cai para um valor menor do que 1 ao se aproximar do estado de equilíbrio.
  • observe que há uma curva de autocorrelação vermelha destacada de todas as outras: é a autocorrelação em relação ao estado inicial (), cujo valor assintótico visivelmente independe tanto de como da regra em questão. Essa é uma anomalia ainda em estudo.


    "Miolo" do programa utilizado para cálculo de autocorrelação

    Tendo em vista as anomalias apresentadas acima, apresentamos o pedaço do programa empregado para calcular a autocorrelação. Está sob análise pois, se há alguma real anomalia, deve haver um erro nessa parte do programa.

    Breve legenda

      B(agente)            := vetor de $$$ dos agentes 
      B_TAU(agente,tau)    := matriz com estado do sistema para cada tau
      CORR_DENOM(tau)      := vetor com denominadores da autocorrelação para
                              cada tau
      MEAN_CORR(tempo,tau) := matriz com valores de autocorrelação para cada
                              tau e para cada tempo além de tau; no final, é
                              feita uma média entre todas as amostras para
                              obter melhor resolução   
      
    

    Cálculo do denominador no estado inicial:

      CORR_DENOM(0) = DOT_PRODUCT(B,B)
      
      DO j = 1, agents       !!!salva o estado
         B_TAU(j,0) = B(j)   !!!inicial do
      END DO                 !!!sistema
      
      MEAN_CORR(0,0) = MEAN_CORR(0,0) + 1   !!!por def, a correlação
                                            !!!no estado inicial = 1
      ...
    

    Função que calcula autocorrelação:

      corr = 0
      
      DO j = 1, agents
         corr = corr + B(j)*B_TAU(j,k)
      END DO
      
    
    corr = corr/CORR_DENOM(k)