I think PGStats's program gives you the proportion for each value of X. For large data sets, you might want to compute the proportions only for the percentiles of X. For example, the following SAS/IML program uses PGStats's idea, but only results in 100 computations, regardless of the size of X:
data test;
call streaminit(896868);
do i = 1 to 200;
x = rand("normal", 0);
y = rand("normal", 0.1);
output;
end;
run;
proc iml;
use test; read all var {x y}; close;
call sort(x);
call sort(y);
/* for each percentile of x, what is the proportion of observations
in y that are less than that percentile? */
pctls = do(0.0, 1, 0.01);
call qntl(q, x, pctls); /* convention: 0th pctl=min; 100th pctl=max */
prop = j(nrow(q), 1);
do i = 1 to nrow(q);
prop[i] = mean(y <= q[i]); /* or use >= */
end;
title "Proportion of Y that is less than or equal to quantile of X";
call scatter(q, prop) label={"Quantiles of X" "Proportion of Y That Is Less Than"};
... View more