Learn R Programming

revpref (version 0.1.0)

sarp: Tests consistency with the Strong Axiom of Revealed Preference at efficiency \(e\)

Description

This function allows the user to check whether a given data set is consistent with the Strong Axiom of Revealed Preference at efficiency level \(e\) (\(e\)SARP) and computes the number of \(e\)SARP violations. We say that a data set satisfies SARP at efficiency level \(e\) if \(q_t R_e q_s\) implies \(ep_s'q_s < p_s'q_t\) (see the definition of \(R_e\) below). It is clear that by setting \(e = 1\), we obtain the standard version of SARP. While if \(e < 1\), we allow for some optimization error in the choices to make the data set consistent with SARP. The smaller the \(e\) is, the larger will be the optimization error allowed in the test. It is well known that SARP is a necessary and sufficient condition for a data set to be rationalized by a continuous, strictly increasing, and strictly concave preference function (see Matzkin and Richter (1991)).

Usage

sarp(p, q, efficiency = 1)

Arguments

p

A \(T X N\) matrix of observed prices where each row corresponds to an observation and each column corresponds to a consumption category. \(T\) is the number of observations and \(N\) is the number of consumption categories.

q

A \(T X N\) matrix of observed quantities where each row corresponds to an observation and each column corresponds to a consumption category.\(T\) is the number of observations and \(N\) is the number of consumption categories.

efficiency

The efficiency level \(e\), is a real number between 0 and 1, which allows for a small margin of error when checking for consistency with the axiom. The default value is 1, which corresponds to the test of consistency with the exact SARP.

Value

The function returns two elements. The first element (passsarp) is a binary indicator telling us whether the data set is consistent with SARP at a given efficiency level \(e\). It takes a value 1 if the data set is \(e\)SARP consistent and a value 0 if the data set is \(e\)SARP inconsistent. The second element (nviol) reports the number of \(e\)SARP violations. If the data is \(e\)SARP consistent, nviol is 0. Note that the maximum number of violations in an \(e\)SARP inconsistent data is \(T(T-1)\).

Definitions

For a given efficiency level \(0 \le e \le 1\), we say that:

  • bundle \(q_t\) is directly revealed preferred to bundle \(q_s\) at efficiency level \(e\) (denoted as \(q_t R^D_e q_s\)) if \(ep_t'q_t \ge p_t'q_s\).

  • bundle \(q_t\) is strictly directly revealed preferred to bundle \(q_s\) at efficiency level \(e\) (denoted as \(q_t P^D_e q_s\)) if \(ep_t'q_t > p_t'q_s\).

  • bundle \(q_t\) is revealed preferred to bundle \(q_s\) at efficiency level \(e\) (denoted as \(q_t R_e q_s\)) if there exists a (possibly empty) sequence of observations (\(t,u,v,\cdots,w,s\)) such that \(q_t R^D_e q_u\), \(q_u R^D_e q_v\), \(\cdots, q_w R^D_e q_s\).

References

  • Matzkin, Rosa L., and Marcel K. Richter. "Testing strictly concave rationality." Journal of Economic Theory 53, no. 2 (1991): 287-303.

See Also

garp for the Generalized Axiom of Revealed Preference and warp for the Weak Axiom of Revealed Preference.

Examples

Run this code
# NOT RUN {
# define a price matrix
p = matrix(c(4,4,4,1,9,3,2,8,3,1,
8,4,3,1,9,3,2,8,8,4,
1,4,1,8,9,3,1,8,3,2),
nrow = 10, ncol = 3, byrow = TRUE)

# define a quantity matrix
q = matrix(c( 1.81,0.19,10.51,17.28,2.26,4.13,12.33,2.05,2.99,6.06,
5.19,0.62,11.34,10.33,0.63,4.33,8.08,2.61,4.36,1.34,
9.76,1.37,36.35, 1.02,3.21,4.97,6.20,0.32,8.53,10.92),
nrow = 10, ncol = 3, byrow = TRUE)

# Test consistency with SARP and compute the number of SARP violations
sarp(p,q)

# Test consistency with SARP and compute the number of SARP violations at e = 0.95
sarp(p,q, efficiency = 0.95)


# }

Run the code above in your browser using DataLab