-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJackknife.R
36 lines (32 loc) · 1.01 KB
/
Jackknife.R
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
Jackknife <- function(Y, R, C, E, q){
n <- nrow(Y)
p <- ncol(Y)
pb <- txtProgressBar(min = 0, max = n, style = 3)
R <- scale(R)
C <- scale(C)
E <- scale(E)
X <- covmat(n = n, p = p, R = R, C = C, E = as.matrix(MatrixToVector(E)))
X <- cbind(rep(1, nrow(X)), X)
params <- Init_ZIP(Y = Y,
X = X,
q = q)
params$S <- params$S[-1,]
params$M <- params$M[-1,]
res <- vector("list", n)
for (i in 1:n){
setTxtProgressBar(pb, i)
Y_JK <- Y[-i,]
R_JK <- R[-i,]
E_JK <- E[-i,]
X_JK <- covmat(n = n-1, p = p, R = R_JK, C = C, E = as.matrix(MatrixToVector(E_JK)))
X_JK <- cbind(rep(1, nrow(X_JK)), X_JK)
fit <- Miss.ZIPLNPCA(Y_JK, X_JK, q, params = params)
params <- list(B = as.matrix(fit$mStep$beta),
D = as.matrix(fit$mStep$gamma),
C = as.matrix(fit$mStep$C),
M = as.matrix(fit$eStep$M),
S = as.matrix(fit$eStep$S))
res[[i]] <- fit
}
return(res)
}