Dear Statalisters.

I have been puzzling over what I would have thought would be a simple challenge. I have an index which has a distribution that is pareto-like on both sides of the x-axis. It is distributed over the interval [-1;1], with a mass point at zero, and most of the distribution very close to zero (either positive or negative) with a very flimsy tail extending to 1 or -1. I wanted to produce an histogram in the spirit of the screenshot I have attached (which I believe was produced in R, but not by me). But using xscale(log) does not seem to work.

Here is a way to generate a toy dataset with something that looks like the index:

set obs 10000

set seed 876

gen u=runiform()

gen v=runiform()

gen w1=runiform()

gen w2=runiform()

gen t=runiform()

gen double ypareto = 1000/(u^2.1)

quietly sum ypareto

gen y=ypareto/`r(max)'

replace y=0 if w1<0.025

gen double zpareto = 1000/(v^2.1)

quietly sum zpareto

gen z=zpareto/`r(max)'

replace z=0 if w2<0.025

gen d=y

replace d=-z if t>0.5

keep d

sum d, d

twoway histogram d, bin(100)

twoway histogram d, bin(100) xscale(log)

If someone could point me in the general direction to produce a graph like this, I would be grateful.

Regards,

Pierre

I have been puzzling over what I would have thought would be a simple challenge. I have an index which has a distribution that is pareto-like on both sides of the x-axis. It is distributed over the interval [-1;1], with a mass point at zero, and most of the distribution very close to zero (either positive or negative) with a very flimsy tail extending to 1 or -1. I wanted to produce an histogram in the spirit of the screenshot I have attached (which I believe was produced in R, but not by me). But using xscale(log) does not seem to work.

Here is a way to generate a toy dataset with something that looks like the index:

set obs 10000

set seed 876

gen u=runiform()

gen v=runiform()

gen w1=runiform()

gen w2=runiform()

gen t=runiform()

gen double ypareto = 1000/(u^2.1)

quietly sum ypareto

gen y=ypareto/`r(max)'

replace y=0 if w1<0.025

gen double zpareto = 1000/(v^2.1)

quietly sum zpareto

gen z=zpareto/`r(max)'

replace z=0 if w2<0.025

gen d=y

replace d=-z if t>0.5

keep d

sum d, d

twoway histogram d, bin(100)

twoway histogram d, bin(100) xscale(log)

If someone could point me in the general direction to produce a graph like this, I would be grateful.

Regards,

Pierre

## Comment