Learn R Programming

decisionSupport (version 1.114)

welfareDecisionAnalysis: Analysis of the underlying welfare based decision problem.

Description

The optimal choice between two different opportunities is calculated. Optimality is taken as maximizing expected welfare. Furthermore, the Expected Opportunity Loss (EOL) is calculated.

Usage

welfareDecisionAnalysis(
  estimate,
  welfare,
  numberOfModelRuns,
  randomMethod = "calculate",
  functionSyntax = "data.frameNames",
  relativeTolerance = 0.05,
  verbosity = 0
)

Value

An object of class welfareDecisionAnalysis with the following elements:

$mcResult

The results of the Monte Carlo analysis of estimate transformed by welfare

(cf. mcSimulation).
$enbPa

Expected Net Benefit of project approval: ENB(PA)

$elPa

Expected Loss in case of project approval: EL(PA)

$elSq

Expected Loss in case of status quo: EL(SQ)

$eol

Expected Opportunity Loss: EOL

$optimalChoice

The optimal choice, i.e. either project approval (PA) or the status quo (SQ).

Arguments

estimate

estimate object describing the distribution of the input variables.

welfare

either a function or a list with two functions, i.e. list(p1,p2). In the first case the function is the net benefit (or welfare) of project approval (PA) vs. the status quo (SQ). In the second case the element p1 is the function valuing the first project and the element p2 valuing the second project, viz. the welfare function of p1 and p2 respectively.

numberOfModelRuns

integer: The number of running the welfare model for the underlying Monte Carlo simulation.

randomMethod

character: The method to be used to sample the distribution representing the input estimate. For details see option method in random.estimate.

functionSyntax

character: function syntax used in the welfare function(s). For details see mcSimulation.

relativeTolerance

numeric: the relative tolerance level of deviation of the generated confidence interval from the specified interval. If this deviation is greater than relativeTolerance a warning is given.

verbosity

integer: if 0 the function is silent; the larger the value the more verbose is output information.

Details

The underlying decision problem and its notational framework

We are considering a decision maker who can influence an ecological-economic system having two alternative decisions \(d_1\) and \(d_2\) at hand. We assume, that the system can be characterized by the \(n-\)dimensional vector \(X\). The characteristics \(X\), are not necessarily known exactly to the decision maker. However, we assume furthermore that she is able to quantify this uncertainty which we call an estimate of the characteristics. Mathematically, an estimate is a random variable with probability density \(\rho_X\).

Furthermore, the characteristics \(X\) determine the welfare \(W(d)\) according to the welfare function \(w_d\): $$ W_d = w_d (X) $$ Thus, the welfare of decision \(d\) is also a random variable whose probability distribution we call \(\rho_{W_d}\). The welfare function \(w_d\) values the decision \(d\) given a certain state \(X\) of the system. In other words, decision \(d_2\) is preferred over decision \(d_1\), if and only if, the expected welfare of decision \(d_2\) is greater than the expected welfare (For a comprehensive discussion of the concept of social preference ordering and its representation by a welfare function cf. Gravelle and Rees (2004)) of decsion \(d_1\), formally $$ d_1 \prec d_2 \Leftrightarrow \textrm{E}[W_{d_1}] < \textrm{E}[W_{d_2}]. $$ This means the best decision \(d^*\) is the one which maximizes welfare: $$ d^* := \arg \max_{d=d_1,d_2} \textrm{E}[W_d] $$

This maximization principle has a dual minimization principle. We define the net benefit \(\textrm{NB}_{d_1} := W_{d_1} - W_{d_2}\) as the difference between the welfare of the two decision alternatives. A loss \(L_d\) is characterized if a decision \(d\) produces a negative net benefit. No loss occurs if the decision produces a positive net benefit. This is reflected in the formal definition $$ L_d := - \textrm{NB}_d, \textrm{~if~} \textrm{NB}_d < 0, \textrm{~and~} L_d := 0 \textrm{~otherwise}. $$ Using this notion it can be shown that the maximization of expected welfare is equivalent to the minimization of the expected loss \(\textrm{EL}_d := \textrm{E}[L_d]\).

The Expected Opportunity Loss (EOL)

The use of this concept, here, is in line as described in Hubbard (2014). The Expected Opportunity Loss (\(\textrm{EOL}\)) is defined as the expected loss for the best decision. The best decision minimizes the expected loss: $$ \textrm{EOL} := \min \left\{ \textrm{EL}_{d_1}, \textrm{EL}_{d_2}\right\} $$

The \(\textrm{EOL}\) is always conditional on the available information which is characterized by the probability distribution of \(X\) \(\rho_X\): \(\textrm{EOL} = \textrm{EOL}(\rho_X)\).

Special case: Status quo and project approval

A very common actual binary decision problem is the question if a certain project shall be approved versus continuing with business as usual, i.e. the status quo. It appears to be natural to identify the status quo with zero welfare. This is a special case ( Actually, one can show, that this special case is equivalent to the discussion above.) of the binary decision problem that we are considering here. The two decision alternatives are

\(d_1:\)

project approval (PA) and

\(d_2:\)

status quo (SQ),

and the welfare of the approved project (or project outcome or yield of the project) is the random variable \(W_\textrm{PA}\) with distribution \(P_{W_\textrm{PA}} = w_\textrm{PA}(P_X)\): $$ W_\textrm{PA} \sim w_\textrm{PA}(P_X) = P_{W_\textrm{PA}} $$ and the welfare of the status quo serves as reference and is normalized to zero: $$ W_\textrm{SQ} \equiv 0, $$ which implies zero expected welfare of the status quo: $$ \textrm{E}[W]_\textrm{SQ} = 0. $$

References

Hubbard, Douglas W., How to Measure Anything? - Finding the Value of "Intangibles" in Business, John Wiley & Sons, Hoboken, New Jersey, 2014, 3rd Ed, https://www.howtomeasureanything.com/.

Gravelle, Hugh and Ray Rees, Microeconomics, Pearson Education Limited, 3rd edition, 2004.

See Also

mcSimulation, estimate, summary.welfareDecisionAnalysis

Examples

Run this code
#############################################################
# Example 1 (Creating the estimate from the command line):
#############################################################
# Create the estimate object:
variable=c("revenue","costs")
distribution=c("posnorm","posnorm")
lower=c(10000,  5000)
upper=c(100000, 50000)
costBenefitEstimate<-as.estimate(variable, distribution, lower, upper)
# (a) Define the welfare function without name for the return value:
profit<-function(x){
 x$revenue-x$costs
}
# Perform the decision analysis:
myAnalysis<-welfareDecisionAnalysis(estimate=costBenefitEstimate, 
                                    welfare=profit, 
                                    numberOfModelRuns=100000,
                                    functionSyntax="data.frameNames")
# Show the analysis results:
print(summary((myAnalysis)))
#############################################################
# (b) Define the welfare function with a name for the return value:
profit<-function(x){
 list(Profit=x$revenue-x$costs)
}
# Perform the decision analysis:
myAnalysis<-welfareDecisionAnalysis(estimate=costBenefitEstimate, 
                                    welfare=profit, 
                                    numberOfModelRuns=100000,
                                    functionSyntax="data.frameNames")
# Show the analysis results:
print(summary((myAnalysis)))
#############################################################
# (c) Two decsion variables:
welfareModel<-function(x){
 list(Profit=x$revenue-x$costs,
   Costs=-x$costs)
}
# Perform the decision analysis:
myAnalysis<-welfareDecisionAnalysis(estimate=costBenefitEstimate, 
                                    welfare=welfareModel, 
                                    numberOfModelRuns=100000,
                                    functionSyntax="data.frameNames")
# Show the analysis results:
print(summary((myAnalysis)))

Run the code above in your browser using DataLab