[R] how to estimate conditional density

(Ted Harding) Ted.Harding at nessie.mcc.ac.uk
Wed Nov 17 10:37:20 CET 2004

On 17-Nov-04 Yulei He wrote:
> Hi, there.
> Suppose I have a bivariate data set y1 and y2. Can anybody
> tell me how to estimate the conditional density of f(y1|y2)
> and vice versa? Thanks.
> Yulei

In the absence of a parametric model for the distribution,
a simple-minded approach could be the following:

1. Use 'f<-kde2d(...)' from the MASS library to generate a
   kernel density estimate of the bivariate distribution,
   ensuring that your (y1,y2) grid includes the value of y2
   at which you want to get f(y1|y2). Suppose that different
   values of y2 correspond to different rows of the matrix
   f$z in the returned result (see "?kde2d").

2. For the row [i] corresponding to the conditioning value
   of y2, normalise the values so that sum(f$z[i,]*dy1)=1,
   where dy1 is the step between different values of y1 in
   the grid used in (1).

The resulting normalised row of values is then an estimate
of f(y1|y2), for each such value of y2.

Similarly, applying (2) to the columns of f$z, you can get
an estimate of f(y2|y1).

[Note: for each single value of y2, you don't need to estimate
 the density of y2, i.e. for this purpose you can forget about
 the definition f(y1,y2)/f(y2) of f(y1|y2).]

Hoping this helps,

E-Mail: (Ted Harding) <Ted.Harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861  [NB: New number!]
Date: 17-Nov-04                                       Time: 09:37:20
------------------------------ XFMail ------------------------------

More information about the R-help mailing list