Description Usage Arguments Value Examples
Applies the Zig-Zag Sampler to logistic regression, as detailed in Bierkens, Fearnhead, Roberts, The Zig-Zag Process and Super-Efficient Sampling for Bayesian Analysis of Big Data, 2019.
1 2 | ZigZagLogistic(dataX, dataY, n_iter = -1L, finalTime = -1,
x0 = numeric(0), v0 = numeric(0), cv = FALSE)
|
dataX |
Design matrix containing observations of the independent variables x. The i-th row represents the i-th observation with components x_i,1, ..., x_i,d. |
dataY |
Vector of length n containing 0, 1-valued observations of the dependent variable y. |
n_iter |
Number of algorithm iterations; will result in the equivalent amount of skeleton points in Gaussian case because no rejections are needed. |
finalTime |
If provided and nonnegative, run the sampler until a trajectory of continuous time length finalTime is obtained (ignoring the value of |
x0 |
starting point (optional, if not specified taken to be the origin) |
v0 |
starting direction (optional, if not specified taken to be +1 in every component) |
cv |
optional boolean to indicate the use of subsampling with control variates |
Returns a list with the following objects:
Times: Vector of switching times
Positions: Matrix whose columns are locations of switches. The number of columns is identical to the length of skeletonTimes. Be aware that the skeleton points themselves are NOT samples from the target distribution.
Velocities: Matrix whose columns are velocities just after switches. The number of columns is identical to the length of skeletonTimes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | require("RZigZag")
generate.logistic.data <- function(beta, n.obs) {
dim <- length(beta)
dataX <- cbind(rep(1.0,n.obs), matrix(rnorm((dim -1) * n.obs), ncol = dim -1));
vals <- dataX %*% as.vector(beta)
generateY <- function(p) { rbinom(1, 1, p)}
dataY <- sapply(1/(1 + exp(-vals)), generateY)
return(list(dataX = dataX, dataY = dataY))
}
beta <- c(1,2)
data <- generate.logistic.data(beta, 1000)
result <- ZigZagLogistic(data$dataX, data$dataY, 1000)
plot(result$Positions[1,], result$Positions[2,],type='l',asp=1)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.