我只是想复制以下论文中的声明,即从基因表达数据中找到相关的双簇,即:
命题 4. 如果. 那么我们有:
一世。如果是具有加性模型的完美双聚类,则是具有列相关性的完美双聚类;
ii. 如果是具有加性模型的完美双聚类,则是具有行相关性的完美双聚类;
iii. 如果两者和是具有加法模型的完美双簇,则是一个完全相关的双簇。这些命题很容易证明...
...但当然,他们没有证明这一点。
我正在使用论文中的一些简单示例加上 base + 自定义 R 代码,看看我是否可以演示这个 Proposition。
corbic <- matrix(c(0,4,-4,2,2,-2,6,0,4,-8,16,-2,-2,10,-14,4), ncol=4)
(来自表 1F)
一些自定义代码来转换标准 X =svd 格式为如论文所述:
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])))
}
将此函数应用于数据集:
> svdToRC(svd(corbic))
$R
[,1] [,2]
[1,] 0.8727254 -0.9497284
[2,] -2.5789775 -1.1784221
[3,] 4.3244283 -0.7210346
[4,] -0.8531261 -1.0640752
$C
[,1] [,2]
[1,] -1.092343 -1.0037767
[2,] 1.223860 -0.9812343
[3,] 3.540063 -0.9586919
[4,] -3.408546 -1.0263191
除非我产生幻觉,否则这个矩阵不是相加的,即使 corbic 在行和列之间表现出完美的相关性。他们提供的示例确实展示了他们所说的属性,这似乎很奇怪......除非我错过了某种前或后 svd 转换步骤?