Axiomatic Consistency Tests#

Every choice adds edges to a directed observation graph (nodes = shopping trips, edges = revealed preferences). The axioms below define what “acyclic” means for this graph - GARP (allowing indifference), SARP (strict), and WARP (pairwise only).

GARP (Generalized Axiom of Revealed Preference)#

GARP violation detection - building preference graph then tracing violation cycle

Reference Implementation: validate_consistency(log)

The Generalized Axiom of Revealed Preference (GARP) constitutes the central behavioral benchmark for optimizing agents.

Formal Revealed Preference Relations:

Consider an agent facing price-quantity observations \(\{(p^t, x^t)\}_{t=1}^T\). We define the weak revealed preference relation \(R\) and the strict revealed preference relation \(P\) as follows:

\[x^i \, R \, x^j \iff p^i \cdot x^i \geq p^i \cdot x^j\]
\[x^i \, P \, x^j \iff p^i \cdot x^i > p^i \cdot x^j\]

Let \(R^*\) denote the transitive closure of the relation \(R\), representing the indirect revealed preference relation.

The GARP Condition:

\[\text{GARP is satisfied} \iff \nexists \, i,j : \left( x^i \, R^* \, x^j \right) \land \left( x^j \, P \, x^i \right)\]

Afriat’s Theorem (1967)

For any given dataset \(\{(p^t, x^t)\}_{t=1}^T\), the following propositions are logically equivalent:

  1. The data satisfy the Generalized Axiom of Revealed Preference (GARP).

  2. There exist positive scalars \(\{U_t\}\) and \(\{\lambda_t > 0\}\) that satisfy the Afriat Inequalities: \(U_s \leq U_t + \lambda_t \cdot p^t \cdot (x^s - x^t) \quad \forall s,t\)

  3. The data are rationalizable by a continuous, monotonic, and concave utility function \(U(x)\).

Afriat’s Theorem establishes that GARP is both necessary and sufficient for the existence of a well-behaved utility function that rationalizes the observed choices.

References: Afriat (1967), Varian (1982), Chambers & Echenique (2016).

WARP (Weak Axiom of Revealed Preference)#

Reference Implementation: validate_consistency_weak(log)

The Weak Axiom of Revealed Preference (WARP) is a foundational consistency condition that precludes direct pairwise contradictions.

The WARP Condition:

\[\text{WARP is satisfied} \iff \nexists \, i,j : \left( x^i \, R \, x^j \right) \land \left( x^j \, P \, x^i \right)\]

Unlike GARP, WARP evaluates only direct inconsistencies (cycles of length 2) and does not account for transitive contradictions across longer sequences of choices.

Reference: Samuelson (1938).

SARP (Strong Axiom of Revealed Preference)#

Reference Implementation: validate_sarp(log)

The Strong Axiom of Revealed Preference (SARP) extends consistency by imposing acyclicity on the indirect revealed preference relation, effectively prohibiting indifference cycles.

The SARP Condition (Acyclicity):

\[\text{SARP is satisfied} \iff \nexists \, i \neq j : \left( x^i \, R^* \, x^j \right) \land \left( x^j \, R^* \, x^i \right)\]

SARP is a more restrictive condition than GARP and is necessary for the identification of unique, single-valued demand functions.

Reference: Houthakker (1950), Chambers & Echenique (2016).

Smooth Preferences and Differentiable Utility#

Reference Implementation: validate_smooth_preferences(log)

In econometric applications requiring differentiable utility specifications (e.g., for calculating price elasticities), the observed behavior must satisfy the following joint conditions:

  1. SARP Consistency: Preclusion of all indifference cycles.

  2. Local Injectivity: A unique mapping from prices to quantities such that:

\[p^t \neq p^s \implies x^t \neq x^s\]

Reference: Chiappori & Rochet (1987).

Acyclical Strict Preferences (Acyclical P)#

Reference Implementation: validate_strict_consistency(log)

This condition provides a more lenient consistency test by evaluating cycles exclusively within the strict revealed preference relation \(P\):

\[\text{Acyclical P holds} \iff P^* \text{ contains no cycles}\]

This criterion accounts for indifference by allowing cycles in the weak relation \(R\), provided no strict preference is violated.

Reference: Dziewulski (2023).

Generalized Axiom of Price Preferences (GAPP)#

Reference Implementation: validate_price_preferences(log)

GAPP constitutes the dual of GARP in the space of price vectors. We define the price preference relation \(R_p\):

\[p^s \, R_p \, p^t \iff p^s \cdot x^t \leq p^t \cdot x^t\]

The GAPP Condition:

\[\text{GAPP is satisfied} \iff \nexists \, s,t : \left( p^s \, R_p^* \, p^t \right) \land \left( p^t \, P_p \, p^s \right)\]

This dual test evaluates whether an agent exhibits consistent preferences across different budget environments, independent of specific quantity bundles.

Reference: Deb et al. (2022).