Take the 2-minute tour ×
Cross Validated is a question and answer site for people interested in statistics, machine learning, data analysis, data mining, and data visualization. It's 100% free, no registration required.

I'm just trying to replicate a claim made in the following paper, Finding Correlated Biclusters from Gene Expression Data, which is:

Proposition 4. If $X_{IJ}=R_{I}C^{T}_{J}$. then we have:

i. If $R_{I}$ is a perfect bicluster with additive model, then $X_{IJ}$ is a perfect bicluster with correlation on columns;
ii. If $C_J$ is a perfect bicluster with additive model, then $X_{IJ}$ is a perfect bicluster with correlation on rows;
iii. If both $R_I$ and $C_J$ are perfect biclusters with additive model, then $X_{IJ}$ is a perfect correlated bicluster.

These propositions can be easily proved...

... but of course, they don't prove it.

I'm using some of the simple examples in the paper plus base + custom R code to see if I can demonstrate this Proposition.

corbic <- matrix(c(0,4,-4,2,2,-2,6,0,4,-8,16,-2,-2,10,-14,4), ncol=4)

(from Table 1F)

some custom code to convert standard X = $UdV^T$ svd form to $X=RC^{T}$ as described in the paper:

svdToRC <- function(x, ignoreRank = FALSE, r = length(x$d), zerothresh=1e-9) {
#convert standard SVD decomposed matrices UEV' to RC' form
#x -> output of svd(M)
#r -> rank of matrix (defaults to length of singular values vector)
            # but really is the number of non-zero singular values
#ignoreRank -> return the full decomposition (ignore zero singular values)
#zerothresh -> how small is zero?

    R <- with(x, t(t(u) * sqrt(d)))
    C <- with(x, t(t(v) * sqrt(d)))

    if (!ignoreRank) {
        ind <- which(x$d >= zerothresh)
    } else {
        ind <- 1:r

    return(list(R=as.matrix(R[,ind]), C=as.matrix(C[,ind])))

apply this function to the dataset:

 > svdToRC(svd(corbic))
           [,1]       [,2]
[1,]  0.8727254 -0.9497284
[2,] -2.5789775 -1.1784221
[3,]  4.3244283 -0.7210346
[4,] -0.8531261 -1.0640752

          [,1]       [,2]
[1,] -1.092343 -1.0037767
[2,]  1.223860 -0.9812343
[3,]  3.540063 -0.9586919
[4,] -3.408546 -1.0263191

Unless I'm hallucinating, this matrices are not additive, even though corbic exhibits perfect correlation between rows and columns. It seems strange that the example they provide does exhibit the property they said it should... unless I'm missing some kind of pre- or post- svd transformation step?

share|improve this question
Hi, zzk: It might help to briefly give the definition of perfect bicluster here since (a) not everyone may be able to access the paper and (b) it can mean a couple of different things depending on the generality one is assuming. –  cardinal Aug 26 '12 at 21:43
basically, the absolute value of the pairwise correlation scores between all rows vs rows and columns vs columns of the matrix are 1. –  zzk Aug 26 '12 at 21:46
I'm confused. Doesn't 4iii say that P(R), P(C), additivity => P(X)? (I'm abbreviating "Y is a perfect bicluster" as P(Y)). It seems you're going in the other direction, expecting that additivity from the other conditions. Please explain more. –  Stumpy Joe Pete Aug 28 '12 at 21:18
Stumpy - I'm expecting additivity in R & C because the I know the matrix I supply (corbic) exhibits perfect correlation - its the perfect bicluster as given in the paper itself. –  zzk Aug 29 '12 at 16:19
I'm still thinking you're going in the wrong direction. 4iii doesn't say that if X is a perfectly correlated bicluster then R and C will be additive. The implication goes in the other direction. Now, I agree that it's weird that the example they give doesn't seem to jive with the theorems it's next to. Perhaps there is some other information you could provide? Is there some other theorem that goes in the other direction? –  Stumpy Joe Pete Aug 31 '12 at 7:12
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.