fit.BKP {BKP}R Documentation

Fit a Beta Kernel Process (BKP) Model

Description

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.

Usage

fit.BKP(
  X,
  y,
  m,
  Xbounds = NULL,
  prior = c("noninformative", "fixed", "adaptive"),
  r0 = 2,
  p0 = 0.5,
  kernel = c("gaussian", "matern52", "matern32"),
  loss = c("brier", "log_loss"),
  n_multi_start = NULL
)

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 each y.

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 is NULL, 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)


#-------------------------- 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)


[Package BKP version 0.1.0 Index]