The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
proc_values(), proc_cost(),
proc_optimal_ceiling(), proc_cost_boot(),
proc_simulate() and proc_M(). Bids are
reflected, b' = M - b, every existing estimator, selector,
monotonisation, risk-aversion and copula adjustment applies unchanged to
the reflected sample, and results are mapped back (costs
c = M - v', ranks u = 1 - u'). Expected
procurement cost with a price ceiling r and buyer outside
option v0 is M - R'(M - r; M - v0), evaluated
with the quantile-density functionals.proc_M() sets the reflection constant just above the
largest bid, so the reflected sample starts near zero where the
Q_n(0) = 0 anchor of the series estimators holds."independence", "frank" (radially symmetric,
so unchanged by reflection) and "nonparametric" (rank
based, hence also unaffected). "clayton" and
"gumbel" are refused with an explanatory error: reflection
maps them to their 180-degree rotated (survival) copulas, which are not
yet implemented.proc_values() defaults to
monotone = "isotonic", because the natural-spline
replacement extrapolates into the lower bid tail, which in procurement
is the winners’ tail. The default of fpa_values() is
unchanged.fpa_revenue_boot(), fpa_density_boot() and
proc_cost_boot() gain resample = "blocks", a
circular moving-block bootstrap over consecutive auctions, with block
length L = "auto" or an integer. Whole auctions are still
resampled together, so any within-auction copula structure is kept,
while dependence across auctions is retained as well. The bandwidth is
selected once on the full sample and held fixed in every refit, as for
the existing schemes. Rows must be in time order, which the package
cannot check, so this is never the default.block_length_auto() returns
ceiling(2 * L_pw), with L_pw the Politis-White
block length of the per-auction winning bid (winner = "max"
for sales, "min" for procurement), capped at half the
number of auctions. It warns when the number of auctions divided by
L_pw falls below 15: the sample is then short relative to
its dependence range and the interval is a lower bound on the sampling
uncertainty. Requires the suggested package np.resample_blocks(), fpa_block_boot(),
fpa_revenue_boot_blocks() and
fpa_quantile_boot_blocks() expose the scheme for any
statistic of an fpa_values() fit.qdf() gains zero_at_origin for the
Bernstein estimator, previously reachable only by calling
qdf_bernstein() directly. The default TRUE
reproduces earlier versions; FALSE anchors at the smallest
observation instead, which is preferable when the data do not start near
zero. The exact O(nK) leave-one-out path is used for either
setting.proc_check_winning_bid() compares the model’s expected
winning bid with the sample mean of the auction minima: under the
correct dependence specification the two agree up to sampling error, so
a gap is a specification check.bid_icc() gives the between-group share of residual bid
variance. Grouped by auction it measures within-auction dependence;
grouped by firm it measures a permanent firm effect.fpa_values() documents that
zero_at_origin, grid and the other arguments
of qdf() can be passed through ..., and
records the exact combination that reproduces the published revenue
estimator. A new test checks that reproduction on the
timber data.inst/CITATION.copula_psi(), copula_delta() and
copula_delta_prime() now use the independence formulas when
the fitted dependence is numerically negligible (Kendall’s tau at or
below 0.01). Near those limits the Frank and Clayton generators are
ill-conditioned, and the reserve-price integrals built on them lost
accuracy well before the multiplier itself did: with
family = "frank" and five independent bidders the optimal
reserve or ceiling was biased by about +0.2 while the pseudo-values were
unaffected.fpa_revenue() accepts a vector v_s of the
same length as r; previously this failed.resample_blocks() accepts a double number of auctions;
previously it failed unless the count was an integer.fpa_revenue_boot() and
fpa_density_boot() state that resampling auctions or bids
independently understates uncertainty when the auctions have a time
order and the same bidders recur, and point to
resample = "blocks".?fpa_revenue notes that its plug-in form rebuilds
winners’ bids from the pseudo-value distribution and assumes values
independent within an auction; for procurement data, or dependent
values, fpa_revenue_qd() is the right functional. The error
for a pooled vector now also points to proc_values() and
proc_cost().This release combines the changes made for the revisions of Doosti (2026b, 2026c) with fixes from the wavelet branch.
copula_psi(),
copula_delta(), copula_delta_prime()) are
evaluated without the catastrophic cancellation in
1 + a^n / D^(n-1) at large theta (Kendall’s
tau above about 0.8); previously psi was exactly 0 near
u = 1 at tau = 0.9.fpa_revenue_qd() and fpa_optimal_reserve_qd()
is accumulated from the top; the previous forward difference lost
precision for Clayton at theta >= 2 (up to 0.05 in
revenue at the 90th reserve percentile for tau = 0.75).fpa_optimal_reserve_model() searches from
p_lo = 1e-4 (was 0.02), so interior optima close to the
lower support are no longer reported as corners.select_bandwidth() and qdf() use exact
leave-one-out by default for every selector, including
"wbcv". The scaling approximation q (n-1)/n,
invalid for estimators built from order statistics, is used only with
loo = FALSE.bcv_criterion(), rlcv_criterion() and
wbcv_criterion() can be called directly with their default
u_scheme (previously an error), and
wbcv_criterion() now uses exact leave-one-out by default
(loo = TRUE), as select_bandwidth() does.qdf() with a wavelet method and no
bandwidth argument now uses cross-validation
(bandwidth = "cv") instead of failing.print() method of fpa_values() no
longer shows theta = NULL for the nonparametric copula
multiplier.timber dataset now states that
the bids are homogenised, not raw: within each stratum the log bids were
regressed on the log appraised per-unit value and the log timber volume
and rescaled to the average lot (R-squared 0.671 for n = 2 and 0.554 for
n = 3). The data are unchanged.data-raw/timber.R now rebuilds the dataset from the
Journal of Applied Econometrics Data Archive files of Lu and Perrigne
(2008) (doi:10.15456/jae.2022319.0720356598), applying that regression,
instead of storing the bids as literal values.fpa_virtual_value() and
fpa_virtual_value_model(): the affiliated virtual value
omega(u) = Q(u) - q(u) H(u).fpa_corner_test() (with a print() method):
a crossing test for whether any binding reserve price is optimal (Doosti
2026c). The decision is the point rule on the full sample, `min over u
in [0.10, 0.98] of omega_hat(u)
; a bootstrap over auctions gives the frequency of that decision. The copulafamily`
is a required argument, because the result depends on it.qdf(bandwidth = "sqrt") (and fpa_values(),
the revenue functions and fpa_revenue_boot() through it):
the deterministic rule m = ceiling(sqrt(N)) for the
Bernstein estimator, used in Doosti (2026b). It lies inside the range
covered by that paper’s asymptotic theory.qdf_bernstein() gains zero_at_origin;
qdf_bernstein_loo() computes exact leave-one-out Bernstein
estimates by an index shift in O(nK) and is used automatically by the
cross-validation criteria.select_bandwidth(grid = "exhaustive") returns the
global minimiser over all integer m in m_range
(not the default).fpa_montecarlo() gains p0 and
eta, passed to the simulator.fpa_revenue_qd(),
fpa_optimal_reserve_qd(), fpa_virtual_value()
and fpa_corner_test(): if the data-driven bandwidth for the
pseudo-values is minimised at an end of m_range, the
quantile density is refitted with the published range
m_range = c(10, 50) and stats::optimize()
(Doosti 2026c), with a warning; if that fit is also at an end, the
function stops and asks for a numeric bandwidth.select_bandwidth() and
qdf() accept only grid = "exhaustive" or a
non-negative integer (a mistyped value used to fall back silently to
optimize()); qdf_bernstein_loo() checks that
u has one increasing value per observation, that the data
are positive and that floor(1/h) >= 2.qdf() lists all ten estimators and gives
the correct pages for Parzen (1979); the default grid of
fpa_density_ci() is described correctly;
qdf_wavelet_nl() explains when post-smoothing helps.inst/benchmarks/scaling.R also times the functions for
affiliated values, the specification test and the density
bootstrap.fpa_revenue_boot() resamples whole auctions by default
(resample = "auctions"; previously "bids").
The revenue estimator uses the highest pseudo-value in each auction, and
resampling pooled bids breaks that structure: in the design of Zincenko
(2024), with the Bernstein estimator and
m = ceiling(sqrt(N)), pooled resampling gave pointwise
coverage of about 0.65-0.80 at nominal 0.90, against 0.85-0.89 with
auction resampling. "bids" is kept for comparison.
fpa_corner_test() already resamples auctions;
fpa_density_boot() keeps "bids", because the
density estimators do not use the auction structure.bandwidth = "wbcv",
select_bandwidth(selector = "wbcv") and
wbcv_criterion() are kept only for backward compatibility,
are not recommended, and now warn. The two terms of the WBCV criterion
have different units, so the selected bandwidth depends on the units of
the data, and on data of order one or larger the criterion tends to
select the smoothest fit in m_range. The criterion is being
revised (Doosti 2026b); it is kept so that existing code runs. Examples,
the README and the vignette now use BCV.select_bandwidth() and qdf() keep
stats::optimize() over m_range as the default
search for every selector, as in the published simulations;
grid = "exhaustive" (every integer m in
m_range, the global minimiser) is available as an option. A
user-supplied optimizer takes precedence over the
exhaustive search."wbcv" in
select_bandwidth() and qdf() (previously the
scaling approximation); see Bug fixes.fpa_revenue_boot() and the bootstrap of
fpa_corner_test() select the bandwidth once, on the full
sample, and hold it fixed in every bootstrap replication, as the theory
assumes (Doosti 2026b, Theorems 6-7); previously the bandwidth was
re-selected in each replicate. Results with a data-driven
bandwidth change; results with a numeric
bandwidth do not. The selected m and whether
it lies at a boundary are returned and printed.select_bandwidth() detects boundary solutions for every
selector and search method: if the minimiser lies at either end of
m_range, it warns and returns
at_boundary = TRUE (and boundary = "lower" or
"upper"), and print() of a qdf()
fit reports it. A boundary minimum means that the criterion did not
select a bandwidth in that range.First CRAN release.
qdf()).fpa_values()), with GPV, boundary-corrected and Zincenko
kernel benchmarks and monotonicity options.fpa_density()), tuned by interior least-squares or
log-likelihood cross-validation
(select_fpa_density()).fpa_density_ci()).fpa_revenue(), fpa_optimal_reserve(),
fpa_revenue_boot()), exact equilibrium bids and simulation
(fpa_bid_function(), fpa_simulate()), Monte
Carlo and evaluation tools (fpa_montecarlo(),
fpa_evaluate_values(),
fpa_evaluate_density()).make_kernel(),
with check_kernel() reporting mass, symmetry, order and
roughness; a user-supplied optimiser for bandwidth selection
(optimizer in select_bandwidth() and
qdf()).inst/benchmarks/scaling.R times the main functions as
the sample grows.timber) and a vignette.fpa_revenue_qd(), fpa_optimal_reserve_qd();
Doosti 2026c).qdf_wavelet_nl()), on a periodised orthonormal basis
(phi_per(), psi_per(),
psi_jk()).fpa_density(method = "wavelet_theory")).copula_psi_np(),
fpa_values(family = "nonparametric")) and a bootstrap
specification test for parametric copulas
(copula_spec_test()) (Doosti 2026a). The semiparametric
estimator of Hubbard, Li and Paarsch (2012) is documented as
fpa_values(method = "gpv", family = ...).fpa_density_boot()).qdf() is now scale-equivariant for every estimator: it
estimates on x / sd(x) and rescales
(rescale = TRUE). This matters for the indirect Poisson,
Jones and Soni estimators, whose smoothing parameter lives on the data
scale; rescale = FALSE reproduces the earlier behaviour.
The default evaluation grid is now i/(n+1).select_wavelet() (and
qdf(..., bandwidth = "cv") for the wavelet estimators) uses
least-squares cross-validation by default
(criterion = "lscv") and skips bandwidths below the lattice
spacing; cross-validation arguments are no longer passed on to the
estimator.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.