Le détail du truc

Posted by Guillaume Nicoulaud  
Le détail du truc

À propos du truc de Piketty, vous êtes un certain nombre à me réclamer le détail des calculs. Les résultats que je vous propose sont le fruit de simulations que j'ai programmé sous R (ce blog vous sera peut-être utile). Ci-dessous, vous trouverez un exemple de code (simplifié pour une lecture plus facile) qui vous permettra de vérifier mes chiffres et de jouer avec.

Nous allons faire un essai sur une population de N individus (ici 1 millions [1]) pendant T années (ici 25) :

N <- 1e6 T <- 25

On génère une distribution aléatoire des patrimoines initiaux avec la fonction rgamma (la distribution Gamma pour l'asymétrie [2]) et un paramètre de forme de 0,04 (pour encore plus d'asymétrie) et on multiplie le tout par 1 million pour que ça ressemble à des patrimoines plutôt qu'à de la menue monnaie (pure coquetterie) :

Init <- 1e6 * rgamma(N, .04)

À ce stade, vous pouvez vérifier qu'on obtient une distribution des patrimoines nettement asymétrique et que le 1% détient un peu plus de 40% du total.

On créé une matrice vide K de T+1 lignes et N colonnes pour stocker les patrimoines, on colle les patrimoines de départ dans la première ligne et on créé un vecteur r d'espérances de rendement - ici, c'est 2% pour tout le monde.

K <- matrix(NA, T+1, N) K[1, ] <- Init r <- rep(.02, N)

Pour chaque année de 2 à T+1, on fait varier le capital de l'année précédente avec une variable (pseudo-) aléatoire qui suit une loi normale (fonction rnorm) avec une espérance r (donc 2%) et un écart-type de 20%.

for(t in 2:(T+1)) { K[t, ] <- K[t-1, ] * (1 + rnorm(N, r[t], .2)) }

Nous voilà donc avec une matrice de patrimoines qui, vous en conviendrez, ne donne aucun avantage aux riches.

Puisqu'on en parle, calculons le patrimoine du 1% :

W <- matrix(NA, T+1, 1) for(t in 1:(T+1)) { q <- quantile(K[t, ], seq(0, 1, .01)) W[t, ] <- mean(K[t, K[t, ] >= q[100]]) }

De là, vous pouvez mesurer la variation annualisée du capital moyen :

as.numeric(100*(mean((K[nrow(K), ])/mean(K[1, ]))^(1/T)-1))
Et celle du capital du 1% :
as.numeric(100*((W[nrow(W), ]/W[1, ] )^(1/T)-1))

Avec ces paramètres, je trouve (environ) 2% pour le commun des mortels et plus de [...]

http://ordrespontane.blogspot.fr/2014/05/le-detail-du-truc.html