{"word_count": 638, "character_count": 5014}
Yesterday, in the course on inequalities, I mentioned (too) briefly the 3-person Economy. I wanted to spend some time in a short post on visualisations of inequalities in such a context. As mentioned in the slides,  it is possible to use a ternary plot representation. In the case where we believe that the scale independence principle makes sense, i.e. . A distribution of incomes can be represented as a barycenter in an equilateral triangle (also called de Finetti diagram). The midpoint is the equal situation: the three agents share the same wealth. Because of the scale independence property, we can look at distribution of wealth on the simplex. A wealth distribution is a vector  where each component is one of the (red) distance below. A is on top of the triangle, and the vertical distance is proportional to the wealth of A. The closer to the bottom line, the poorer A is.To visualize this distribution of wealth, we can use the trifield package. To add the point and the three segments, the code istripoint=function(s){  p=s/sum(s)  p1=c(0,s[2]+s[1]/2,s[3]+s[1]/2)/sum(s)  p2=c(s[1]+s[2]/2,0,s[3]+s[2]/2)/sum(s)  p3=c(s[1]+s[3]/2,s[2]+s[3]/2,0)/sum(s)    C &#60;- abc2xy(matrix(p,1,3))  points(C,pch=19,col="red",cex=2)  C1 &#60;- abc2xy(matrix(p1,1,3))  C2 &#60;- abc2xy(matrix(p2,1,3))  C3 &#60;- abc2xy(matrix(p3,1,3))  segments(C1[1],C1[2],C[1],C[2],lwd=2,col="red")  segments(C2[1],C2[2],C[1],C[2],lwd=2,col="red")  segments(C3[1],C3[2],C[1],C[2],lwd=2,col="red")}For instance, to visualize the equal case (inequality indices are defined as a distance to this situation)tripoint(c(1,1,1))For a case where there is inequality, use for instancetripoint(c(1,2,3))We've seen in the course that there was a natural ordering, based on Lorenz curve. In the case of a 3-person economy, Lorenz curve is juste based on 2 points,library(ineq)plot(Lc(1:3))s=cumsum(1:3)/6points((1:2)/3,s[1:2])An income distribution  is more unequal than distribution  if  for all . What it means is simply thatand at the same timeFor instance, for this distribution of wealthwe have non-ambuigity about the ordering : this new distribution is more unequalBecause it is simple to compare we can use a simple function to compare two distributionslorenz_dominance=function(s1,s2){  ss1=(cumsum(sort(s1))/sum(s1))[1:2]  ss2=(cumsum(sort(s2))/sum(s2))[1:2]  dom=0  if(sum(ss1&#62;ss2)==2) dom=1   if(sum(ss1&#60;ss2)==2) dom=-1  return(dom)}where +1 means more unequal, -1 means less unequal, and 0 means that it is an ambiguous situation, and curves cannot be compared (there is a single crossing here).Thus, given a reference distribution, it would be nice to visualize all distributions that are more unequal and less unequal. The first step is to get a gridlibrary(trifield)grid.size = 128tg = ternary.grid(grid.size)Then , define functionf = function(x) lorenz_dominance(x,c(1,2,3))which compares all points with our reference.  Then we use some sort of 'apply' function, to compute that function on all points of the gridz = ternary.apply(tg, f)and then we simply plot the contour plot of that outputtf = ternary.field(tg, z)plot(tf,col=c(rgb(1,0,0,.2),"white",rgb(0,0,1,.2)))I can add the reference point on the maptripoint(c(1,2,3))The output is nice, isn't? The code here is natural, based on what I would do on a standard cartesian representation... But the output is not valid. And I could not find why... To check, let us draw randomly some incomes, and then plot themternary.legend()for(s in 1:50000){ x=rexp(3); x=x/sum(x) points(abc2xy(matrix(x,1,3)),col=c(rgb(1,0,0,.2),"white",rgb(0,0,1,.2))[lorenz_dominance(x,c(1,4,5))+2],pch=19,cex=.7)}The output is rather different...  If my reference is (20,10,1)ternary.legend()for(s in 1:50000){  x=rexp(3); x=x/sum(x) points(abc2xy(matrix(x,1,3)),col=c(rgb(1,0,0,.2),"white",rgb(0,0,1,.2))[lorenz_dominance(x,c(20,10,1))+2],pch=19,cex=.7)}which is comparable with a graph one can find is some slides of Economics 1391 (but no reference is mentioned)I still don't undertand what went wrong with the initial code...Actually, we can visualize almost anything, like iso-curves for Gini index. Again, using simulations, I getfor(s in 1:50000){ x=rexp(3); x=x/sum(x); g=Gini(x) points(abc2xy(matrix(x,1,3)),col=heat.colors(100)[round(100*g)],pch=19,cex=.7)}But this time, if I use functions of the trifield package, it seems to be fine (and consistent with graph one can find in various papers, e.g. in  some slides of Economics 1391)f = function(x) Gini(x)z = ternary.apply(tg, f)tf = ternary.field(tg, z)plot(tf)And we can visualize iso-inequality curves for any inequality index, for instance Theil indexf = function(x) Theil(x)z = ternary.apply(tg, f)tf = ternary.field(tg, z)plot(tf)or the generalized entropy,f = function(x) entropy(x,2)z = ternary.apply(tg, f)tf = ternary.field(tg, z)plot(tf)That sounds promising, and I believe nice visualizations can be obtained in that 3-person economy, but I still have to understand why the Lorenz-comparison graph did not work...