Newbie question: Extract mean and variance from a gaussian(mean, variance)

Jawab Newbie question: Extract mean and variance from a gaussian(mean, variance)

  • terça-feira, 19 de junho de 2012 08:49
     
     

    Goood Morning Infer.NET team and thanks for work on this wonderful library,

    As a newbie in Infer.net, working in VB.NET, i am trying to test bayesian inference.

    All is ok, i can create a w matrix, calculated with by this way:

    Dim y_observed As VariableArray(Of Double) = Variable.Observed(Variation, r).Named("y")
    Dim x_observed As VariableArray(Of Vector) = Variable.Observed(x, r).Named("x")

    ' Bayes Point Machine
    Dim noise As Double = 0.1
    y_observed(r) = Variable.GaussianFromMeanAndVariance(Variable.InnerProduct(w, x_observed(r)), noise)

    I "infer" my wposterior gaussian like that: Dim wPosterior As VectorGaussian = engine.Infer(Of VectorGaussian)(w)

    and i use it with a unique  "Out of the Sample" observation  yOTS(0) where:  

    Dim yOTS As VariableArray(Of Double) = Variable.Array(Of Double)(r2)

    yOTS(0) = Variable.GaussianFromMeanAndVariance(Variable.InnerProduct(Variable.Random(wPosterior), xOTS_observed(0)), noise)

    Finally i obtain my output, for exemple:

    "output=" & engine.Infer(yOTS).ToString => output=[0] Gaussian(0.00123, 0.1196)

    My problem is quite frustrating: i can t put mean (here 0.00123) and variance (0.1196) in variables ...

    I have tried moyenne = engine.Infer(yOTS).GetMean(), it should be straightforward but ... i have a bug, the error message says:

    "The public member 'GetMean' from type 'DistributionStrucArray(Of Gaussain, Double)' is not found' (Rough english translation from french error message).

    So, is there a simplier way to get the mean and variance, what have i to do to get these values?

    Thanks for help.

Todas as Respostas

  • quarta-feira, 20 de junho de 2012 16:30
     
     Respondido Contém Código

    yOTS is a VariableArray, so its marginal comes out as IList<Gaussian>.

    IList<Gaussian> output = engine.Infer<IList<Gaussian>>(yOTS);
    Console.WriteLine(output[0].GetMean());

    • Marcado como Resposta TixuOty quinta-feira, 21 de junho de 2012 09:03
    •  
  • quinta-feira, 21 de junho de 2012 09:04
     
     

    Thx a lot Tom, it works.

    it was as simple as that ...

    Let s go to predict now!

    See you later for another newbie question.

    Tixu.