The Pay-for-Performance Myth

Last week, Eric Chemi and Ariana Giorgi published an interesting article on “The Pay-for-Performance Myth

With all the public chatter about exorbitant executive compensation and income inequality, it’s useful to look at the relationship between chief executive officer pay and corporate performance. Typically, when the subject of their big pay packages arises, CEOs—usually through their spokespeople—say they are paid for performance. Does data back that up?

An analysis of compensation data publicly released by Equilar shows little correlation between CEO pay and company performance. Equilar ranked the salaries of 200 highly paid CEOs. When compared to metrics such as revenue, profitability, and stock return, the scattering of data looks pretty random, as though performance doesn’t matter. The comparison makes it look as if there is zero relationship between pay and performance.

In the article, they produce a copula-type plot (since ranks – only – are considered). Ariana kindly sent me the dataset (that was used in The Pay at the Top) to play with it

> base=read.table("ceo.csv",sep=";",header=TRUE)

Here I normalize (dividing by the size of the dataset) to have uniform distribution on the unit interval (instead of working with ranks, i.e. integers). If we remove that scaling factor, the scatterplot is that same as the one mentioned in  the Pay-for-performance myth.

> n=nrow(base)
> U=rank(base[,1])/(n+1)
> V=rank(base[,2])/(n+1)
> plot(U,V,xlab="Rank CEO Pay",
+ ylab="Rank Stock Return")

This is the copula type representation.

If we visualize the density of the copula (using the algorithm described in the joint paper with Gery and Davy), we get either

> library("copula")
> library("ks")
> library("MASS")
> library("locfit")
> n.res=32
> ctilde1=probtranscopkde(UVs,p=1,
+ u.out=seq(1/(2*n.res+1),1-1/(2*n.res+1),
+length=n.res),plots=TRUE)

Continue reading The Pay-for-Performance Myth

Cigarette and life expectancy

Yesterday evening, I uploaded a graph, with the labor productivity as a function of coffee consumption. Of course, it was for fun ! With this kind of regression, base on aggregated data, we can say almost anything, since most of them are correlated because of some (hidden) common factor, such as the wealth of the country. For instance, with a similar approach, we can see that there is an increasing relationship, when looking at life expectancy as a function of cigarette consumption,

> base=read.table(
+ "http://freakonometrics.free.fr/CigLE.csv",
+ header=TRUE,sep=",")
> b=base[!is.na(base$CigCon),]
> plot(b[,5],b[,4],xlab="Cigarette Consumption",
+ ylab="Life Expectancy (at birth)")
> text(b[,5],b[,4]+1,b[,2],cex=.6)
> library(splines)
> X=b[,5]
> Y=b[,4]
> B=data.frame(X,Y)
> reg=glm(Y~bs(X),data=B)
> y=predict(reg,newdata=data.frame(
+ X=seq(0,4000,by=10)))
> lines(seq(0,4000,by=10),y,col="red")

Coffee and Productivity

On Twitter, I was asked if there were serious research papers published on coffee consumption and labour productivity. There are some papers on coffee breaks and productivity, e.g. Productivity Through Coffee Breaks, but I could not find anything on coffee consumptions. Since I could not find any dataset with personal consumption (maybe I should start keeping tracks of my own consumption to run a study) I tried to find data for national consumption instead (even if we know that both are – clearly – not equivalent)

  • last year, Sabine published on http://backreaction.blogspot.fr/ a dataset with consumption of coffee, per country (and per unhabitants),
  • on http://en.wikipedia.org/ we can find a dataset with GDP per hour worked for some countries (which can be seen as a common  measure of the productivity of a country)

If we merge those two datasets, we get

> base=read.table(
+ "http://freakonometrics.free.fr/cafe.csv",
+ header=TRUE,sep=";",dec=",")
> b=base[!is.na(base$GDP.PPP),]
> plot(b[,3],b[,4],xlab="Coffee Consumption",
+ ylab="GDP per hour worked")
> text(b[,3],b[,4]+1.6,b[,1],cex=.6)
> library(splines)
> X=b[,3]
> Y=b[,4]
> B=data.frame(X,Y)
> reg=glm(Y~bs(X),data=B)
> y=predict(reg,newdata=data.frame(
+ X=seq(0,10,by=.1)))
> lines(seq(0,10,by=.1),y,col="red")

Statistics, and the Goldilocks Principle

By the end of May, in Toronto, we had that great talk at the SSC by Jeff Rosenthal, on monte carlo techniques, and Jeff mention the name of “the Goldilocks principle” (it was in the contect of MCMC, and I did mention it in my talk in London on MCMC, when I discussed the value of the rejection rate of the Hastings Metropolis algorithm, which should be not to large, and not too small…). In the story, Goldilocks, there are always three alternative, one is always too much in one extreme (too hot – for the soup – or too large – for the bed, or the chaiir), one is too much in the opposite extreme (too cold, or too small), and one is “just right“.

Continue reading Statistics, and the Goldilocks Principle

Les anniversaires de vos amis sur Facebook

J’ai découvert avec un peu de retard le joli billet Les anniversaires de vos amis sur Facebook, qui tentait de répondre à la question

Si je possède n amis, quelle est la probabilité qu’il y ait au moins un jour dans l’année où je n’ai pas d’anniversaire à souhaiter ?

Ce problème, on peut aussi l’analyser en posant plutôt la question suivante,

Il y a en tout 365 jours dans une année. Combien d’amis doit-on espérer avoir pour qu’il n’y ait pas un jour sans fêter un anniversaire d’un de ses amis ?

Le problème est différent. Mais la résolution est assez jolie, si on regarde attentivement.

Si je note  le nombre d’amis qu’il me faut pour couvrir tous les anniversaires, et que je commence à regarder, ami après ami le nombre de jours couverts. Supposons que j’ai  jours de l’année couverts, et notons  le nombre de nouveaux amis qu’il va me falloir avant de couvrir  jours de l’année. On peut voir que

Le point intéressant avec cette notation, c’est qu’on connaît la loi de . En fait,  on reconnaît une loi géométrique

Aussi, on peut assez facilement avoir le nombre moyen d’amis qu’il va falloir pour couvrir tous les jours de l’année,

Je laisse les amateurs de calculs essayer de simplifier, mais ça me semble compliqué. Par contre, numériquement on obtient facilement

> sum(365/(1:365))
[1] 2364.646

En fait, la somme, on peut quand même la simplifier un peu, car on reconnaît

Et on sait que

où  est la constante d’Euler. Et effectivement, avec cette approximation, on obtient

> (log(365)+ 0.57721)*365
[1] 2364.144

Ce nombre d’amis est à rapprocher du calcul fait sur https://blogdemaths.wordpress.com/, qui obtenait

on a une chance sur deux pour qu’il y ait au moins un jour sans anniversaire à souhaiter, il faut avoir environ 2285 amis

Calculer un quantile est un peu plus compliqué pour moi (je ne peux calculer que des moyennes), mais on voit que les ordres de grandeurs sont assez proches.

Income distribution and Tour de France

A few days ago, Jean-François Mignot published an interesting article entitled Tour de France 2014 : pourquoi le vainqueur gagne 100 fois plus que le 10e. In this article, we have the following graph, with the income of the cyclist, as a function of his final ranking (the data where downloaded from http://sportbuzzbusiness.fr/)

> bike=read.csv(
+ "http://freakonometrics.free.fr/tourdefrance.csv",
+ sep=";",header=TRUE,dec=" ")

> bike[1:19,"prime"]=bike[1:19,"prime"]*1000
> plot(bike,log="y",type="b",
+ xlab="(Final) rank",ylab="Bonus")

As pointed out by Jean-François, if the winner gets a lot of money, the bonus decreases fast, very fast actually. Gini index is very high here

> library(ineq)
> ineq(X,type="Gini")
[1] 0.910461

and if we look at Lorenz curve, indeed, the Tour de France is not very equalitarian,

Continue reading Income distribution and Tour de France

London, Bayes and the Lloyd’s

Monday, we really had a great conference in London.

It was a great pleasure since I did learn a lot of things. And also a great honor to be the last speaker. Tuesday morning, I wanted to go to Thomas Bayes’grave, which is the the graveyard next to the CASS Business School. I had a good a apriori about where the grave should be,

but to be honest, it was not possible to get close enough to be able to read the name on it (even if I now know that it is the large one in the right lower corner of the picture)

Actually, on the internet, you can find some picture where the stone is clean, so you can learn that the grave is the “cotton” one – at least, you can easily read that name.

It was actualy more simple to see William Blake’s grave, as well as Daniel Defoe’s.

Then, with Leo, we’ve been to the Lloyd’s to see some friends, as well as Richard Rogers’s building.

At the 11th floor, you have a lot of rooms for meetings, as well as old paintings, to tell a bit more about the history of the company,

The building is just amazing. Unfortunately, to get in, there is a dress code. A sort of strict one actually. Leo is working for RBC, so he casually wears a suit. But I don’t. I mean, I did have a shirt, but as someone mentioned, “there is no collar !” (I don’t want to put my friend into trouble for helping me getting in).

So, after going throught the basement, we’ve been able to reach the elevator, and go on top.

The building is not exactly located where Edward Lloyd got his coffee shop (even after moving at the end of 1691 on Lombard street), but the Lloyd’s is still a legend for anyone interested in the history of insurance, and more generally, the history of risk modeling (and management).

Bayesian Wizardry for Muggles

Monday, I will be giving the closing talk of the R in Insurance Conference, in London, on Bayesian Computations for Actuaries, or to be more specific, Getting into Bayesian Wizardry… (with the eyes of a muggle actuary). The animated version of the slides (since we will spend some time on MCMC algorithm, I thought that animated graphs could be more informative) can be downloaded from here.

Those slides are based on the chapter writen with Ben Escoto for the Computational Actuarial Science with R book, and some previous work.

La fresque de Joe Sacco

En matière de bandes dessinées relative à la grande guerre, j’ai longtemps cru que Jacques Tardi serait impossible à égaler. Lire C’était la guerre des tranchées ou Putain de Guerre était une expérience marquante. Mais il y a quelques semaines, j’avais acheté la fresque de Joe Sacco à mon fils, car je trouve qu’ils dessinent un peu de la même manière, avec des dessins denses et touffus, remplis de détails,

Comme toujours, Joe Sacco a un dessin qui marque. Mais alors que je lui reprochais toujours de parler trop dans ses livres, cette fois, on a une fresque de 7 mètres de long, silencieuse, devant laquelle on peut se planter, et regarder, comme la tapisserie de Bayeux

Et depuis une semaine, la fresque a été reproduite sur 130 mètres de long, dans le long couloir de la station de métro Montparnasse, dans le cadre des commémorations pour le centenaire

Je trouve l’idée incroyable, et j’avoue avoir hâte de vivre l’expérience. Vivement mardi prochain, où j’ai justement une correspondance à Montparnasse, en revenant de mon excursion à Londres !

1 tous les dessins sont extraits de La Grande Guerre, par Joe Sacco, publié en Français chez Futuropolis, et la photo devant la fresque est signée Bertrand Guay / AFP

Variance of the Average of a Sequence

In the case where  are i.i.d. random variables, then

Now, what if  are identically distributed, but no longer independent. What if we have an autoregressive process? Assume that

Then

can be written

Here, we will express the variance as a function of  and , but it is possible to use also , since, in the context of an ,

Now, since  we get

which can be simplified, since

i.e.

So, the variance of the mean can be writen as

Observe that if  is large enough,

This asymptotic relationship is well known actually. A simple way to get it is the following. One can can write

or equivalently

But actually, the first relationship is probably more interesting to get an asymptotic approximation,

In the context of an  process, this can be writen

Thus, we get the following well-known relationship

In the case where  is an i.i.d. sequence, i.e. , then we get the relationship mentioned initially. And in the case of a random walk… unfortunately, we cannot use that relationship. But observe that

i.e.

which can be written

If we compare the true value and the approximation, we get the following graph,

> V=function(phi,s2=1,n=100){
+ g0=s2/(1-phi^2)
+ if(phi<1){
+ if(phi==0){v1=g0/n}
+ if(phi>0){v1=g0/n^2*(n+2*((n-1)*
+ phi^(-1)-n+phi^(n-1))/(phi^(-1)-1)^2)}
+ v2=g0/n*(1+phi)/(1-phi)
+ }
+ if(phi==1){
+ v1=(2*n+1)*(n+1)*s2/(6*n)
+ v2=NA
+ }
+ return(c(v1,v2))}
> 
> Vphi=function(phi) V(phi,1,100)
> x=seq(.01,1,by=.02)
> M=matrix(unlist(lapply(x,V)),nrow=2)
> plot(x,M[1,],type="l",col="red",log="y",
+ ylab="Variance of the average (log scale)",
+ xlab="Autoregressive coefficient")
> lines(x,M[2,],col="blue")