Description Usage Arguments Value Examples
View source: R/xwfGridsearch.R
Adaptive grid search to optimize the weighting functions in the extrema-weighted features.
1 2 3 4 |
y |
Vector with binary outcomes data |
xx |
List of functions for which to compute the XWFs |
t |
Matrix containing the times at which the functions xx were measured: Element (i,j) contains the time of the j-th measurement of the i-th function. |
n.i |
Vector containing the number of measurements for each function. The first n.i[i] elements of the i-th row of t should not be NA. |
psi.list |
List of predefined local features which are functions of a function (first argument) and a measurement time (second argument) |
F |
CDF of the values of the functions xx. Ignored if weighting function w is not the default. |
z |
Optional matrix with covariates to be included as linear predictors in the generalized additive model |
iter |
Number of levels in the adaptive grid search. The resolution in b obtained is 2^-1-iter. |
w |
Weighting function. The default is the one used in the original paper. See the default for what the roles of its 3 arguments are. |
rel.shift |
Optional relative reduction of the integration range to avoid instabilities at the end of the integration ranges. Set to 0 if no such correction is desired. |
progressbar |
Boolean specifying whether a progress bar indicating what level of the adaptive grid has been completed should be displayed. |
List containing the final XWFs (wL and wR), the parameters for the optimal weighting functions (b.left and b.right), and the gmcv::gamObject corresponding to the final optimal generalized additive model fit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | # Data simulation similar to Section 3.2 of the paper
# Sample size
n <- 100
# Length of trajectories
n.i <- rep(5, n)
max.n.i <- max(n.i)
# Times
t <- matrix(NA_integer_, nrow = n, ncol = max.n.i)
for(i in 1:n) t[i, 1:n.i[i]] <- 1:n.i[i]
# Sample periods
phi <- runif(n = n, min = 1, max = 10)
# Sample offsets
m <- 10*runif(n = n)
# Blood pressure measurements
x <- t
for(i in 1:n) x[i, 1:n.i[i]] <- sin(phi[i] * 2*pi/max.n.i * t[i, 1:n.i[i]]) + m[i]
# Matrix with covariates z
q <- 2 # Number of covariates
z <- matrix(rnorm(n = n*q), nrow = n, ncol = q)
# Generate outcomes
temp <- phi*min(m, 7)
temp <- 40*temp
prob <- 1/(1+exp( 2*( median(temp)-temp ) ))
y <- rbinom(n = n, size = 1, prob = prob)
xx <- list()
for(i in 1:n) xx[[i]] <- approxfun(x = t[i,1:n.i[i]], y = x[i,1:n.i[i]], rule = 2)
# Estimate f
weights <- matrix(1/n.i, ncol = max.n.i, nrow = n)[!is.na(t)]
f <- density(
x = t(sapply(X = 1:n, FUN = function(i) c(xx[[i]](t[i,1:n.i[i]]), rep(NA, max.n.i-n.i[i])))),
weights = weights/sum(weights),
na.rm = T
)
# Define CDF of f, F
CDF <- c(0)
for(i in 2:length(f$x)) CDF[i] <- CDF[i-1]+(f$x[i]-f$x[i-1])*(f$y[i]+f$y[i-1])/2
F <- approxfun(x = f$x, y = CDF/max(CDF), yleft = 0, yright = 1)
psi <- list(
function(x, t) abs(x(t)-x(t-1))
)
XWFresult <- xwfGridsearch(y = y, xx = xx, t = t, n.i = n.i, psi.list = psi, F = F, z = z)
summary(XWFresult$GAMobject)
XWFresult$b.left
XWFresult$b.right
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.