welfareDecisionAnalysis {decisionSupport}R Documentation

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
)

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 d1d_1 and d2d_2 at hand. We assume, that the system can be characterized by the nn-dimensional vector XX. The characteristics XX, 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 ρX\rho_X.

Furthermore, the characteristics XX determine the welfare W(d)W(d) according to the welfare function wdw_d:

Wd=wd(X) W_d = w_d (X)

Thus, the welfare of decision dd is also a random variable whose probability distribution we call ρWd\rho_{W_d}. The welfare function wdw_d values the decision dd given a certain state XX of the system. In other words, decision d2d_2 is preferred over decision d1d_1, if and only if, the expected welfare of decision d2d_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 d1d_1, formally

d1d2E[Wd1]<E[Wd2]. d_1 \prec d_2 \Leftrightarrow \textrm{E}[W_{d_1}] < \textrm{E}[W_{d_2}].

This means the best decision dd^* is the one which maximizes welfare:

d:=argmaxd=d1,d2E[Wd] 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 NBd1:=Wd1Wd2\textrm{NB}_{d_1} := W_{d_1} - W_{d_2} as the difference between the welfare of the two decision alternatives. A loss LdL_d is characterized if a decision dd produces a negative net benefit. No loss occurs if the decision produces a positive net benefit. This is reflected in the formal definition

Ld:=NBd, if NBd<0, and Ld:=0 otherwise. 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 ELd:=E[Ld]\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 (EOL\textrm{EOL}) is defined as the expected loss for the best decision. The best decision minimizes the expected loss:

EOL:=min{ELd1,ELd2} \textrm{EOL} := \min \left\{ \textrm{EL}_{d_1}, \textrm{EL}_{d_2}\right\}

The EOL\textrm{EOL} is always conditional on the available information which is characterized by the probability distribution of XX ρX\rho_X: EOL=EOL(ρ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

d1:d_1:

project approval (PA) and

d2:d_2:

status quo (SQ),

and the welfare of the approved project (or project outcome or yield of the project) is the random variable WPAW_\textrm{PA} with distribution PWPA=wPA(PX)P_{W_\textrm{PA}} = w_\textrm{PA}(P_X):

WPAwPA(PX)=PWPA 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:

WSQ0, W_\textrm{SQ} \equiv 0,

which implies zero expected welfare of the status quo:

E[W]SQ=0. \textrm{E}[W]_\textrm{SQ} = 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).

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

#############################################################
# 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)))

[Package decisionSupport version 1.114 Index]