locked
Inferring Joint distributions (Migrated from community.research.microsoft.com) RRS feed

  • Question

  • Kirali posted on 03-01-2011 12:00 AM

    Hi, I am using a bayesnet for an application very similar to the one described here. Thanks a lot for your time, I found it very useful. 

    I have a question regarding inference.

    I am able to infer on one random variable using 

    var distr = InfEngine.Infer<Discrete[]>(CarModel);

    This evaluates P(CarModel | evidence).

    If I want to find the joint distribution of 2 or more random variables.

    Say I want to find the joint distribution of CarModel and CarColor

    So I want to evaluate P(CarModel,CarColor | evidence)

    How do I do this?

     

     

    Friday, June 3, 2011 6:29 PM

Answers

  • minka replied on 03-06-2011 7:17 AM

    You first need to fit a model to the data, then you ask P(CarMake, CarModel | CarBody = Sedan) from the model (not the data).  Observe CarBody=Sedan, then loop over all possible values for CarMake and CarModel and set their ObservedValues.  The model gives you the probability for each combination.  Normalize to get the conditional distribution.

    Friday, June 3, 2011 6:29 PM

All replies

  • minka replied on 03-01-2011 2:59 AM

    Infer.NET uses factorized approximations so it doesn't directly compute joint distributions.  If you asked for one, you would get the product of univariate marginals which is probably not what you want.  However, you can use the general machinery for computing the probability of a joint event, as described here.  You would loop over all possible joint states and query the probability of each one.  This would give you p(CarModel, CarColor, evidence) for each value of (CarModel, CarColor).  Sum over (CarModel, CarColor) to get p(evidence) and divide by this to get your conditional joint distribution.

    Friday, June 3, 2011 6:29 PM
  • Kirali replied on 03-04-2011 10:00 PM

    CarMake

    CarModel

    CarBody

    honda

    accord

    Sedan

    Acura

    mdx

    Coupe

    honda

    civic

    Sedan

    Acura

    mdx

    Sedan

    Ford

    ikon

    Coupe

    Acura

    mdx

    Sedan

    honda

    accord

    Sedan

    honda

    crv

    SUV

    Just to make it for clear, can u explain on this data. 

    I want to evaluate P(CarMake, CarModel | CarBody = Sedan)

     

     

    Friday, June 3, 2011 6:29 PM
  • minka replied on 03-06-2011 7:17 AM

    You first need to fit a model to the data, then you ask P(CarMake, CarModel | CarBody = Sedan) from the model (not the data).  Observe CarBody=Sedan, then loop over all possible values for CarMake and CarModel and set their ObservedValues.  The model gives you the probability for each combination.  Normalize to get the conditional distribution.

    Friday, June 3, 2011 6:29 PM