guidocarvajalo
Hi!I would like to use Noisy Max in a model, but unfortunately there is no information regarding what the arguments (i.e. NoisyMax(s, p1_1, p1_n, t1, pm_1, pm_n, tn) mean on the BL Help. Also, is it possible to use non-boolean parents nodes in the NoisyMax and Noisy Or distributions?. Finally, where could I find examples of general function syntax in Bayesialab?. Many thanks in advance, Guido
Quote 0 0
admin
Hi Guido,I'm sorry for the very late answer.The NoisyMax computes the probability distribution of a node by computing the probabilistic contributions of each parent and taking the max of these contributions according of the Noisy Max formula.To use this formula, we suppose that the states of the node represent an increasing sequence of values.The formula is the following:[latex:e7khtwln]\begin{matrix} NoisyMax( & N, \\ & p_{1,1}, & ..., & p_{1,n}, & Test_{1},\\ & ..., & ..., & ..., & ..., \\ & p_{k,1}, & ..., & p_{k,3}, & Test_{k})\end{matrix}[/latex:e7khtwln][latex:e7khtwln]N[/latex:e7khtwln] is the actual node with [latex:e7khtwln]n[/latex:e7khtwln] states.Each line represents the probability distribution given to [latex:e7khtwln]N[/latex:e7khtwln] if the [latex:e7khtwln]Test_{i}[/latex:e7khtwln] succeed.It must contains [latex:e7khtwln]n[/latex:e7khtwln] probabilities and the last term is the test itself.You can add as many tests as you want (here [latex:e7khtwln]k[/latex:e7khtwln] tests) following the same rule.For example, let a node [latex:e7khtwln]A[/latex:e7khtwln] with 3 states [latex:e7khtwln]a_{1}, a_{2}, a_{3}[/latex:e7khtwln] and with 2 parents [latex:e7khtwln]B[/latex:e7khtwln] with 2 states [latex:e7khtwln]b_{1}, b_{2}[/latex:e7khtwln] and [latex:e7khtwln]C[/latex:e7khtwln] with 2 states [latex:e7khtwln]c_{1}, c_{2}[/latex:e7khtwln]. [latex:e7khtwln]\begin{matrix} NoisyMax( & A, \\ & 1, & 0, &0, & B == b_{1},\\ & 0.5, & 0.5, & 0, & B == b_{2},\\ & 0.1, & 0.8, & 0.1, & C == c_{1},\\ & 0, & 0.1, & 0.9, & C == c_{2})\end{matrix}[/latex:e7khtwln]If [latex:e7khtwln]B == b1[/latex:e7khtwln] and [latex:e7khtwln]C == c1[/latex:e7khtwln], the computed distribution will be: [latex:e7khtwln]\{ 0.1, 0.8, 0.1 \}[/latex:e7khtwln]If [latex:e7khtwln]B == b2[/latex:e7khtwln] and [latex:e7khtwln]C == c1[/latex:e7khtwln], the computed distribution will be: [latex:e7khtwln]\{ 0.05, 0.85, 0.1 \}[/latex:e7khtwln]etc.Let [latex:e7khtwln]N[/latex:e7khtwln] a binary node with n binary parents [latex:e7khtwln]N_{i}[/latex:e7khtwln].The formula of the NoisyOr is:[latex:e7khtwln]\begin{matrix} NoisyOr( & N, & leak,\\ & N_{1}, &p_{1}, \\ & ..., & ..., \\ & N_{k}, & p_{k})\end{matrix}[/latex:e7khtwln]where [latex:e7khtwln]p_{i}[/latex:e7khtwln] is the probability of [latex:e7khtwln]N[/latex:e7khtwln] to be true, when its parent [latex:e7khtwln]N_{i}[/latex:e7khtwln] is true.Hope this helps,Mark
Quote 0 0
Mark
Hi Guido,I'm sorry for the very late answer.The NoisyMax computes the probability distribution of a node by computing the probabilistic contributions of each parent and taking the max of these contributions according of the Noisy Max formula.To use this formula, we suppose that the states of the node represent an increasing sequence of values.The formula is the following:[latex:se0z1ujd]\begin{matrix} NoisyMax( & N, \\ & p_{1,1}, & ..., & p_{1,n}, & Test_{1},\\ & ..., & ..., & ..., & ..., \\ & p_{k,1}, & ..., & p_{k,3}, & Test_{k})\end{matrix}[/latex:se0z1ujd][latex:se0z1ujd]N[/latex:se0z1ujd] is the actual node with [latex:se0z1ujd]n[/latex:se0z1ujd] states.Each line represents the probability distribution given to [latex:se0z1ujd]N[/latex:se0z1ujd] if the [latex:se0z1ujd]Test_{i}[/latex:se0z1ujd] succeed.It must contains [latex:se0z1ujd]n[/latex:se0z1ujd] probabilities and the last term is the test itself.You can add as many tests as you want (here [latex:se0z1ujd]k[/latex:se0z1ujd] tests) following the same rule.For example, let a node [latex:se0z1ujd]A[/latex:se0z1ujd] with 3 states [latex:se0z1ujd]a_{1}, a_{2}, a_{3}[/latex:se0z1ujd] and with 2 parents [latex:se0z1ujd]B[/latex:se0z1ujd] with 2 states [latex:se0z1ujd]b_{1}, b_{2}[/latex:se0z1ujd] and [latex:se0z1ujd]C[/latex:se0z1ujd] with 2 states [latex:se0z1ujd]c_{1}, c_{2}[/latex:se0z1ujd]. [latex:se0z1ujd]\begin{matrix} NoisyMax( & A, \\ & 1, & 0, &0, & B == b_{1},\\ & 0.5, & 0.5, & 0, & B == b_{2},\\ & 0.1, & 0.8, & 0.1, & C == c_{1},\\ & 0, & 0.1, & 0.9, & C == c_{2})\end{matrix}[/latex:se0z1ujd]If [latex:se0z1ujd]B == b1[/latex:se0z1ujd] and [latex:se0z1ujd]C == c1[/latex:se0z1ujd], the computed distribution will be: [latex:se0z1ujd]\{ 0.1, 0.8, 0.1 \}[/latex:se0z1ujd]If [latex:se0z1ujd]B == b2[/latex:se0z1ujd] and [latex:se0z1ujd]C == c1[/latex:se0z1ujd], the computed distribution will be: [latex:se0z1ujd]\{ 0.05, 0.85, 0.1 \}[/latex:se0z1ujd]etc.Let [latex:se0z1ujd]N[/latex:se0z1ujd] a binary node with n binary parents [latex:se0z1ujd]N_{i}[/latex:se0z1ujd].The formula of the NoisyOr is:[latex:se0z1ujd]\begin{matrix} NoisyOr( & N, & leak,\\ & N_{1}, &p_{1}, \\ & ..., & ..., \\ & N_{k}, & p_{k})\end{matrix}[/latex:se0z1ujd]where [latex:se0z1ujd]p_{i}[/latex:se0z1ujd] is the probability of [latex:se0z1ujd]N[/latex:se0z1ujd] to be true, when its parent [latex:se0z1ujd]N_{i}[/latex:se0z1ujd] is true.Hope this helps,Mark
Quote 0 0
mason800
Hello, 

I am trying to use noisyOR function. I understand p1, p2, ...,pn are the probabilities of parents node but what is S?
Quote 0 0
Mark

Hi Mason,

Please take a look at this link:  http://library.bayesia.com/display/BlabC/Discrete+Probability+Distributions

Remember that:

Noisy-Or:

This function may be used when there are several possible causes for an event, any of which can cause the event by itself, but only with a certain probability.
Also, if desired, it allows for the event to occur spontaneously, without any of the known causes being true.
It takes its simplest form when all the parent nodes and the child node are boolean (e.g. true/false).

It is similar to a regular “or” function in which the child takes on state true if any of its parents are true, otherwise it takes on false.
However, there is a probabilistic component (hence the term “noisy”), in that even if a parent is true, the child is not necessarily true.

For each parent there is one number called the causal strength, which gives the probability that the child is true when that parent is true, apart from any other interactions.
It is usually denoted pi for the  parent. As well, there is a probability that the child is true even when all the parents are false, called the leak probability (this can simply be made zero if there is no such possibility).

I hope this helps

Quote 0 0
mason800
Hi Mark,

Thanks for your quick response. I fully understand the theory of NoisyOR function. I am keep getting error when I define the NoisyOR formula.

In my case study, heart attack is the symptom and there are several causes (parents) to the heart attack but for simplification I considered only two: poor diet and lack of exercise. So, heart attack is conditioned on poor diet and lack of exercise. All three variables have two states (False and True). The prior probabilities of poor diet and lack of exercise are both known. I am trying to use NoisyOR function to determine the probability of heart attack. 
In NoisyOR tutorial that is available on BayesiaLab website, the formula is like below:

NoisyOr(?N3?, 0.1, ?N1?, 0.8, ?N2?, 0.6)    N3 is syptomes (heart attack in this case), N1 and N2 can be thought as lack of exercise and poor diet. The software asks me to specify the state of N3 (heart attack). Please see screenshot below or attached file. I must specify True. The software does not accept ?heart attack?

In facts instead of N3 I should specify either False or True state of symptoms. I am not sure hopw tutorial used N3 because software does not allow to chose the symptoms. I can chose the dependent variables (N1, and N2) and insert their probabilities). I am confused how to write the formula. Any help is appreciated. Thanks so much! 

  123.jpg 

  2.png 
Quote 0 0
Mark
Hi Mason,

Please click on the Probabilistic radio-button to indicate the equation is probabilistic.

Regards
Quote 0 0
mason800
Neither deterministic nor probabilistic works. I cannot even generate probability distribution using Normal distribution. I am also wondering why BayesiaLab does not have Truncated Normal distribution. 
Quote 0 0
ero
I've managed to successfully use NoisyOr (but after some trial an error as I found the documentation a bit light on details)
I think it will work when you set the equation to probabilistic and add the target variable as the first parameter, like this:

NoisyOr(?Heart attack?,
 0.1, ?Poor diet?, 0.2, ?Lack of exercise?, 0.12)

Then, if it accepts it, you should be able to generate the table via "Validate". Hope it works!
Quote 1 0