# Application Programmers Manual: Value of Information

Value of information is the expected value of observing the state of a node before making a decision. SMILE can calculate the value of information of any number of variables and present the results from different points of view (decisions in the decision chain). The class DSL_valueOfInformation is provided to easily specify the desired options and also to retrieve the results.

As an example, imagine that you want to calculate the value of knowing the state of a set of nodes S before a decision node D and that you want to get the results from point of view V. To do this, you must fill your DSL_valueOfInformation object with all those parameters by using some of its methods:

- AddNode()/RemoveNode() let you specify the set S. Note, that if you include 2 nodes in the set, the results obtained will be the value of information of knowing those two nodes at the same time. This value is in general not equal to the sum of the values of knowing each of them separately.

- SetDecision() lets you specify the decision node D that represents the next decision to make right after knowing the values of the nodes of the set S (i.e. the values of those nodes will be available before making decision D).

- SetPointOfView() lets you specify the node V. The point of view states the level of the decision tree at which the results must be collected. For instance, imagine an influence diagram with three decision nodes D1, D2 and D3 in that sequential order. You want to know the value of information for a chance node C if you collect that information before making decision D3. The value of this information will be a single number if point of view is D1 but you can set the point of view to be D2 and, in that case, you will get a different value of information for each of the choices of D1. If the point of view is set to node V, the results will be collected right before decision V needs to be made.

Once you have filled the structure with the desired parameters, you can call the ValueOfInformation() network method to obtain the results. If everything goes ok, you can extract the results from the same structure by using the methods:

- GetIndexingNodes() will give you a list of the nodes that are indexing the resulting value of information. In the previous example, if you set the point of view to be D2 this list would contain the node D1.

- GetValues() will give you a matrix containing the value of information. The dimensions of this matrix correspond to the set of outcomes of the indexing nodes.

An important detail to note is that the point of view does not have to be a decision node. It can also be an informational predecessor of a decision node. As the result is collected right before the point of view, this means that the value of the informational predecessor in question will not be known before the value of the node we are interested in (i.e., it will not index the resulting value of information).

Note also that if the point of view V is a descendant of a decision node D (i.e., it is a causal effect of D), the value of information is zero. The value of information of a node C with respect to decision node D is zero if C is a descendant of D.