Last updated: 2018-01-04

Code version: 09f5c3d

OCV_index=function(Y,k_fold = 5){
  N = dim(Y)[1]
  P = dim(Y)[2]
  colindex = matrix(sample(P,P),ncol = k_fold)
  rowindex = matrix(sample(N,N),ncol = k_fold)

  foldindex = array(0,dim = c(k_fold,k_fold,2))
  for(i in 1:k_fold){
    for(j in 1:k_fold){
      foldindex[i,j,1] = i
      foldindex[i,j,2] = (i+j) %% k_fold
    }
  }
  foldindex[which(foldindex == 0)] = k_fold

  return(list(foldindex = foldindex, rowindex = rowindex, colindex = colindex))
}
# OCVindex = OCV_index(Y,k_fold = 5)

OCV_data = function(Y,OCVindex,k_fold = 5){
  N = dim(Y)[1]
  P = dim(Y)[2]
  colindex = OCVindex$colindex
  rowindex = OCVindex$rowindex
  foldindex = OCVindex$foldindex
  missing= array(0,dim = c(k_fold,N,P))
  for(i in 1:k_fold){
    missing[i, , ] = Y
    for(j in 1:k_fold){
      missing[i,rowindex[,foldindex[j,i,1]],colindex[,foldindex[j,i,2]]] = NA
    }
  }
  return(missing)
}
# OCVdata = OCV_data(Y,OCVindex,k_fold = 5)


OCV_SSE = function(Y,OCVindex,OCVdata,k_fold = 5,method = "flash",Kmax = 50){
  colindex = OCVindex$colindex
  rowindex = OCVindex$rowindex
  foldindex = OCVindex$foldindex
  missing = OCVdata
  SSE = rep(0,k_fold)
  for(i in 1:k_fold){
    miss_hat = call_method(missing[i,,], method = method, Kmax = Kmax)
    for(j in 1:k_fold){
      SSE[i] = SSE[i] + sum((Y[rowindex[,foldindex[j,i,1]],colindex[,foldindex[j,i,2]]] -
                               miss_hat[rowindex[,foldindex[j,i,1]],colindex[,foldindex[j,i,2]]])^2)
    }
  }
  RMSE = sqrt(sum(SSE)/(dim(Y)[1] * dim(Y)[2]))
  return(RMSE)
}

call_method = function(Y_data,method,Kmax = 50){
  if(method == "ebnm_pn"){
    data = flashr2::flash_set_data(Y_data)
    f_greedy = flashr2::flash_add_greedy(data,Kmax=Kmax,ebnm_fn = ebnm_pn,verbose = F)
    Y_hat = f_greedy$EL %*% t(f_greedy$EF)
  }else if(method == "ebnm_ash"){
    data = flashr2::flash_set_data(Y_data)
    f_greedy = flashr2::flash_add_greedy(data,Kmax=Kmax,ebnm_fn = ebnm_ash,verbose = F)
    Y_hat = f_greedy$EL %*% t(f_greedy$EF)
  }else{
    stop("the method is not implemented yet, please check it out")
  }
  return(Y_hat)
}

denoise tumor data example in our paper

set.seed(99)
library(denoiseR)
data(tumors)

Y = tumors[, -ncol(tumors)]
Y = as.matrix(Y)
N = dim(Y)[1]
P = dim(Y)[2]

OCVindex = OCV_index(Y,k_fold = 5)
Warning in matrix(sample(P, P), ncol = k_fold): data length [356] is not a
sub-multiple or multiple of the number of rows [72]
Warning in matrix(sample(N, N), ncol = k_fold): data length [43] is not a
sub-multiple or multiple of the number of rows [9]
OCVdata = OCV_data(Y,OCVindex,k_fold = 5)
f_pn = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 5,method = "ebnm_pn",Kmax = 20)
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
# flashG_rmse = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 5,method = "flash",Kmax = 50)
f_ash = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 5,method = "ebnm_ash",Kmax = 20)
fitting factor/loading 1
Warning in REBayes::KWDual(A, rep(1, k), normalize(w), control = control): estimated mixing distribution has some negative values:
               consider reducing rtol
Warning in mixIP(matrix_lik = structure(c(4.97635434328429e-137,
1.70948435290957e-121, : Optimization step yields mixture weights that are
either too small, or negative; weights have been corrected and renormalized
after the optimization.
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 1
Warning in REBayes::KWDual(A, rep(1, k), normalize(w), control = control): estimated mixing distribution has some negative values:
               consider reducing rtol
Warning in mixIP(matrix_lik = structure(c(1.04399379175721e-127,
2.07275611114578e-148, : Optimization step yields mixture weights that are
either too small, or negative; weights have been corrected and renormalized
after the optimization.
Warning in REBayes::KWDual(A, rep(1, k), normalize(w), control = control): estimated mixing distribution has some negative values:
               consider reducing rtol
Warning in mixIP(matrix_lik = structure(c(1.11428383481036e-135,
1.59200429543298e-185, : Optimization step yields mixture weights that are
either too small, or negative; weights have been corrected and renormalized
after the optimization.
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 1
Warning in REBayes::KWDual(A, rep(1, k), normalize(w), control = control): estimated mixing distribution has some negative values:
               consider reducing rtol
Warning in mixIP(matrix_lik = structure(c(1.6959492596122e-141,
5.15430970830144e-137, : Optimization step yields mixture weights that are
either too small, or negative; weights have been corrected and renormalized
after the optimization.
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 1
Warning in REBayes::KWDual(A, rep(1, k), normalize(w), control = control): estimated mixing distribution has some negative values:
               consider reducing rtol
Warning in mixIP(matrix_lik = structure(c(1.28880789963641e-143,
1.40058355210077e-144, : Optimization step yields mixture weights that are
either too small, or negative; weights have been corrected and renormalized
after the optimization.
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 7
fitting factor/loading 8
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 9
fitting factor/loading 1
Warning in REBayes::KWDual(A, rep(1, k), normalize(w), control = control): estimated mixing distribution has some negative values:
               consider reducing rtol
Warning in mixIP(matrix_lik = structure(c(3.7327648797833e-164,
9.03510800611549e-133, : Optimization step yields mixture weights that are
either too small, or negative; weights have been corrected and renormalized
after the optimization.
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8

Check the RMSE for the missing value

c(f_ash,f_pn)
[1] 0.7565503 0.7588753

Breast cancer data example in our paper

set.seed(99)
library(R.matlab)
## run the code
Y_centered = readMat("../../ash-sfa/Rcode/postmean/flash_simulation/missingvalue/Breastcancer/example.mat")
Y = Y_centered$Y
# in the matlab package of NSF, the use the centered data by rows
N = dim(Y)[1]
P = dim(Y)[2]
Y = Y - rowMeans(Y) %*% t(rep(1,P))
OCVindex = OCV_index(Y,k_fold = 5)
Warning in matrix(sample(P, P), ncol = k_fold): data length [251] is not a
sub-multiple or multiple of the number of rows [51]
Warning in matrix(sample(N, N), ncol = k_fold): data length [226] is not a
sub-multiple or multiple of the number of rows [46]
OCVdata = OCV_data(Y,OCVindex,k_fold = 5)
f_pn = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 5,method = "ebnm_pn",Kmax = 50)
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
fitting factor/loading 14
fitting factor/loading 15
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 16
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 17
fitting factor/loading 18
fitting factor/loading 19
fitting factor/loading 20
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 21
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 22
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
fitting factor/loading 27
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 14
fitting factor/loading 15
fitting factor/loading 16
fitting factor/loading 17
fitting factor/loading 18
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 22
fitting factor/loading 23
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
fitting factor/loading 27
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 28
fitting factor/loading 29
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 30
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
fitting factor/loading 14
fitting factor/loading 15
fitting factor/loading 16
fitting factor/loading 17
fitting factor/loading 18
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 22
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
fitting factor/loading 27
fitting factor/loading 28
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 29
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 30
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
fitting factor/loading 14
fitting factor/loading 15
fitting factor/loading 16
fitting factor/loading 17
fitting factor/loading 18
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 22
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
fitting factor/loading 27
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 28
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 29
fitting factor/loading 30
fitting factor/loading 31
fitting factor/loading 32
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
fitting factor/loading 14
fitting factor/loading 15
fitting factor/loading 16
fitting factor/loading 17
fitting factor/loading 18
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
fitting factor/loading 22
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 23
fitting factor/loading 24
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 25
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 26
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 27
fitting factor/loading 28
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 29
# flashG_rmse = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 5,method = "flash",Kmax = 50)
f_ash = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 5,method = "ebnm_ash",Kmax = 50)
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
fitting factor/loading 14
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 15
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 16
fitting factor/loading 17
fitting factor/loading 18
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
fitting factor/loading 22
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 27
fitting factor/loading 28
fitting factor/loading 29
fitting factor/loading 30
fitting factor/loading 31
fitting factor/loading 32
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 14
fitting factor/loading 15
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 16
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 17
fitting factor/loading 18
fitting factor/loading 19
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 20
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 21
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 22
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 27
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 28
fitting factor/loading 29
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 13
fitting factor/loading 14
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 15
fitting factor/loading 16
fitting factor/loading 17
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 18
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
fitting factor/loading 22
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
fitting factor/loading 27
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
fitting factor/loading 14
fitting factor/loading 15
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 16
fitting factor/loading 17
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 18
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
fitting factor/loading 22
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
fitting factor/loading 26
fitting factor/loading 27
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 28
fitting factor/loading 29
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 1
fitting factor/loading 2
fitting factor/loading 3
fitting factor/loading 4
fitting factor/loading 5
fitting factor/loading 6
fitting factor/loading 7
fitting factor/loading 8
fitting factor/loading 9
fitting factor/loading 10
fitting factor/loading 11
fitting factor/loading 12
fitting factor/loading 13
fitting factor/loading 14
fitting factor/loading 15
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 16
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 17
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 18
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 19
fitting factor/loading 20
fitting factor/loading 21
fitting factor/loading 22
fitting factor/loading 23
fitting factor/loading 24
fitting factor/loading 25
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations
fitting factor/loading 26
fitting factor/loading 27
fitting factor/loading 28
Warning in simpute.als(x, J, thresh, lambda, maxit, trace.it, warm.start, :
Convergence not achieved by 100 iterations

Check the RMSE for the missing value

c(f_ash,f_pn)
[1] 0.5185763 0.5188361

MovieLens data

set.seed(11)
library(Matrix)
ml100K_data = readRDS("../../ash-sfa/Rcode/postmean/flash_simulation/missingvalue/ML100K/biscale_data.rds")
MLMatrix <- sparseMatrix(i = ml100K_data[,1],
                         j = ml100K_data[,2],
                         x = ml100K_data[,3],dims = c(943,1682))
# turn this sparse matrix into matrix in r
Y = as.matrix(MLMatrix)
Y[which(Y == 0)] = NA
OCVindex = OCV_index(Y,k_fold = 10)
OCVdata = OCV_data(Y,OCVindex,k_fold = 10)
f_pn = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 10,method = "ebnm_pn",Kmax = 10)
# flashG_rmse = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 5,method = "flash",Kmax = 50)
f_ash = OCV_SSE(Y,OCVindex,OCVdata,k_fold = 10,method = "ebnm_ash",Kmax = 10)

Session information

sessionInfo()
R version 3.3.0 (2016-05-03)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.13.2 (unknown)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] denoiseR_1.0    Matrix_1.2-11   R.matlab_3.6.1  cowplot_0.8.0  
 [5] ggplot2_2.2.1   flashr2_0.3-3   ashr_2.2-3      ebnm_0.1-7     
 [9] MASS_7.3-47     workflowr_0.4.0 rmarkdown_1.6  

loaded via a namespace (and not attached):
 [1] softImpute_1.4       PMA_1.0.9            lattice_0.20-35     
 [4] Rmosek_7.1.2         colorspace_1.3-2     htmltools_0.3.6     
 [7] yaml_2.1.14          rlang_0.1.2          R.oo_1.21.0         
[10] withr_2.0.0          R.utils_2.5.0        REBayes_0.85        
[13] foreach_1.4.4        plyr_1.8.4           stringr_1.2.0       
[16] munsell_0.4.3        gtable_0.2.0         R.methodsS3_1.7.1   
[19] devtools_1.13.3      codetools_0.2-15     leaps_3.0           
[22] memoise_1.1.0        evaluate_0.10.1      knitr_1.17          
[25] pscl_1.5.2           doParallel_1.0.11    irlba_2.2.1         
[28] parallel_3.3.0       curl_2.8.1           Rcpp_0.12.14        
[31] flashClust_1.01-2    scales_0.4.1         backports_1.1.0     
[34] scatterplot3d_0.3-40 truncnorm_1.0-7      digest_0.6.12       
[37] stringi_1.1.5        grid_3.3.0           rprojroot_1.2       
[40] tools_3.3.0          magrittr_1.5         lazyeval_0.2.0      
[43] tibble_1.3.3         cluster_2.0.6        FactoMineR_1.36     
[46] SQUAREM_2017.10-1    assertthat_0.2.0     httr_1.3.0          
[49] rstudioapi_0.6       iterators_1.0.9      R6_2.2.2            
[52] git2r_0.19.0        

This R Markdown site was created with workflowr