【发布时间】:2016-07-26 10:51:39
【问题描述】:
我是 R 新手。我正在尝试使用 geom_smooth(method=lm) 在 ggplot 中拟合回归线。
我碰巧注意到,对于同一个数据集,当轴从线性线性变为线性对数和对数对数时,回归线的斜率会发生变化,以至于 y 截距不同而且相关性似乎也不真实。
数据的相关系数 (r) 为 -0.125
conc <- c(1.5188717, 1.8794363, 2.5455899, 1.5810686, 0.4938004, 2.9526288)
absp <- c(6.975519, 2.279606, 2.265391, 1.611868, 1.379097, 1.324827)
mydata <- data.frame(conc, absp)
corr_eqn <- function(x, y) {
corr_coef <- round(cor(x, y), digits=3)
paste("italic(r) == ", corr_coef)
}
value <- data.frame(r=corr_eqn(conc, absp))
1。我首先将我的数据绘制成线性比例。这里的 y 截距似乎是 ~3.1
ggplot(mydata, aes(x=conc, y=absp)) +
labs(x="Conc.", y="Absp.") +
scale_x_continuous() +
scale_y_continuous(breaks=c(0,1,2,3,4,5,6,7)) +
geom_point(size=4) +
theme(text = element_text(size=18, face="bold"), legend.position="none")+
geom_smooth(method=lm, se=FALSE) +
geom_text(data=value, aes(x=2, y=6, label=r),
colour="red", size=5, parse=TRUE)
2。但是,当我将 y 轴更改为 log2 比例并且 x 轴保持线性时,y 截距似乎介于 2 和 3 之间。
ggplot(mydata, aes(x=conc, y=absp)) +
labs(x="Conc.", y="Absp. (log2)") +
scale_x_continuous() +
scale_y_continuous(trans=log2_trans(),breaks=c(0,1,2,3,4,5,6,7)) +
annotation_logticks(sides="l") +
geom_point(size=4) +
theme(text = element_text(size=18, face="bold"), legend.position="none")+
geom_smooth(method=lm, se=FALSE) +
geom_text(data=value, aes(x=2, y=6, label=r),
colour="red", size=5, parse=TRUE)
3。最后,当我将 y 轴和 x 轴都更改为 log2 刻度时,y 截距下降到小于 2 并且斜率现在看起来是正的。
ggplot(mydata, aes(x=conc, y=absp)) +
labs(x="Conc. (log2)", y="Absp. (log2)") +
scale_x_continuous(trans=log2_trans()) +
scale_y_continuous(trans=log2_trans(),breaks=c(0,1,2,3,4,5,6,7)) +
annotation_logticks(sides="lb") +
geom_point(size=4) +
theme(text = element_text(size=18, face="bold"), legend.position="none")+
geom_smooth(method=lm, se=FALSE) +
geom_text(data=value, aes(x=2, y=6, label=r),
colour="red", size=5, parse=TRUE)
我似乎不明白斜率或 y 截距如何仅通过将轴从线性改为对数刻度来改变?我在这里犯了一些明显的错误还是我错过了什么?我将不胜感激任何帮助/建议。
【问题讨论】: