Fits a BKP model to binomial or binary response data via local kernel smoothing. The model constructs a flexible latent probability surface by updating Beta priors using kernel-weighted observations.
Arguments
- X
A numeric input matrix of size \(n \times d\), where each row represents a covariate vector.
- y
A numeric vector of observed successes (length
n
).- m
A numeric vector of total binomial trials (length
n
), corresponding to eachy
.- Xbounds
Optional \(d \times 2\) matrix specifying the lower and upper bounds of each input dimension. Used to normalize inputs to \([0,1]^d\). If
Xbounds
isNULL
, the input is assumed to have already been normalized, and the default bounds are set to \([0,1]^d\).- prior
Type of prior to use. One of
"noninformative"
,"fixed"
, or"adaptive"
.- r0
Global prior precision (only used when
prior = "fixed"
or"adaptive"
).- p0
Global prior mean (only used when
prior = "fixed"
).- kernel
Kernel function for local weighting. Choose from
"gaussian"
,"matern52"
, or"matern32"
.- loss
Loss function for kernel hyperparameter tuning. One of
"brier"
(default) or"log_loss"
.- n_multi_start
Number of random initializations for multi-start optimization. Default is
10 × d
.
Value
A list of class "BKP"
containing the fitted BKP model, with
the following elements:
theta_opt
Optimized kernel hyperparameters (lengthscales).
kernel
Kernel function used, as a string.
loss
Loss function used for hyperparameter tuning.
loss_min
Minimum loss value achieved during optimization.
X
Original (unnormalized) input matrix of size
n × d
.Xnorm
Normalized input matrix scaled to \([0,1]^d\).
Xbounds
Matrix specifying normalization bounds for each input dimension.
y
Observed success counts.
m
Observed binomial trial counts.
prior
Type of prior used.
r0
Prior precision parameter.
p0
Prior mean (for fixed priors).
alpha0
Prior shape parameter \(\alpha_0(\mathbf{x})\), either a scalar or vector.
beta0
Prior shape parameter \(\beta_0(\mathbf{x})\), either a scalar or vector.
alpha_n
Posterior shape parameter \(\alpha_n(\mathbf{x})\).
beta_n
Posterior shape parameter \(\beta_n(\mathbf{x})\).
See also
fit.DKP
for modeling multinomial responses using the
Dirichlet Kernel Process. predict.BKP
,
plot.BKP
, simulate.BKP
for making predictions,
visualizing results, and generating simulations from a fitted BKP model.
summary.BKP
, print.BKP
for inspecting model
details.
Examples
#-------------------------- 1D Example ---------------------------
set.seed(123)
# Define true success probability function
true_pi_fun <- function(x) {
(1 + exp(-x^2) * cos(10 * (1 - exp(-x)) / (1 + exp(-x)))) / 2
}
n <- 30
Xbounds <- matrix(c(-2,2), nrow=1)
X <- tgp::lhs(n = n, rect = Xbounds)
true_pi <- true_pi_fun(X)
m <- sample(100, n, replace = TRUE)
y <- rbinom(n, size = m, prob = true_pi)
# Fit BKP model
model1 <- fit.BKP(X, y, m, Xbounds=Xbounds)
print(model1)
#> --------------------------------------------------
#> Beta Kernel Process (BKP) Model
#> --------------------------------------------------
#> Number of observations (n): 30
#> Input dimensionality (d): 1
#> Kernel type: gaussian
#> Loss function used: brier
#> Optimized kernel parameters: 0.0386
#> Minimum achieved loss: 0.00012
#>
#> Prior specification:
#> Noninformative prior: Beta(1,1).
#> --------------------------------------------------
#-------------------------- 2D Example ---------------------------
set.seed(123)
# Define 2D latent function and probability transformation
true_pi_fun <- function(X) {
if(is.null(nrow(X))) X <- matrix(X, nrow=1)
m <- 8.6928
s <- 2.4269
x1 <- 4*X[,1]- 2
x2 <- 4*X[,2]- 2
a <- 1 + (x1 + x2 + 1)^2 *
(19- 14*x1 + 3*x1^2- 14*x2 + 6*x1*x2 + 3*x2^2)
b <- 30 + (2*x1- 3*x2)^2 *
(18- 32*x1 + 12*x1^2 + 48*x2- 36*x1*x2 + 27*x2^2)
f <- log(a*b)
f <- (f- m)/s
return(pnorm(f)) # Transform to probability
}
n <- 100
Xbounds <- matrix(c(0, 0, 1, 1), nrow = 2)
X <- tgp::lhs(n = n, rect = Xbounds)
true_pi <- true_pi_fun(X)
m <- sample(100, n, replace = TRUE)
y <- rbinom(n, size = m, prob = true_pi)
# Fit BKP model
model2 <- fit.BKP(X, y, m, Xbounds=Xbounds)
print(model2)
#> --------------------------------------------------
#> Beta Kernel Process (BKP) Model
#> --------------------------------------------------
#> Number of observations (n): 100
#> Input dimensionality (d): 2
#> Kernel type: gaussian
#> Loss function used: brier
#> Optimized kernel parameters: 0.1112, 0.0680
#> Minimum achieved loss: 0.00020
#>
#> Prior specification:
#> Noninformative prior: Beta(1,1).
#> --------------------------------------------------