In this notebook we will sample random variables from a Pareto distribution with parameters
\(\alpha\) and
\(\beta\):
\(Y_i \sim \mathcal{P}(\alpha,\beta)\) for
\(i=1,\ldots,n\). Pareto random variables are continuous and are characterized by the probability density function:
\[\begin{align}
f(y|\alpha,\beta) & = \frac{\beta \alpha^{\beta}}{y^{\beta+1}}.
\end{align}\]
In all cases
\(\alpha > 0\),
\(\beta > 0\) and
\(Y_i > \alpha\). Since there is no function in
R
to sample directly from a Pareto density, we can draw random variable
\(Y\) via the inverse probability transform:
\[\begin{align}
U & \sim \mathcal{U}(0,1) \\
Y & \sim \left(\frac{\beta \alpha^{\beta}}{U}\right)^{\frac{1}{\beta+1}}.
\end{align}\]
That is, a random draw, \(Y\), from the Pareto distribution is obtained by drawing a uniform random variable, \(U\), and applying the inverse of the Pareto density function to that uniform value. The following code accomplishes this procedure for 30 values.
# True parameters
alpha = 2
beta = 5
# Number of draws
n = 30#100000
# Draw a bunch of uniforms
U = runif(n)
# Apply to inverse of the Pareto
y = alpha/((1-U)^(1/beta))
We can get a sense of the shape of the Pareto by plotting a density estimate of our random sample.

We will assume that \(\alpha\) = 2 is a known parameter but that \(\beta\) is unknown and must be estimated with data (that we simulate). Using the derivations for the Pareto likelihood in the lecture slides, we can compute and plot the likelihood for a variety of values of \(\beta\) and we can also compute the MLE and asymptotic variance (inverse of Fisher information) of \(\beta\). The vertical dotted line in the plot depicts the value of the MLE.
betaGrid = seq(0.1, 10, length=10000)
logLike = n*log(betaGrid) + n*betaGrid*log(alpha) - (1+betaGrid)*sum(log(y))
betaHat = n/(sum(log(y)) - n*(log(alpha)))
sdBetaHat = betaHat/sqrt(n)
plot(betaGrid, logLike, type='l')
abline(v=betaHat,lty=3)

We can also compute the MLE variance (or standard deviation) via the bootstrap, using 1000 bootstrap samples of size 30.
# Number of resamples
B = 1000
# Draw B resamples and store each sample in column of yMat
yMat = matrix(0, nrow=n, ncol=B)
for(i in 1:B) yMat[,i] = sample(y, n, replace=TRUE)
# Compute MLE for each resample (i.e. using each column of yMat)
betaHatBoot = rep(0, length=B)
for(i in 1:B){
betaHatBoot[i] = n/(sum(log(yMat[,i])) - n*(log(alpha)))
}
muBetaHatBoot = mean(betaHatBoot)
sdBetaHatBoot = sd(betaHatBoot)
To finish, we compare the bootstrap standard deviation with asymptotic standard deviation of \(\hat{\beta}\):
print(sdBetaHat)
[1] 0.8934158
print(sdBetaHatBoot)
[1] 0.6328841
We can also compute and compare the three confidence intervals that we studied in lecture:
print(c(betaHat + qnorm(0.025)*sdBetaHat, betaHat + qnorm(0.975)*sdBetaHat))
[1] 3.142377 6.644503
print(c(betaHat + qnorm(0.025)*sdBetaHatBoot, betaHat + qnorm(0.975)*sdBetaHatBoot))
[1] 3.65301 6.13387
print(c(as.numeric(quantile(betaHatBoot,0.025)), as.numeric(quantile(betaHatBoot,0.975))))
[1] 3.949741 6.354060
LS0tCnRpdGxlOiAiUmVzYW1wbGluZyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKSW4gdGhpcyBub3RlYm9vayB3ZSB3aWxsIHNhbXBsZSByYW5kb20gdmFyaWFibGVzIGZyb20gYSBQYXJldG8gZGlzdHJpYnV0aW9uIHdpdGggcGFyYW1ldGVycyAkXGFscGhhJCBhbmQgJFxiZXRhJDogJFlfaSBcc2ltIFxtYXRoY2Fse1B9KFxhbHBoYSxcYmV0YSkkIGZvciAkaT0xLFxsZG90cyxuJC4gUGFyZXRvIHJhbmRvbSB2YXJpYWJsZXMgYXJlIGNvbnRpbnVvdXMgYW5kIGFyZSBjaGFyYWN0ZXJpemVkIGJ5IHRoZSBwcm9iYWJpbGl0eSBkZW5zaXR5IGZ1bmN0aW9uOgpcYmVnaW57YWxpZ259CiAgZih5fFxhbHBoYSxcYmV0YSkgJiA9IFxmcmFje1xiZXRhIFxhbHBoYV57XGJldGF9fXt5XntcYmV0YSsxfX0uClxlbmR7YWxpZ259CkluIGFsbCBjYXNlcyAkXGFscGhhID4gMCQsICRcYmV0YSA+IDAkIGFuZCAkWV9pID4gXGFscGhhJC4gU2luY2UgdGhlcmUgaXMgbm8gZnVuY3Rpb24gaW4gYFJgIHRvIHNhbXBsZSBkaXJlY3RseSBmcm9tIGEgUGFyZXRvIGRlbnNpdHksIHdlIGNhbiBkcmF3IHJhbmRvbSB2YXJpYWJsZSAkWSQgdmlhIHRoZSBpbnZlcnNlIHByb2JhYmlsaXR5IHRyYW5zZm9ybToKXGJlZ2lue2FsaWdufQogIFUgJiBcc2ltIFxtYXRoY2Fse1V9KDAsMSkgXFwKICBZICYgXHNpbSBcbGVmdChcZnJhY3tcYmV0YSBcYWxwaGFee1xiZXRhfX17VX1ccmlnaHQpXntcZnJhY3sxfXtcYmV0YSsxfX0uClxlbmR7YWxpZ259ClRoYXQgaXMsIGEgcmFuZG9tIGRyYXcsICRZJCwgZnJvbSB0aGUgUGFyZXRvIGRpc3RyaWJ1dGlvbiBpcyBvYnRhaW5lZCBieSBkcmF3aW5nIGEgdW5pZm9ybSByYW5kb20gdmFyaWFibGUsICRVJCwgYW5kIGFwcGx5aW5nIHRoZSBpbnZlcnNlIG9mIHRoZSBQYXJldG8gZGVuc2l0eSBmdW5jdGlvbiB0byB0aGF0IHVuaWZvcm0gdmFsdWUuIFRoZSBmb2xsb3dpbmcgY29kZSBhY2NvbXBsaXNoZXMgdGhpcyBwcm9jZWR1cmUgZm9yIGByIG5gIHZhbHVlcy4KYGBge3J9CiMgVHJ1ZSBwYXJhbWV0ZXJzCmFscGhhID0gMgpiZXRhID0gNQoKIyBOdW1iZXIgb2YgZHJhd3MKbiA9IDMwIzEwMDAwMAoKIyBEcmF3IGEgYnVuY2ggb2YgdW5pZm9ybXMKVSA9IHJ1bmlmKG4pCgojIEFwcGx5IHRvIGludmVyc2Ugb2YgdGhlIFBhcmV0byAKeSA9IGFscGhhLygoMS1VKV4oMS9iZXRhKSkKYGBgCldlIGNhbiBnZXQgYSBzZW5zZSBvZiB0aGUgc2hhcGUgb2YgdGhlIFBhcmV0byBieSBwbG90dGluZyBhIGRlbnNpdHkgZXN0aW1hdGUgb2Ygb3VyIHJhbmRvbSBzYW1wbGUuCmBgYHtyLGZpZy53aWR0aD0xMH0KcGxvdChkZW5zaXR5KHkpLCB4bGltPWMoMCw1KSkKYGBgCldlIHdpbGwgYXNzdW1lIHRoYXQgJFxhbHBoYSQgPSBgciBhbHBoYWAgaXMgYSBrbm93biBwYXJhbWV0ZXIgYnV0IHRoYXQgJFxiZXRhJCBpcyB1bmtub3duIGFuZCBtdXN0IGJlIGVzdGltYXRlZCB3aXRoIGRhdGEgKHRoYXQgd2Ugc2ltdWxhdGUpLiBVc2luZyB0aGUgZGVyaXZhdGlvbnMgZm9yIHRoZSBQYXJldG8gbGlrZWxpaG9vZCBpbiB0aGUgbGVjdHVyZSBzbGlkZXMsIHdlIGNhbiBjb21wdXRlIGFuZCBwbG90IHRoZSBsaWtlbGlob29kIGZvciBhIHZhcmlldHkgb2YgdmFsdWVzIG9mICRcYmV0YSQgYW5kIHdlIGNhbiBhbHNvIGNvbXB1dGUgdGhlIE1MRSBhbmQgYXN5bXB0b3RpYyB2YXJpYW5jZSAoaW52ZXJzZSBvZiBGaXNoZXIgaW5mb3JtYXRpb24pIG9mICRcYmV0YSQuIFRoZSB2ZXJ0aWNhbCBkb3R0ZWQgbGluZSBpbiB0aGUgcGxvdCBkZXBpY3RzIHRoZSB2YWx1ZSBvZiB0aGUgTUxFLgpgYGB7cixmaWcud2lkdGg9MTB9CmJldGFHcmlkID0gc2VxKDAuMSwgMTAsIGxlbmd0aD0xMDAwMCkKbG9nTGlrZSA9IG4qbG9nKGJldGFHcmlkKSArIG4qYmV0YUdyaWQqbG9nKGFscGhhKSAtICgxK2JldGFHcmlkKSpzdW0obG9nKHkpKQpiZXRhSGF0ID0gbi8oc3VtKGxvZyh5KSkgLSBuKihsb2coYWxwaGEpKSkKc2RCZXRhSGF0ID0gYmV0YUhhdC9zcXJ0KG4pCnBsb3QoYmV0YUdyaWQsIGxvZ0xpa2UsIHR5cGU9J2wnKQphYmxpbmUodj1iZXRhSGF0LGx0eT0zKQpgYGAKV2UgY2FuIGFsc28gY29tcHV0ZSB0aGUgTUxFIHZhcmlhbmNlIChvciBzdGFuZGFyZCBkZXZpYXRpb24pIHZpYSB0aGUgYm9vdHN0cmFwLCB1c2luZyBgciBCYCBib290c3RyYXAgc2FtcGxlcyBvZiBzaXplIGByIG5gLgpgYGB7cn0KIyBOdW1iZXIgb2YgcmVzYW1wbGVzCkIgPSAxMDAwCgojIERyYXcgQiByZXNhbXBsZXMgYW5kIHN0b3JlIGVhY2ggc2FtcGxlIGluIGNvbHVtbiBvZiB5TWF0CnlNYXQgPSBtYXRyaXgoMCwgbnJvdz1uLCBuY29sPUIpCmZvcihpIGluIDE6QikgeU1hdFssaV0gPSBzYW1wbGUoeSwgbiwgcmVwbGFjZT1UUlVFKQoKIyBDb21wdXRlIE1MRSBmb3IgZWFjaCByZXNhbXBsZSAoaS5lLiB1c2luZyBlYWNoIGNvbHVtbiBvZiB5TWF0KQpiZXRhSGF0Qm9vdCA9IHJlcCgwLCBsZW5ndGg9QikKZm9yKGkgaW4gMTpCKXsKCWJldGFIYXRCb290W2ldID0gbi8oc3VtKGxvZyh5TWF0WyxpXSkpIC0gbioobG9nKGFscGhhKSkpCn0KbXVCZXRhSGF0Qm9vdCA9IG1lYW4oYmV0YUhhdEJvb3QpCnNkQmV0YUhhdEJvb3QgPSBzZChiZXRhSGF0Qm9vdCkKYGBgClRvIGZpbmlzaCwgd2UgY29tcGFyZSB0aGUgYm9vdHN0cmFwIHN0YW5kYXJkIGRldmlhdGlvbiB3aXRoIGFzeW1wdG90aWMgc3RhbmRhcmQgZGV2aWF0aW9uIG9mICRcaGF0e1xiZXRhfSQ6CmBgYHtyfQpwcmludChzZEJldGFIYXQpCnByaW50KHNkQmV0YUhhdEJvb3QpCmBgYApXZSBjYW4gYWxzbyBjb21wdXRlIGFuZCBjb21wYXJlIHRoZSB0aHJlZSBjb25maWRlbmNlIGludGVydmFscyB0aGF0IHdlIHN0dWRpZWQgaW4gbGVjdHVyZToKYGBge3J9CnByaW50KGMoYmV0YUhhdCArIHFub3JtKDAuMDI1KSpzZEJldGFIYXQsIGJldGFIYXQgKyBxbm9ybSgwLjk3NSkqc2RCZXRhSGF0KSkKcHJpbnQoYyhiZXRhSGF0ICsgcW5vcm0oMC4wMjUpKnNkQmV0YUhhdEJvb3QsIGJldGFIYXQgKyBxbm9ybSgwLjk3NSkqc2RCZXRhSGF0Qm9vdCkpCnByaW50KGMoYXMubnVtZXJpYyhxdWFudGlsZShiZXRhSGF0Qm9vdCwwLjAyNSkpLCBhcy5udW1lcmljKHF1YW50aWxlKGJldGFIYXRCb290LDAuOTc1KSkpKQpgYGAKCgo=