# sarp: Tests consistency with the Strong Axiom of Revealed... In revpref: Tools for Computational Revealed Preference Analysis

## 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 (eSARP) and computes the number of eSARP 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

 `1` ```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 eSARP consistent and a value 0 if the data set is eSARP inconsistent. The second element (`nviol`) reports the number of eSARP violations. If the data is eSARP consistent, `nviol` is 0. Note that the maximum number of violations in an eSARP inconsistent data is T(T-1).

## Definitions

For a given efficiency level 0 ≤ e ≤ 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 ≥ 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.

`garp` for the Generalized Axiom of Revealed Preference and `warp` for the Weak Axiom of Revealed Preference.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```# 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) ```