data("SimData", package = "telescope")
y <- as.matrix(SimData[, 1:30])
z <- SimData[, 31]
N <- nrow(y)
r <- ncol(y)
M <- 5
thin <- 1
burnin <- 0
Kmax <- 50
Kinit <- 10
G <- "MixDynamic"
priorOnAlpha <- priorOnAlpha_spec("gam_1_2")
priorOnK <- priorOnK_spec("Pois_1")
d0 <- 1
cat <- apply(y, 2, max)
a_mu <- rep(20, sum(cat))
mu_0 <- matrix(rep(rep(1/cat, cat), Kinit),
byrow = TRUE, nrow = Kinit)
c_phi <- 30; d_phi <- 1; b_phi <- rep(10, r)
a_phi <- rep(1, r)
phi_0 <- matrix(cat, Kinit, r, byrow = TRUE)
a_00 <- 0.05
s_mu <- 2; s_phi <- 2; eps <- 0.01
set.seed(1234)
cl_y <- kmeans(y, centers = Kinit, nstart = 100, iter.max = 50)
S_0 <- cl_y$cluster
eta_0 <- cl_y$size/N
I_0 <- rep(1L, N)
L <- 2
for (k in 1:Kinit) {
cl_size <- sum(S_0 == k)
I_0[S_0 == k] <- rep(1:L, length.out = cl_size)
}
index <- c(0, cumsum(cat))
low <- (index + 1)[-length(index)]
up <- index[-1]
pi_km <- array(NA_real_, dim = c(Kinit, L, sum(cat)))
rownames(pi_km) <- paste0("k_", 1:Kinit)
for (k in 1:Kinit) {
for (l in 1:L) {
index <- (S_0 == k) & (I_0 == l)
for (j in 1:r) {
pi_km[k, l, low[j]:up[j]] <- tabulate(y[index, j], cat[j]) / sum(index)
}
}
}
pi_0 <- pi_km
result <- sampleLCAMixture(
y, S_0, L,
pi_0, eta_0, mu_0, phi_0,
a_00, a_mu, a_phi, b_phi, c_phi, d_phi,
M, burnin, thin, Kmax,
s_mu, s_phi, eps,
G, priorOnAlpha, d0, priorOnK)
Run the code above in your browser using DataLab