Learn R Programming

games (version 1.1.2)

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, minOffer = 0, maxOffer, offertol = sqrt(.Machine$double.eps), s1 = NULL, s2 = NULL, outcome = c("both", "offer"), boot = 0, bootreport = TRUE, profile, method = "BFGS", ..., 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.
minOffer
numeric: the lowest offer Player 1 could feasibly make (default 0).
maxOffer
numeric: the highest offer Player 1 could feasibly make.
offertol
numeric: offers within offertol of minOffer/maxOffer will be considered to be at the minimum/maximum. (This is used to prevent floating-point problems and need not be changed in most applications.)
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.
profile
output from running profile.game on a previous fit of the model, used to generate starting values for refitting when an earlier fit converged to a non-global maximum.
method
character string specifying which optimization routine to use (see maxLik)
...
other arguments to pass to the fitting function (see maxLik).
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) and profiling (see profile.game).

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)

## Model 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")
summary(m2)

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