X-Git-Url: https://git.auder.net/?p=valse.git;a=blobdiff_plain;f=pkg%2FR%2FEMGrank.R;h=5eea322f6c47c677d843cca24205f0afea64c24a;hp=7c0d91f653a226a7b5bdf61f755eb2fee70af95c;hb=0930b5d395ef0a48d1f97f88ee533c13d0962759;hpb=7ac88d643dac3dccb17c3e81c7b3d3d1aa87c1af diff --git a/pkg/R/EMGrank.R b/pkg/R/EMGrank.R index 7c0d91f..5eea322 100644 --- a/pkg/R/EMGrank.R +++ b/pkg/R/EMGrank.R @@ -48,7 +48,6 @@ matricize <- function(X) # R version - slow but easy to read .EMGrank_R = function(Pi, Rho, mini, maxi, X, Y, tau, rank) { - require(MASS) #matrix dimensions n = dim(X)[1] p = dim(X)[2] @@ -77,7 +76,7 @@ matricize <- function(X) if (length(Z_indice) == 0) next #U,S,V = SVD of (t(Xr)Xr)^{-1} * t(Xr) * Yr - s = svd( ginv(crossprod(matricize(X[Z_indice,]))) %*% + s = svd( MASS::ginv(crossprod(matricize(X[Z_indice,]))) %*% crossprod(matricize(X[Z_indice,]),matricize(Y[Z_indice,])) ) S = s$d #Set m-rank(r) singular values to zero, and recompose @@ -107,7 +106,7 @@ matricize <- function(X) } sumLogLLF2 = sumLogLLF2 + log(sumLLF1) } - + LLF = -1/n * sumLogLLF2 #update distance parameter to check algorithm convergence (delta(phi, Phi))