fpa_density: Nonparametric estimation of the private-value density in...

View source: R/fpa_density.R

fpa_densityR Documentation

Nonparametric estimation of the private-value density in first-price auctions

Description

Two-step estimation of the density f of independent private values. The first step recovers pseudo-values \hat v_i from the bids (by default with the Hickman–Hubbard boundary-corrected GPV inversion, or with any [fpa_values()] fit); the second step estimates the density of the pseudo-values by * '"wavelet_ll"': linear wavelet estimator followed by local-linear smoothing (the best performer in Doosti, Dewan and Sbai 2026); * '"wavelet_linear"', '"wavelet_hard"', '"wavelet_block"': linear, hard-thresholded and block-thresholded wavelet estimators; * '"wavelet_theory"': the hard-thresholding estimator of Theorem 2 of Doosti, Dewan and Sbai (2026) on a periodised basis, with coefficients \hat\beta_{j,k} = N^{-1}\sum_i \psi_{j,k}(\Pi\hat v_i), coarsest level \tau = 3, finest level 2^{j_1} \approx \sigma_N^{-1} and level-dependent thresholds \eta_j = \kappa\,2^{j/2}\sigma_N, \sigma_N = N^{-2/5}(\log N)^{1/2}; by default \kappa is set so that the threshold at the finest level is the universal threshold \hat s\sqrt{2\log N} (\hat s: median absolute finest-level coefficient / 0.6745); pass 'kappa' to override; * '"kde_hh"': the boundary-corrected kernel estimator of Hickman and Hubbard (2015), i.e. GPV with boundary correction at both stages; * '"kde"': Gaussian kernel with Sheather–Jones bandwidth; * '"empirical_quantile"': finite-difference density from the empirical quantile function of the pseudo-values; * '"marmer_shneyerov"': the quantile-based estimator of Marmer and Shneyerov (2012), computed directly from the bids (no first stage).

Because the wavelet basis lives on [0,1], bids and pseudo-values are mapped to the unit interval by a monotone map ('scale'): with '"auto"' the identity when the bids lie in [0,1] (pseudo-values outside are projected onto [0,1] for the wavelet coefficients), otherwise x \mapsto (\log x - a)/(b-a) ('"log"', which handles the heavy right tail of the GPV ratio) or a linear map ('"minmax"'). Densities are reported on the original scale through the Jacobian.

Usage

fpa_density(
  bids,
  n = NULL,
  method = c("wavelet_ll", "wavelet_linear", "wavelet_hard", "wavelet_block",
    "wavelet_theory", "kde_hh", "kde", "empirical_quantile", "marmer_shneyerov"),
  first_stage = "gpv_hh",
  x = NULL,
  j0 = 5L,
  h = 0.15,
  scale = c("auto", "log", "minmax", "none"),
  filter = "db3",
  dwt_filter = "coif1",
  levels = 3L,
  kernel = "triweight",
  side = c("lower", "both"),
  ...
)

Arguments

bids

pooled bids (vector) or an 'L' by 'n' matrix.

n

bidders per auction (from 'ncol(bids)' for a matrix).

method

second-stage estimator; see Description.

first_stage

'"gpv_hh"' (default), '"gpv"', an [fpa_values()] object, or the name of a [qdf()] method to use through [fpa_values()].

x

evaluation grid on the value scale. Defaults to 200 points spanning the pseudo-values (excluding the extreme 0.5 percent at each end).

j0

resolution level, or '"cv"' to choose 'j0' (and 'h') by cross-validated held-out log-likelihood ([select_fpa_density()]).

h

local-linear bandwidth for '"wavelet_ll"' (ignored if 'j0 = "cv"').

scale

'"auto"', '"log"', '"minmax"' or '"none"'.

filter, dwt_filter, levels

wavelet settings; see [qdf_wavelet()].

kernel, side

kernel and correction side for [kde_hh()] (used in the '"gpv_hh"' first stage and the '"kde_hh"' second stage).

...

for 'first_stage' given as a [qdf()] method name, further arguments to [fpa_values()]; for '"wavelet_block"', arguments to [threshold_coefficients()]; for 'j0 = "cv"', 'j0_grid', 'h_grid', 'folds', 'criterion'.

Value

An object of class '"fpa_density"': a list with 'x', 'f' (density on the value scale), 'values' (pseudo-values), 'values_u' (on the unit scale), 'map', 'method', 'j0', 'h', 'first_stage', 'n', and 'fun', a function returning the density at arbitrary values.

References

Doosti, H., Dewan, I. and Sbai, E. (2026). Adaptive wavelet estimation of private-value densities in first-price auctions. SSRN preprint. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2139/ssrn.7618223")}

Hickman, B. R. and Hubbard, T. P. (2015). *Journal of Applied Econometrics*, 30, 739–762.

Marmer, V. and Shneyerov, A. (2012). *Journal of Econometrics*, 167, 345–357.

Examples

set.seed(1)
sim <- fpa_simulate(40, 5, Q = function(u) qbeta(u, 2, 2))
fd <- fpa_density(sim$bids, method = "wavelet_ll", j0 = 5, h = 0.1)
plot(fd, true = function(v) dbeta(v, 2, 2))
# timber auctions, three bidders, log scale
data(timber)
fd3 <- fpa_density(timber$n3, method = "wavelet_ll", j0 = 4, h = 0.15)
plot(fd3)

qdfauction documentation built on Nov. 10, 2026, 5:07 p.m.