富の移動モデル

MikuHatsune2011-04-24

貧しいほうの資産を超えない取引モデル。

N<- 12
Mstart<- 100
M<- rep(Mstart,N)
ylim<- c(0,Mstart*N)
library(gtools)
trials<- 1000
Mmove<- matrix(0,trials+1,N)
Mmove[1,]<- M
for(t in 1:trials){
  trade<- matrix(sample(N),nc=2)
  for(i in 1:nrow(trade)){
    trademoney<- runif(1)*min(M[trade[i,]])
    M[trade[i,1]]<- M[trade[i,1]]-trademoney
    M[trade[i,2]]<- M[trade[i,2]]+trademoney
  }
  Mmove[t+1,]<- M
}
matplot(Mmove,type="l",lwd=2,ylim=ylim,
        xlab="No.Trade",ylab="Money")
title("Random Trade Model 1")
hist(tail(Mmove,1),breaks=N,col=5)

 
損をするほうの資産を超えないモデル(盗人・詐欺モデル)。

N<- 12
Mstart<- 100
M<- rep(Mstart,N)
ylim<- c(0,Mstart*N)
library(gtools)
trials<- 1000
Mmove<- matrix(0,trials+1,N)
Mmove[1,]<- M
for(t in 1:trials){
  trade<- matrix(sample(N),nc=2)
  for(i in 1:nrow(trade)){
    lost<- sample(1:2,size=1)
    trademoney<- runif(1)*M[trade[i,lost]]
    M[trade[i,lost]]  <- M[trade[i,lost]]-trademoney
    M[trade[i,3-lost]]<- M[trade[i,3-lost]]+trademoney
  }
  Mmove[t+1,]<- M
}
matplot(Mmove,type="l",lwd=2,ylim=ylim,
        xlab="No.Trade",ylab="Money")
title("Random Trade Model 2")
hist(tail(Mmove,1),breaks=N,col=5)

 
取引するふたりの資産を足して分割するモデル。

N<- 12
Mstart<- 100
M<- rep(Mstart,N)
ylim<- c(0,Mstart*N)
library(gtools)
trials<- 1000
Mmove<- matrix(0,trials+1,N)
Mmove[1,]<- M
for(t in 1:trials){
  trade<- matrix(sample(N),nc=2)
  for(i in 1:nrow(trade)){
    Money<- sum(M[trade[i,]])
    trademoney<- sample(Money,size=1)
    M[trade[i,1]]<- trademoney
    M[trade[i,2]]<- Money-trademoney
  }
  Mmove[t+1,]<- M
}
matplot(Mmove,type="l",ylim=ylim,
        xlab="No.Trade",ylab="Money")
title("Random Trade Model 3")
hist(tail(Mmove,1),breaks=N,col=5)

 
モデル1に税を徴収して分配するモデル。

Mstart<- 100
M<- rep(Mstart,N)
ylim<- c(0,Mstart*N)
library(gtools)
trials<- 1000
Mmove<- matrix(0,trials+1,N)
Mmove[1,]<- M
for(t in 1:trials){
  trade<- matrix(sample(N),nc=2)
  for(i in 1:nrow(trade)){
    trademoney<- runif(1)*min(M[trade[i,]])
    M[trade[i,1]]<- M[trade[i,1]]-trademoney
    M[trade[i,2]]<- M[trade[i,2]]+trademoney
  }
  Tax<- M*tax
  M<- M-Tax
  M<- M+sum(Tax)/N
  Mmove[t+1,]<- M
  Mmove[t+1,]<- M
}
matplot(Mmove,type="l",ylim=ylim,
        xlab="No.Trade",ylab="Money")
title("Random Trade Model 4")
hist(tail(Mmove,1),breaks=N,col=5)