Nothing
#' Estimate mixing matrix from estimates of components
#' @param sData S Dimension: P x Q
#' @param xData X Dimension: P x T
#' @param intercept default = TRUE
#' @return a mixing matrix M, dimension Q x T.
#' @export
est.M.ols <- function(sData,xData,intercept=TRUE) {
if(intercept) coef(lm(xData~sData))[-1,] else coef(lm(xData~sData-1))
}
#' Match ICA results based on L2 distances and Hungarian
#'
#' @param S loading variable matrix
#' @param template template for match
#' @param M subject score matrix
#'
#' @return the match result
#' @import clue
#' @export
matchICA=function(S,template,M=NULL) {
#require(clue)
n.comp=ncol(S)
n.obs=nrow(S)
if(n.comp>n.obs) warning('Input should be n x d')
if(!all(dim(template)==dim(S))) warning('Template should be n x d')
S = t(S)
template = t(template)
l2.mat1=matrix(NA,nrow=n.comp,ncol=n.comp)
l2.mat2=l2.mat1
for (j in 1:n.comp) {
for (i in 1:n.comp) {
l2.mat1[i,j]=sum((template[i,]-S[j,])^2)/n.obs
l2.mat2[i,j]=sum((template[i,]+S[j,])^2)/n.obs
}
}
l2.mat1=sqrt(l2.mat1)
l2.mat2=sqrt(l2.mat2)
l2.mat=l2.mat1*(l2.mat1<=l2.mat2)+l2.mat2*(l2.mat2<l2.mat1)
map=as.vector(solve_LSAP(l2.mat))
l2.1=diag(l2.mat1[,map])
l2.2=diag(l2.mat2[,map])
sign.change=-1*(l2.2<l2.1)+1*(l2.1<=l2.2)
perm=diag(n.comp)[,map]%*%diag(sign.change)
s.perm=t(perm)%*%S
if(!is.null(M)) {
M.perm=t(M)%*%perm
return(list(S=t(s.perm),M=t(M.perm)))
} else {
t(s.perm)
}
}
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.