| fpa_values | R Documentation |
Nonparametric inversion of the equilibrium bid function of a symmetric first-price sealed-bid auction through the quantile density of bids:
\hat v = b + \lambda^{-1}\{\psi(\hat u)\,\hat q(\hat u)\},\qquad \hat u = \hat G(b),
where \hat q is a quantile density estimate ([qdf()]), \psi is
the copula multiplier (equal to u/(n-1) under independent private
values, so that \psi q = G/\{(n-1)g\} and the formula is that of
Guerre, Perrigne and Vuong 2000), and \lambda^{-1} accounts for risk
aversion (Guerre, Perrigne and Vuong 2009): the identity for risk-neutral
bidders and y \mapsto (1-\eta) y for CRRA utility U(t) = t^{1-\eta}.
'method = "zincenko"' gives the kernel estimator of Zincenko (2024): a
triweight kernel for \hat G and \hat g with normal-reference
bandwidths, and linear extrapolation of the inverse bid function within
h_g^{0.99} of the boundaries instead of trimming; the implementation
is adapted from code provided by F. Zincenko.
'method = "gpv"' gives the conventional benchmark
\hat v = b + \hat G(b)/\{(n-1)\hat g(b)\} with a Gaussian kernel and
Sheather–Jones bandwidth for \hat g; '"gpv_bc"' renormalises a
triweight kernel by its mass inside the bid support (a simple boundary
correction; the Hickman–Hubbard correction is provided by
'fpa_density()').
fpa_values(
bids,
n = NULL,
method = "indirect_poisson",
bandwidth = "bcv",
eta = 0,
family = "independence",
theta = NULL,
u_scheme = c("i/(n+1)", "i/n"),
monotone = c("none", "spline", "isotonic"),
trim = 0.1,
replace = c("all", "boundary"),
df = 6,
psi_bw = NULL,
...
)
bids |
numeric vector of pooled bids, or an 'L' by 'n' matrix (one row per auction). A matrix is required for 'family != "independence"' with 'theta = NULL', so that the copula parameter can be estimated from within-auction pairs. |
n |
number of bidders per auction (taken from 'ncol(bids)' for a matrix). |
method |
quantile-density estimator passed to [qdf()], or '"gpv"', '"gpv_bc"', '"zincenko"' for the kernel benchmarks. |
bandwidth |
passed to [qdf()]: a selector name, the rule '"sqrt"'
( |
eta |
CRRA risk-aversion parameter in |
family |
copula family of the private values: '"independence"', '"clayton"', '"gumbel"', '"frank"' (see [copula_psi()]), or '"nonparametric"' for the flexible copula multiplier of [copula_psi_np()] (the CopQDF-F estimator of Doosti 2026a). With 'method = "gpv"' and a parametric family the inversion is the semiparametric estimator of Hubbard, Li and Paarsch (2012): a kernel bid density combined with a parametric copula. |
theta |
copula parameter; 'NULL' estimates it by [copula_fit()]. |
u_scheme |
scores |
monotone |
'"none"', '"spline"' or '"isotonic"'. |
trim |
tail share excluded from the spline fit (default 0.1, i.e. the central 80 percent is used). |
replace |
for 'monotone = "spline"': '"all"' or '"boundary"'. |
df |
degrees of freedom of the natural spline (default 6). |
psi_bw |
beta-kernel bandwidth for 'family = "nonparametric"'; see [copula_psi_np()]. |
... |
further arguments to [qdf()] (e.g. 'kernel', 'H', 'j0',
'm_range', 'grid', 'zero_at_origin'). In particular
'zero_at_origin = FALSE' switches the Bernstein estimator to the
|
An object of class '"fpa_values"': a list with
sorted pooled bids and their scores
the quantile density, the copula multiplier and
the estimated markup \lambda^{-1}(\psi q) at each bid
pseudo-values before and after the monotonicity step (identical when 'monotone = "none"')
when 'bids' is a matrix, 'values' rearranged to the original 'L' by 'n' layout
the fitted [qdf()] object (or 'NULL' for the kernel benchmarks)
the copula specification / fit
The equilibrium bid function is increasing, so \hat v should be
increasing in b. Departures occur mostly near the boundaries.
'monotone = "spline"' follows Doosti, Dewan and Talebian (2025): a natural
cubic spline of \hat v on b is fitted to the central
1 - 2\,\mathrm{trim} share of the bids and its fitted values replace
\hat v either everywhere ('replace = "all"', the published
implementation) or only in the trimmed tails ('replace = "boundary"').
'monotone = "isotonic"' applies the pool-adjacent-violators rearrangement
([stats::isoreg()]). '"none"' returns the raw pseudo-values.
Guerre, E., Perrigne, I. and Vuong, Q. (2000). Optimal nonparametric estimation of first-price auctions. *Econometrica*, 68, 525–574.
Guerre, E., Perrigne, I. and Vuong, Q. (2009). Nonparametric identification of risk aversion in first-price auctions under exclusion restrictions. *Econometrica*, 77, 1193–1227.
Doosti, H., Dewan, I. and Talebian, M. (2025). *Economics Letters*, 257, 112670.
Doosti, H. (2026a). *Economics Letters*, 261, 112837.
set.seed(1)
sim <- fpa_simulate(20, 5, Q = function(u) qgamma(u, 2, 10))
fit <- fpa_values(sim$bids, method = "bernstein", bandwidth = "bcv")
fit
plot(fit, true = sim$values)
# risk-averse bidders with CRRA eta = 0.25
fit_ra <- fpa_values(sim$bids, method = "bernstein", bandwidth = 0.05, eta = 0.25)
# affiliated values, Clayton copula estimated from the data
sim2 <- fpa_simulate(50, 3, Q = function(u) 1 + 2 * u^2, family = "clayton", theta = 2)
fit2 <- fpa_values(sim2$bids, method = "indirect_poisson", family = "clayton")
fit2$copula$theta
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.