我有两个rna seq数据样本的散点图,这些样本归一化为log2标度。我在R工作。我希望大多数值落在x = y线上,但是我有兴趣找到超出该范围的点数以消除“噪音”。如何获得高于和低于某个阈值的点数(即红线:1 + logx,1 + logy)。
plot(log2(data$SRR850589_sorted/19108931*1000000+.5),
log2(data$SRR850604_sorted/22989410*1000000+.5),
xlab="log(SRR850589)", ylab="lg(SRR85604)")
abline(0,1,col='cyan')
abline(1,1,col='red')
abline(-1,1,col='red')
答案 0 :(得分:2)
对于每个x,y对,使用拟合函数确定每个y值与每个x值的拟合线的距离。例如,假设我们要标记距离拟合线至少5个单位的点(垂直方向):


 set.seed( 10)
 x = runif(100,0,10)
 y = 2 * x + 5 + rnorm(100,0,5)
 m1 = lm(y~x)&# xA;


 要获得超过5个单位的点数:


 table(abs(y - (coef(m1)[1] + coef(m1)[2] * x))> 5)


&#xA ; 



FALSE TRUE
 63 37

绘制点数:
&#xA;&#xA; < pre> plot(x,y,type =“n”)&#xA; abline(coef(m1))&#xA; abline(coef(m1)+ c(5,0),col =“red “)&#xA; abline(coef(m1) - c(5,0),col =”red“)&#xA; points(x,y,pch = 16,col = ifelse(abs(y - (coef) (m1)[1] + coef(m1)[2] * x))&gt; 5,“蓝色”,“红色”))&#xA;
&#xA;&#xA ; &#xA;