rcm_get_nu: Estimate degrees of freedom

Description Usage Arguments Value Note Author(s) Examples

View source: R/RCM.R

Description

Functions for estimating the degrees of freedom ν in the random covariance model (RCM).

Usage

1
2
3
4
5
6
7
8
9
rcm_get_nu(Psi, S_list, ns)

rcm_get_nu_optimize(Psi, S_list, ns)

rcm_get_nu_optim(Psi, S_list, ns, ...)

rcm_get_nu_nlm(Psi, S_list, ns, ...)

rcm_get_nu_optimize2(Psi, S_list, ns)

Arguments

Psi

A numeric matrix of size p times p giving the initial estimate of Ψ.

S_list

A list of scatter matrices.

ns

Vector of group sizes.

...

arguments passed to the optimizer.

Value

A list giving the ν optimizing the RCM likelihood with fixed Ψ and other stuff.

Note

rcm_get_nu is a wrapper for rcm_get_nu_optimize.

rcm_get_nu_optimize optimizes via optimize and the Brent-type optimization.

rcm_get_nu_optim optimizes via optim and the L-BFGS-B method.

rcm_get_nu_nlm optimizes via nlm.

rcm_get_nu_optim2 optimizes via optimize and the Brent-type method. A faster implementation. Avoids many repeated evaluations.

Author(s)

Anders Ellern Bilgrau

Examples

 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
p <- 3
Psi <- diag(p)
ns <- c(5, 5, 5)
true.nu <- 7
nus <- seq(p - 1 + sqrt(.Machine$double.eps), 40, l = 1000)
S_list <- createRCMData(ns = ns, psi = Psi, nu = true.nu)
eval.ll <- c()
for (i in seq_along(nus)) {
  eval.ll[i] <- correlateR:::rcm_loglik_arma(Psi, nus[i], S_list, ns)
}
plot(nus, eval.ll, type = "l")
abline(v = true.nu, col = "red", lwd = 2)

# Get nu
print(ans <- correlateR:::rcm_get_nu_optimize(Psi, S_list, ns))
print(ans2 <- correlateR:::rcm_get_nu_optim(Psi, S_list, ns))
print(ans3 <- correlateR:::rcm_get_nu_nlm(Psi, S_list, ns))
print(ans4 <- correlateR:::rcm_get_nu_optimize2(Psi, S_list, ns))

abline(v = ans$maximum, col = "orange", lwd = 2, lty = 2)
abline(v = ans2$par, col = "blue", lwd = 2, lty = 3)
abline(v = ans3$estimate, col = "brown", lwd = 2, lty = 4)
abline(v = ans4$maximum, col = "purple", lwd = 2, lty = 4)
 
## Not run: 
library("microbenchmark")
microbenchmark(correlateR:::rcm_get_nu_optimize2(Psi, S_list, ns),
               correlateR:::rcm_get_nu_optimize(Psi, S_list, ns),
               correlateR:::rcm_get_nu_optim(Psi, S_list, ns),
               correlateR:::rcm_get_nu_nlm(Psi, S_list, ns))

## End(Not run)

AEBilgrau/correlateR documentation built on Nov. 15, 2019, 9:21 a.m.