【发布时间】:2017-05-16 16:35:37
【问题描述】:
我正在尝试对由相同条件(针对多个条件)的重复测量组成的实验数据执行线性回归,以检查实验数据的可靠性。对于每个条件,我在数据框df 中存储了大约 5k-10k 的观察结果:
[1] cond1 repA cond1 repB cond2 repA cond2 repB ...
[2] 4.158660e+06 4454400.703 ...
[3] 1.458585e+06 4454400.703 ...
[4] NA 887776.392 ...
...
[5024] 9571785.382 9.679092e+06 ...
我使用以下代码绘制不同条件下的散点图 + lm + R^2 值(存储在rdata):
for (i in seq(1,13,2)){
vec <- matrix(0, nrow = nrow(df), ncol = 2)
vec[,1] <- df[,i]
vec[,2] <- df[,i+1]
vec <- na.exclude(vec)
plot(log10(vec[,1]),log10(vec[,2]), xlab = 'rep A', ylab = 'rep B' ,col="#00000033")
abline(fit<-lm(log10(vec[,2])~log10(vec[,1])), col='red')
legend("topleft",bty="n",legend=paste("R2 is",rdata[1,((i+1)/2)] <- format(summary(fit)$adj.r.squared,digits=4)))
}
但是,lm 似乎发生了变化,因此不符合我在实验数据中看到的趋势:
【问题讨论】:
-
欢迎来到 StackOverflow!请阅读有关如何提供reproducible example 的信息。这将使其他人更容易帮助您。
-
另外,您能否详细说明您认为结果错误的原因?唯一的问题是回归线不在右上角的数据上?
-
您可以将
lm拟合与局部线性回归的拟合(例如loess)进行比较,以更好地了解正在发生的事情;我怀疑较低A的(局部)线性拟合比较高A的斜率明显更浅,这解释了不通过右上角的点的整体拟合。
标签: r linear-regression