games (version 0.5-0)

ultimatum: Statistical ultimatum game

Description

Estimates the statistical ultimatum game described in Ramsay and Signorino (2009), illustrated below in Details.

Usage

ultimatum(formulas, data, subset, na.action, maxOffer,
    offertol=sqrt(.Machine$double.eps), s1, s2, outcome=c("both",
    "offer"), boot=0, bootreport=TRUE, ..., reltol=1e-12)

Arguments

formulas
a list of two formulas, or a Formula object with two right-hand sides. See Details and the examples below.
data
data frame containing the variables in the model.
subset
optional logical expression specifying which observations from data to use in fitting.
na.action
how to deal with NAs in data. Defaults to the na.action setting of options. See na.omit.
maxOffer
numeric: the highest offer Player 1 could feasibly make.
offertol
numeric: offers within offertol of maxOffer will be considered to be at the maximum. If maxOffer and all observed offers are integer-valued, the value of offertol should not matter.
s1
numeric: scale parameter for Player 1. If NULL (the default), the parameter will be estimated.
s2
numeric: scale parameter for Player 2. If NULL (the default), the parameter will be estimated.
outcome
the outcome of interest: just Player 1's offer (offer) or both the offer and its acceptance (both). See Details.
boot
integer: number of bootstrap iterations to perform (if any).
bootreport
logical: whether to print status bar when performing bootstrap iterations.
...
other arguments to pass to the fitting function (see maxBFGS).
reltol
numeric: relative convergence tolerance level (see optim). Use of values higher than the default is discouraged.

Value

  • An object of class c("game", "ultimatum"). For details on the game class, see egame12. The ultimatum class is just for use in the generation of predicted values (see predProbs).

Details

The model corresponds to the following extensive-form game, described in Ramsay and Signorino (2009): . 1 . / \ . / \ . / \ y in [0, Q] . / \ . --------- . /\ 2 . / \ . / \ . / \ . Q - y R1 . y R2 Q refers to the maximum feasible offer (the argument maxOffer).

The two equations on the right-hand side of formulas refer to Player 1's and Player 2's reservation values respectively. The left-hand side should take the form offer + acceptance, where outcome contains the numeric value of the offer made and acceptance is an indicator for whether it was accepted. (If outcome is set to offer, the acceptance indicator can be omitted. See below for more.)

The outcome argument refers to whether the outcome of interest is just the level of the offer made, or both the level of the offer and whether it was accepted. If acceptance was unobserved, then outcome should be set to offer. If so, the estimates for Player 2's reservation value should be interpreted as Player 1's expectations about these parameters. It may also be useful to set outcome to offer even if acceptance data are available, for the purpose of comparing the strategic model to other models of offer levels (as in Ramsay and Signorino 2009). If an acceptance variable is specified but outcome is set to offer, the acceptance data will be used for starting values but not in the actual fitting.

Numerical instability is not uncommon in the statistical ultimatum game, especially when the scale parameters are being estimated.

References

Kristopher W. Ramsay and Curtis S. Signorino. 2009. A Statistical Model of the Ultimatum Game. Available online at http://www.rochester.edu/college/psc/signorino/research/RamsaySignorino_Ultimatum.pdf.

Examples

Run this code
data(data_ult)

## the formula:
f1 <- offer + accept ~ x1 + x2 + x3 + x4 + w1 + w2 | z1 + z2 + z3 + z4 + w1 + w2
##                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
##                                  R1                              R2

m1 <- ultimatum(f1, data = data_ult, maxOffer = 15)
summary(m1)

## estimating offer size only
f2 <- update(Formula(f1), offer ~ .)
m2 <- ultimatum(f2, data = data_ult, maxOffer = 15, outcome = "offer")

## fixing scale terms
m3 <- ultimatum(f1, data = data_ult, maxOffer = 15, s1 = 5, s2 = 1)
summary(m3)

Run the code above in your browser using DataCamp Workspace