Nothing
library("mvtnorm")
set.seed(29)
chk <- function(...) stopifnot(isTRUE(all.equal(..., check.attributes = FALSE)))
### N samples with N different covariance matrices
thischeck <- expression({
N <- 10
J <- 5
lt <- ltMatrices(matrix(runif(N * J * (J + c(-1, 1)[dg + 1L]) / 2) + 1, ncol = N),
diag = dg)
lt <- ltMatrices(lt, diag = dg, byrow = br)
Z <- matrix(rnorm(N * J), ncol = N)
Y <- solve(lt, Z)
ll1 <- sum(dnorm(Mult(lt, Y), log = TRUE)) + sum(log(diagonals(lt)))
S <- as.array(Tcrossprod(solve(lt)))
ll2 <- sum(l2 <- sapply(1:N, function(i) mvtnorm:::dmvnorm(x = Y[,i], sigma = S[,,i], log = TRUE)))
chk(ll1, ll2)
l3 <- ldmvnorm(obs = Y, invchol = lt, logLik = FALSE)
l4 <- ldmvnorm(obs = Y, chol = solve(lt), logLik = FALSE)
chk(l2, l3)
chk(l2, l4)
ll1 <- sum(dnorm(Mult(lt[1,], Y), log = TRUE)) + N * sum(log(diagonals(lt[1,])))
S <- as.array(Tcrossprod(solve(lt)))
ll2 <- sum(l2 <- sapply(1:N, function(i) mvtnorm:::dmvnorm(x = Y[,i], sigma = S[,,1], log = TRUE)))
chk(ll1, ll2)
l3 <- ldmvnorm(obs = Y, invchol = lt[1,], logLik = FALSE)
l4 <- ldmvnorm(obs = Y, chol = solve(lt[1,]), logLik = FALSE)
chk(l2, l3)
chk(l2, l4)
### check scores
if (require("numDeriv", quietly = TRUE)) {
f <- function(L) {
L <- ltMatrices(L, diag = dg, byrow = br)
ldmvnorm(obs = Y, invchol = L)
}
s0 <- grad(f, unclass(lt))
s1 <- sldmvnorm(obs = Y, invchol = lt)
chk(Lower_tri(ltMatrices(matrix(s0, ncol = N), diag = dg, byrow = br), diag = dg),
Lower_tri(s1$invchol, diag = dg))
f <- function(L) {
L <- ltMatrices(L, diag = dg, byrow = br)
ldmvnorm(obs = Y, chol = L)
}
s0 <- grad(f, unclass(lt))
s1 <- sldmvnorm(obs = Y, chol = lt)
chk(Lower_tri(ltMatrices(matrix(s0, ncol = N), diag = dg, byrow = br), diag = dg),
Lower_tri(s1$chol, diag = dg))
f <- function(x)
ldmvnorm(obs = x, invchol = lt)
s0 <- grad(f, Y)
s1 <- sldmvnorm(obs = Y, invchol = lt)
chk(matrix(s0, ncol = N), s1$obs)
}
})
dg <- TRUE
br <- FALSE
eval(thischeck)
dg <- FALSE
br <- FALSE
eval(thischeck)
dg <- FALSE
br <- TRUE
eval(thischeck)
dg <- FALSE
br <- FALSE
eval(thischeck)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.