我有一组 2 条曲线(每条曲线都有几百到几千个数据点),我想比较它们并获得一些相似性“分数”。实际上,我有超过 100 套要比较……我熟悉 R(或至少是 bioconductor)并想使用它。
我尝试了这个ccf()
功能,但我对此不太满意。
例如,如果我将 c1 与以下曲线进行比较:
c1 <- c(0, 0.8, 0.9, 0.9, 0.5, 0.1, 0.5)
c1b <- c(0, 0.8, 0.9, 0.9, 0.5, 0.1, 0.5) # perfect match! ideally score of 1
c1c <- c(1, 0.2, 0.1, 0.1, 0.5, 0.9, 0.5) # total opposite, ideally score of -1? (what would 0 be though?)
c2 <- c(0, 0.9, 0.9, 0.9, 0, 0.3, 0.3, 0.9) #pretty good, score of ???
请注意,向量的大小不同,它需要以某种方式归一化......知道吗?如果您查看这两条线,它们非常相似,我认为在第一步中,测量两条曲线下的面积并减去就可以了。我查看了帖子“R 中 2 条曲线下的阴影区域”,但这并不是我所需要的。
第二个问题(可选)是对于具有相同轮廓但幅度不同的线,我想将它们打分为非常相似,即使它们下方的区域很大:
c1 <- c(0, 0.8, 0.9, 0.9, 0.5, 0.1, 0.5)
c4 <- c(0, 0.6, 0.7, 0.7, 0.3, 0.1, 0.3) # very good, score of ??
我希望生物学家假装向程序员提出问题是可以的......
如果需要,我很乐意提供一些现实生活中的例子。
提前致谢!