Numerical or computational method to generate density estimate Suppose $X \sim U(0,1)$, and $Y[x] = g(x)$ where $g(.)$ is some complicated function. I want to calculate/plot the density of $Y$. I can do this analytically for simple enough $g$.
I can also generate some large number $N$ samples of $X$ from the stardard uniform, calculate $y_i = Y(x_i)$ for each sample $x_i$, and then compute the histogram of these $ y_i, \forall  i \in (1, ... N)$. This will turn out to be inefficient if, say the details of $p_Y(y)$ come from very small regions of $X$. Is there a better way to calculate/estimate $p_Y(y)$? 
 A: I'm not sure if this could help you, but suppose that you understand your complicated $g$ well enough to find a partition $0=t_0<t_1<\dots<t_k=1$ such that $g$ is increasing or decreasing inside each subinterval. Then, your $g$ would have a representation of the form
$$
  g(t) = \sum_{i=1}^k g_i(t) I_{(t_{i-1},t_i]}(t) \, .
$$
Let $h_i$ denote the inverse of $g_i$, for $i=1,\dots,k$. For some fixed $i$, suppose that $g_i$ is decreasing. Then, for $t\in(t_{i-1},t_i]$, we have
$$
  F_Y(t) = P\{Y\leq t\} = P\{g_i(X)\leq t\} = P\{h_i(g_i(X))\leq h_i(t)\} = P\{X\leq h_i(t)\} = h_i(t) \, .
$$
Otherwise, if $g_i$ is increasing, we have, $\textit{mutatis mutandis}$, that
$$
  F_Y(t) = P\{Y\leq t\} = P\{g_i(X)\leq t\} = P\{X\geq h_i(t)\} = 1 - h_i(t) \, .
$$
Combining these results, we have
$$
  F_Y(t) = \sum_{i=1}^k (h_i(t))^{d_i} (1 - h_i(t))^{1-d_i} I_{(t_{i-1},t_i]}(t) \, ,
$$
where $d_i=1$ if $g_i$ is decreasing, and $d_i=0$ if $g_i$ is increasing. The density $f_Y$ can be found by differentiation of $F_Y$, if the  $g_i$'s are smooth.
