Hello everyone,
I am trying to test some biclustering algorithms, and I am using the package
biclust.
I tried to bicluster a very simple matrix, and it seems that I cannot obtain
what I was expecting, even though the cluster, to me, seem pretty obvious.
The code is the following:
mat1<- matrix(c( 5,1,2,9,2,8,5,10,1,4,
1,10,2,2,2,2,1,4,3,8,
4,9,3,3,3,3,9,6,0,1,
9,6,4,4,4,4,5,4,5,6,
2,0,5,5,5,5,1,4,5,6,
5,6,3,7,0,3,2,4,5,6,
6,4,8,5,4,9,9,4,5,6,
7,7,7,7,0,8,2,4,5,6,
7,7,7,7,5,8,4,5,2,8,
7,7,7,7,9,1,3,8,4,1
), ncol=10)
If you see this matrix, it has a sub matrix of only "7", and two sub
matrices with perfectly correlated rows.
It seems to me that every biclustering algorithm should return at least those
three clusters, but so far I had no luck.
I tried the BCCC method, the BCPlaid, BCXmotifs, and BCSpectral.
I did not try the BCBimax (it seems that it requires a logical matrix), BCQuest
(questionnaires).
None of the used methods was able to retrieve what I was expecting. BCCC
performs better than the others, as it finds "something".
The code I used is the following:
resBC <- biclust(stdm(mat1), method=BCCC(), delta=1*10^-2,alpha=10^-5)
for(i in 1:resBC at Number){
bcs <- simpleBc(data=mat1,bicResult=resBC, clusterNo=i)
print(bcs$bcMat)
}
where the function stdm is the following (I read somewhere to use stdize() on
the matrix):
> stdm
function(x){
require(pls)
xs <-stdize(x)
rowdim <- dim(xs)[1]
coldim <- dim(xs)[2]
standardMatrix <- matrix(as.numeric(xs), nrow=rowdim, ncol=coldim)
rownames(standardMatrix) <- rownames(xs)
colnames(standardMatrix) <- colnames(xs)
standardMatrix
}
Without stdm not even BCCC can find anything.
Am I missing something?
Best,
Michele