sensv_bn* NewSensvToFinding_bn ( const node_bn*  Qnode,   const nodelist_bn*  Vnodes,   int  what_find )

Creates a sensitivity measuring object, which measures how much the beliefs at one node (called the "query node" or "target node") will change if a finding is entered at another node (called the "varying node"). This is sometimes called "utility-free value of information".

For Qnode, pass the query node, and for Vnodes, pass a list of all nodes that might later be used as varying nodes.

There are two different measures available: variance reduction and entropy reduction (i.e., mutual information).

For what_find, pass the bitwise-OR of which measures you want the created object capable of measuring. To measure variance reduction, pass VARIANCE_OF_REAL_SENSV (= REAL_SENSV + VARIANCE_SENSV), and to measure mutual information, pass ENTROPY_SENSV.

After the object is created, to measure variance reduction, pass the new object to GetVarianceOfReal_bn along with a particular findings node. To measure mutual information between two nodes, pass it to GetMutualInfo_bn.

When you are finished with the sensitivity object, free the resources it uses by calling DeleteSensvToFinding_bn.

Netica uses an efficient algorithm that takes the current findings into account, and requires only a few belief updatings no matter how many nodes are contained in Vnodes. When you request the first sensitivity measure of the query node relative to one of the varying nodes (by calling GetMutualInfo_bn or GetVarianceOfReal_bn), the belief updatings are done and the results cached for subsequent calls involving other varying nodes.

These functions are available as "Network -> Sensitivity to Finding" in Netica Application. For more information on them, contact Norsys for the "Sensitivity" document.


Versions 2.03 and later have this function.

See also:

DeleteSensvToFinding_bn    (reverse operation) Delete the sensv_bn when finished with it
GetVarianceOfReal_bn    Use the sensv_bn to find the variance reduction due to finding
GetMutualInfo_bn    Use the sensv_bn to find the mutual info (entropy reduction)


net_bn* net = ReadNet_bn (NewFileStream_ns ("ChestClinic.dne", env, NULL), NO_WINDOW);
sensv_bn* svCancer = NewSensvToFinding_bn (GetNodeNamed_bn ("Cancer", net), 
                                           GetNetNodes_bn (net), ENTROPY_SENSV);
double mutinfo = GetMutualInfo_bn (svCancer, GetNodeNamed_bn ("Dyspnea", net));
double entropy = GetMutualInfo_bn (svCancer, GetNodeNamed_bn ("Cancer", net));
DeleteSensvToFinding_bn (svCancer);