0

Is it possible to write decision-making models in either Stan or PyMC3? By that I mean: we define not only the distribution of random variables, but also the definition of decision and utility variables, and determine the decisions maximizing expected utility.

My understanding is that Stan is more of a general optimizer than PyMC3, so that suggests decision models would be more directly implemented in it, but I would like to hear what people have to say.

Edit: While it is possible to enumerate all decisions and compute their corresponding expected utility, I am wondering about more efficient methods since the number of decisions could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow computing of the decisions on only a smaller set of relevant random variables. I wonder if either Stan or PyMC3 do that kind of thing.

user118967
  • 4,895
  • 5
  • 33
  • 54
  • Stan has optimization algorithms, but they are quite basic (aside from using autodifferentiation to calculate the gradient), and the MCMC sampling algorithms are more suitable for decision theory anyway. – Ben Goodrich Nov 18 '18 at 05:58

1 Answers1

2

The basic steps for Bayesian decision theory are:

  1. Enumerate a finite set of decisions that could be made
  2. Specify a utility function of the decision and perhaps other things
  3. Draw from the posterior distribution of all the unknowns given the known data
  4. Evaluate the utility function for each possible decision and each posterior draw
  5. Make the decision with the highest expected utility, averaging over the posterior draws.

You can do those five steps with any software --- Stan and PyMC3 included --- that produces (valid) draws from the posterior distribution. In Stan, the utility function should be evaluated in the generated quantities block.

Ben Goodrich
  • 4,870
  • 1
  • 19
  • 18
  • You are right. However, I was thinking of more efficient methods than simply enumerating the decisions, which could be combinatorially too many (for example, how many items to buy from a list with thousands of products). Influence diagram algorithms exploit factorizations in the model to identify independences that allow some of the decisions to be computed from a smaller set of relevant random variables, and that's what I had in mind. I will update the question to that effect. – user118967 Nov 18 '18 at 19:04
  • 1
    Stan does not involve graphs at all, so if there are relevant conditional independencies, then users have to recognize them and utilize them. PyMC3 does have some graph capabilities, but I don't know if they are sufficient for your use case. – Ben Goodrich Nov 19 '18 at 20:05