Modelo de agentes de distribuição de riquezas: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Linha 65: Linha 65:


Este resultado (a regra do mínimo sempre gerar uma condensação enquanto que a regra do perdedor estabiliza em um valor <math>\neq 1</math> para <math>\beta>0</math>) ocorre pois, como o valor de beta é igual para todos os agentes, teremos que, por (3), os agentes com maior riqueza irão perder mais dinheiro na regra do perdedor do que os agentes com menor riqueza e, desta forma, a riqueza estará mais bem distribuída quando o equilíbrio for atingido. Por outro lado, como na regra do mínimo o valor trocado independe de quem perde, se forem sorteados agentes com uma diferença muito grande de riqueza teremos que, por (2), a quantidade de riqueza perdida pelo agente mais pobre será muito maior comparativamente com sua própria riqueza. Desta forma teremos que, após tempo suficiente, a regra do mínimo sempre irá tender para uma distribuição de renda desigual.
Este resultado (a regra do mínimo sempre gerar uma condensação enquanto que a regra do perdedor estabiliza em um valor <math>\neq 1</math> para <math>\beta>0</math>) ocorre pois, como o valor de beta é igual para todos os agentes, teremos que, por (3), os agentes com maior riqueza irão perder mais dinheiro na regra do perdedor do que os agentes com menor riqueza e, desta forma, a riqueza estará mais bem distribuída quando o equilíbrio for atingido. Por outro lado, como na regra do mínimo o valor trocado independe de quem perde, se forem sorteados agentes com uma diferença muito grande de riqueza teremos que, por (2), a quantidade de riqueza perdida pelo agente mais pobre será muito maior comparativamente com sua própria riqueza. Desta forma teremos que, após tempo suficiente, a regra do mínimo sempre irá tender para uma distribuição de renda desigual.
----


Nas '''Figuras 3 e 4''', temos outra evolução temporal do Índice de Gini. Nestes casos, as simulações foram realizadas com número de agentes<math>N</math> igual a <math>20000</math> sob uma média de 10 ensembles, assim como as anteriores. Além disso, as condições iniciais foram tais que tanto a riqueza (<math>w_i</math>) quanto o fator de aversão-a-riscos (<math>\beta_i</math>) foram inicialmente distribuídas no intervalo <math>[0,1]</math> seguindo uma distribuição aleatória uniforme. Desta forma podemos obter um resultado mais realista, onde cada agente tem um <math>\beta_i</math> diferente e aleatório.
Nas '''Figuras 3 e 4''', temos outra evolução temporal do Índice de Gini. Nestes casos, as simulações foram realizadas com número de agentes<math>N</math> igual a <math>20000</math> sob uma média de 10 ensembles, assim como as anteriores. Além disso, as condições iniciais foram tais que tanto a riqueza (<math>w_i</math>) quanto o fator de aversão-a-riscos (<math>\beta_i</math>) foram inicialmente distribuídas no intervalo <math>[0,1]</math> seguindo uma distribuição aleatória uniforme. Desta forma podemos obter um resultado mais realista, onde cada agente tem um <math>\beta_i</math> diferente e aleatório.

Edição das 01h43min de 27 de maio de 2021

Grupo: Bernardo Boatini, Murilo Kessler Azambuja e Natália Ferrazzo

Introdução

A física estatística, em particular a teoria cinética dos gases, fornece uma estrutura útil para descrever a complexidade das interações de mercado. Da mesma forma que um sistema físico composto de muitas partículas trocando energia via colisões binárias, os Modelos de Troca de Cinética consideram um conjunto de agentes econômicos interagentes que trocam de forma binária uma quantidade conservada chamada de riqueza.

Este trabalho tem como objetivo calcular a evolução temporal da distribuição de riqueza entre entre um certo numero de agentes, utilizando diferentes regras de interação e um critério para medir quantitativamente a desigualdade de econômica no sistema.

Modelo

Vamos supor um sistema com agentes, onde o agente é caracterizado pela riqueza e pelo fator de aversão-a-riscos no tempo . Podemos então definir uma troca de riqueza entre os agentes e —selecionados aleatoriamente, supondo que ganha uma riqueza de —, como [1]

Em modelos de trocas binárias como esse, mesmo que a regra não favoreça nenhum dos lados, já foi comprovado que o estado final sempre leva a condensação de riqueza em um agente[2], ou seja, máxima desigualdade. Para pensar formas de evita a condensação certas dinâmicas podem ser adicionadas ao problema, como definir uma prefêrcia de troca do mais rico para o agente mais pobre.

Para decidir quem ganha e quem perde riqueza durante a interação entre agentes, utiliza-se uma probabilidade de favorecer o agente mais pobre, evitando assim a condensação, i.e., o acúmulo de toda riqueza disponível em apenas um ou poucos agentes [1]. Esta probabilidade é dada por [1] [3]

onde é chamado de fator de proteção social, que varia de —mesma probabilidade de ganho de riqueza para ambos os agentes— até —máxima probabilidade de favorecer o agente mais pobre—. Desta forma, a probabilidade do agente mais pobre ganhar a quantidade em uma interação entre agentes é , enquanto que a probabilidade do agente mais rico ganhar a mesma quantidade é . Além disso, vemos na equação (1) que quanto maior a desigualdade de riqueza (), maior é a atuação de . Isso nos mostra que o fator de proteção social é uma forma de simular a aplicação políticas sociais que favorecem a distribuição de renda na população.

Uma vez sorteado qual agente ganha e qual perde na interação, deve-se determinar qual será a quantidade a ser trocada por ambos. Existem diversas formas de se determina-la (algumas delas encontram-se de forma detalhada em [2]), porém neste trabalho focaremos na regra do mínimo e na regra do perdedor, enunciadas abaixo.

Regra do Mínimo

Nesta regra, temos que a quantidade de riqueza trocada entre os agentes é definida como [4]

Esta regra muitas vezes também é chamada de regra justa, pois a quantidade de riqueza trocada entre os agentes é a mesma, independente do ganhador, logo nenhum dos agentes é favorecido.

Regra do Perdedor

Neste caso, para tentar evitar condensações, temos que é obtido apenas pela quantia arriscada pelo perdedor, desta forma temos [4]

lembrando que é o agente perdedor. Desta forma, a quantidade de riqueza a ser trocada será sempre proporcional à fortuna de (i.e., ) e regulada por quanto o agente está disposto a arriscar (), tornando a interação entre os agentes muito mais favorável para o perdedor.

Coeficiente de Gini

O Coeficiente de Gini é um índice frequentemente utilizado por economistas e organizações estatísticas para mensurar quantitativamente a desigualdade de distribuição de renda em uma determinada região. Ele é definido como [1]

O índice de Gini varia de 0, quando todos os agentes possuem a mesma riqueza (i.e., desigualdade mínima), até 1, quando toda riqueza está concentrada em apenas um agente (i.e, desiguladade máxima). Este coeficiente é utilizado tanto para medir a desigualdade na distribuição de renda dos agentes da simulação, quanto como uma medida de dispersão, para determinar a estabilidade da distribuição de riqueza [1].

Resultados

Como unidade de tempo das simulações foi utilizado o MCS (Monte Carlo Step), definido como o menor número de passos necessários para que todos os agentes sejam sorteados[1]

Evolução temporal sem fator de proteção social

Na Figura 1 e na Figura 2 temos a evolução temporal do coeficiente de Gini para a regra do perdedor e para a regra do mínimo, respectivamente. Estas simulações foram realizadas com um número de agentes sob uma média de 10 ensembles para cada valor de . As condições iniciais foram tais que a riqueza () está inicialmente distribuída no intervalo seguindo uma distribuição aleatória uniforme.

Note que após um certo número de MCS, o índice de Gini tende a convergir para um valor estável, para cada valor de . O tempo de simulação foi escolhido de forma que o equilíbrio fosse atingido (o primeiro MCS foi ignorado).

  • Figura 1 - Evolução temporal para utilizando a regra do perdedor sem fator de proteção social.
  • Figura 2 - Evolução temporal para utilizando a regra do mínimo sem fator de proteção social.
  • Na Figura 2, vemos que o valor de estabilidade do índice de Gini sempre tende para o valor de desigualdade máxima, mesmo se mudarmos o valor de . Desta forma, quando não inserimos um fator de proteção social no problema e assumimos que as trocas entre agentes ocorrem segundo a regra do mínimo, teremos sempre uma condensação da riqueza, levando a uma alta desigualdade econômica.

    Por outro lado, na Figura 1, vemos que quanto maior for o fator de aversão-ao-risco, menor será a desigualdade econômica e apenas quando ocorre condensação (indicando, pela equação (3), que em cada interação os agentes irão trocar toda a riqueza disponível para eles).

    Este resultado (a regra do mínimo sempre gerar uma condensação enquanto que a regra do perdedor estabiliza em um valor para ) ocorre pois, como o valor de beta é igual para todos os agentes, teremos que, por (3), os agentes com maior riqueza irão perder mais dinheiro na regra do perdedor do que os agentes com menor riqueza e, desta forma, a riqueza estará mais bem distribuída quando o equilíbrio for atingido. Por outro lado, como na regra do mínimo o valor trocado independe de quem perde, se forem sorteados agentes com uma diferença muito grande de riqueza teremos que, por (2), a quantidade de riqueza perdida pelo agente mais pobre será muito maior comparativamente com sua própria riqueza. Desta forma teremos que, após tempo suficiente, a regra do mínimo sempre irá tender para uma distribuição de renda desigual.


    Nas Figuras 3 e 4, temos outra evolução temporal do Índice de Gini. Nestes casos, as simulações foram realizadas com número de agentes igual a sob uma média de 10 ensembles, assim como as anteriores. Além disso, as condições iniciais foram tais que tanto a riqueza () quanto o fator de aversão-a-riscos () foram inicialmente distribuídas no intervalo seguindo uma distribuição aleatória uniforme. Desta forma podemos obter um resultado mais realista, onde cada agente tem um diferente e aleatório.

  • Figura 3 - Evolução temporal para distribuído uniformemente no intervalo utilizando a regra do perdedor sem fator de proteção social.
  • Figura 4 - Evolução temporal para distribuído uniformemente no intervalo utilizando a regra do mínimo sem fator de proteção social.
  • Na Figura 4, vemos a mesma tendência observada anteriormente quando a regra do mínimo foi utilizada, i.e., o equilíbrio tende para uma condensação. Isto ocorre pelo mesmo motivo anteriormente discutido: quando eventualmente ocorrer uma troca entre dois agentes com uma diferença de riqueza considerável, o agente mais pobre irá perder muito mais comparativamente a sua riqueza, devido à equação (2). Desta forma, depois de passado uma quantidade de tempo suficiente, toda riqueza vai estar concentrada em muito poucos agentes.

    Na Figura 3, assim como na Figura 2, vemos que, apesar de não ter nenhum fator de proteção social, a distribuição de riqueza estabiliza em um valor menor do que 1, exatamente por que na regra do perdedor os agentes com maior riqueza arriscam perder mais do que arriscam em ganhar.

    Evolução temporal com fator de proteção social

    As simulações que serão apresentadas abaixo foram realizadas com um número de agentes sob uma média entre 10 ensembles diferentes para cada valor de . As condições iniciais em todas simulações foram tais que a riqueza () e a aversão ao risco () estão distribuídas no intervalo seguindo uma distribuição aleatória uniforme ( permanece constante durante toda simulação).

    Na Figura 5 e na Figura 6 temos a evolução temporal do coeficiente de Gini para a regra do perdedor(a esquerda) e para a regra do mínimo(a direita). Para cada valor de , note que após um certo número de MCS o índice de Gini tende a convergir para um valor estável, se tomamos um tempo de simulação suficientemente grande (o primeiro MCS foi ignorado).

  • Figura 5 - Evolução temporal da regra do perdedor para a partir de uma distribuição uniforme para diferentes fatores de proteção social.
  • Figura 6 - Evolução temporal da regra do mínimo para a partir de uma distribuição uniforme para diferentes fatores de proteção social.
  • Comparando os dois gráficos é possivel ver que o Índice de Gini apresenta um período transiente antes atingir o regime de equilíbrio. O sistema atinge a o equilíbrio muito rápido quando utilizamos a regra do mínimo, enquanto a regra do perdedor demora mais, assim como é verificado em [1]. Veja que para , o sistema condensa para o caso da regra do mínimo, enquanto que para a regra do perdedor o sistema nunca condensa, estabilizando em (para ser mais exato, em ) quando , coincidindo com os resultados obtidos com a ausência do fator de proteção social nas Figuras 3 e 4.

    Um dos resultados mais importantes extraídos das Figuras 5 e 6 é ilustrado na Figura 7. Nela vemos um diagrama , onde é a média sobre cada ensemble do último valor calculado de para ambas as regras. Nota-se que para a regra do mínimo possui uma maior desigualdade na distribuição de riqueza, porém quando o oposto ocorre, a partir do qual a regra do perdedor começa a gerar uma maior desigualdade na distribuição de riqueza do sistema



  • Figura 6 - Diagrama expressando a relação do Índice de Gini médio para as duas regras de troca diferentes, em função do fator de proteção social.
  • Discussão

    Programas

    import numpy as np
    import matplotlib.pyplot as plt
    
    def Gini(W):
      N = len(W)
      I = 2 * np.arange(1, N + 1) - N - 1
      return np.sum(I *  np.sort(W)) / (N * np.sum(W))
    

    Regra do Perdedor sem Fator de Proteção Social

    '''parametros'''
    N = 10000
    n = 1000
    GF = 0
    e = 10
    Gm = np.zeros((e, n))
    a_array = np.arange(0, 1, 0.1)
    for a in a_array:
      for v in range(e):
        '''microestado'''
    
        W = np.random.rand(N)
    
        '''macroestado'''
        Go = Gini(W)
        G = np.zeros(n)
    
        for t in range(n * N):
    
          i = np.random.randint(N)
          j = np.random.randint(N)
    
          delta_w = (1-a) * W[j]
    
          W[i] = W[i] + delta_w
          W[j] = W[j] - delta_w
    
          if (t % N == 0): 
            G[t // N] = Gini(W)
    
        T = np.arange(n)
        GF = GF + Gini(W)
        Gm[v] = G
    
      GM = (GF/e)*np.ones(n)
      Gm = np.sum(Gm, axis = 0)/e
    
      plt.plot(T,Gm, label = "$\beta$ = " + str("%.2f" % a) + "")
      print("para beta = " + str(a) + " GM = " + str("%.2f" % GM[n-1]) + "")
      plt.legend(prop={'size': 8})
      plt.xlabel("MCS")
      plt.ylabel("$\langle G \rangle$")
      plt.ylim(0, 1)
      plt.xlim(left = 1)
      Gm = np.zeros((e, n))
      GF = 0
      GM = 0
    
    plt.show()
    

    Regra do Mínimo sem Fator de Proteção Social

    '''parametros'''
    N = 10000
    n = 1000
    GF = 0
    e = 10
    Gm = np.zeros((e, n))
    a_array = np.arange(0, 1, 0.1)
    for a in a_array:
      for v in range(e):
        '''microestado'''
    
        W = np.random.rand(N)
    
        '''macroestado'''
        Go = Gini(W)
        G = np.zeros(n)
    
        for t in range(n * N):
    
          i = np.random.randint(N)
          j = np.random.randint(N)
    
          delta_w = (1-a) * min(W[i], W[j])
    
          W[i] = W[i] + delta_w
          W[j] = W[j] - delta_w
    
          if (t % N == 0): 
            G[t // N] = Gini(W)
    
        T = np.arange(n)
        GF = GF + Gini(W)
        Gm[v] = G
    
      GM = (GF/e)*np.ones(n)
      Gm = np.sum(Gm, axis = 0)/e
    
      plt.plot(T,Gm, label = "$\beta$ = " + str("%.2f" % a) + "")
      print("para beta = " + str(a) + " GM = " + str("%.2f" % GM[n-1]) + "")
      plt.legend(prop={'size': 8})
      plt.xlabel("MCS")
      plt.ylabel("$\langle G \rangle$")
      plt.ylim(0, 1)
      plt.xlim(left = 1)
      Gm = np.zeros((e, n))
      GF = 0
      GM = 0
    
    plt.show()
    

    Regra do Perdedor com Fator de Proteção Social

    '''parametros'''
    N = 10000           # Numero de Agentes
    n = 10000           # Numero de MCS
    GF = 0
    e = 10              # Numero de amostras
    a = np.random.rand(N)            # Aversão ao risco
    Gm = np.zeros((e, n))
    f_array = np.arange(0, 0.6, 0.1) # Fatores de proteção social
    
    for f in f_array:
      for v in range(e):
        '''microestado'''
    
        W = np.random.rand(N)        # Riqueza inicial dos agentes
    
        '''macroestado'''
        Go = Gini(W)
        G = np.zeros(n)
    
        for t in range(n * N):
    
          i = np.random.randint(N)
          j = np.random.randint(N)
    
          # Regra do Perdedor com Fator de Proteção Social
          p = 0.5+f*((abs(W[i]-W[j]))/(W[i]+W[j]))
          aux = np.random.rand()
    
          if aux < p:
              if W[j]>W[i]:
                  delta_w = (1 - a[j]) * W[j]
                  W[i] = W[i] + delta_w
                  W[j] = W[j] - delta_w
              else:
                  delta_w = (1 - a[i]) * W[i]
                  W[i] = W[i] - delta_w
                  W[j] = W[j] + delta_w
          else:
              if W[j]<W[i]:
                  delta_w = (1 - a[j]) * W[j]
                  W[i] = W[i] + delta_w
                  W[j] = W[j] - delta_w
              else:
                  delta_w = (1 - a[i]) * W[i]
                  W[i] = W[i] - delta_w
                  W[j] = W[j] + delta_w
    
          if (t % N == 0): 
            G[t // N] = Gini(W)
    
        T = np.arange(n)
        GF = GF + Gini(W)
        Gm[v] = G
    
      GM = (GF/e)*np.ones(n)
      Gm = np.sum(Gm, axis = 0)/e
    
      # Gráficos
      plt.plot(T,Gm, label = "f = " + str("%.2f" % f) + "")
      print("para f = " + str(f) + " --> GM = " + str("%.2f" % GM[n-1]) + "") # imprime os valores para o gráfico de G x f
      plt.legend(prop={'size': 8})
      plt.xlabel("MCS")
      plt.ylabel("$\\langle G \\rangle$")
      plt.xlim(left = 1)
      plt.title("Regra do Perdedor $\\beta$ $\\in$ [0,1]")
      Gm = np.zeros((e, n))
      GF = 0
      GM = 0
    
    plt.show()
    

    Regra do Mínimo com Fator de Proteção Social

    '''parametros'''
    N = 10000           # Numero de Agentes
    n = 10000           # Numero de MCS
    GF = 1
    e = 10              # Numero de amostras
    a = np.random.rand(N)            # Fatoes de Aversão ao Risco
    Gm = np.zeros((e, n))
    f_array = np.arange(0, 0.6, 0.1) # Fatores de Proteção Social
    
    for f in f_array:
      for v in range(e):
        '''microestado'''
    
        W = np.random.rand(N)        # Riqueza inicial dos agentes
    
        '''macroestado'''
        Go = Gini(W)
        G = np.zeros(n)
    
        for t in range(n * N):
    
          i = np.random.randint(N)
          j = np.random.randint(N)
    
          # Regra do MÍnimo com Fator de Proteção Social
          p = 0.5+f*((abs(W[i]-W[j]))/(W[i]+W[j]))
          aux = np.random.rand()
          delta_w = min((1 - a[i]) * W[i], (1 - a[j]) * W[j])
    
          if aux < p:
              if W[j]>W[i]:
                  W[i] = W[i] + delta_w
                  W[j] = W[j] - delta_w
              else:
                  W[i] = W[i] - delta_w
                  W[j] = W[j] + delta_w
          else:
              if W[j]<W[i]:
                  W[i] = W[i] + delta_w
                  W[j] = W[j] - delta_w
              else:
                  W[i] = W[i] - delta_w
                  W[j] = W[j] + delta_w
    
          if (t % N == 0): 
            G[t // N] = Gini(W)
    
        T = np.arange(n)
        GF = GF + Gini(W)
        Gm[v] = G
    
      GM = (GF/e)*np.ones(n)
      Gm = np.sum(Gm, axis = 0)/e
    
      # Gráficos
      plt.plot(T,Gm, label = "f = " + str("%.2f" % f) + "")
      print("para f = " + str(f) + " --> GM = " + str("%.2f" % GM[n-1]) + "") # imprime os valores para o gráfico de G x f
      plt.legend(prop={'size': 8})
      plt.xlabel("MCS")
      plt.ylabel("$\\langle G \\rangle$")
      plt.xlim(left = 1)
      plt.title("Regra do Mínimo $\\beta$$\\in$[0,1]")
      Gm = np.zeros((e, n))
      GF = 0
      GM = 0
    
    plt.show()
    

    Referências

    1. 1,0 1,1 1,2 1,3 1,4 1,5 1,6 https://arxiv.org/pdf/1904.05875.pdf CARDOSO, B. F.;GONÇALVEZ, S.; IGLESIAS, J. R.; "WEALTH DISTRIBUTION MODELS WITH REGULATIONS: DYNAMICS AND EQUILIBRIA"
    2. 2,0 2,1 https://www.lume.ufrgs.br/bitstream/handle/10183/217456/001121445.pdf?sequence=1 CARDOSO, B. F.; "A concentração de riqueza em sistemas de trocas binárias não enviesadas " Erro de citação: Etiqueta inválida <ref>; Nome "MESTRADOBENHUR" definido várias vezes com conteúdo diferente
    3. https://arxiv.org/pdf/cond-mat/0306579.pdf SCAFETTA, N.;WEST, B. J.; PICOZZI, S.; "A Trade-Investment Model for Distribution of Wealth"
    4. 4,0 4,1 https://link.springer.com/content/pdf/10.1140/epjst/e2007-00072-4.pdf CAON, G.M.; GONÇALVEZ, S.; CARDOSO, B. F.; "The unfair consequences of equal opportunities: Comparing exchange models of wealth distribution"