首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >它能同时显示y在x上和x在y上的回归吗?

它能同时显示y在x上和x在y上的回归吗?
EN

Stack Overflow用户
提问于 2013-02-20 04:41:57
回答 1查看 825关注 0票数 1

我有一个双变量数据集:

代码语言:javascript
复制
set.seed(45)
require(mvtnorm)
sigma <- matrix(c(3,2,2,3), ncol=2) 
df <- as.data.frame(rmvnorm(100, sigma=sigma))
names(df) <- c("u", "v")

v设置为因变量,使用ggplot i可以很容易地显示vu上的“通常”最小二乘回归。

代码语言:javascript
复制
require(ggplot2)
qplot(u, v, data=df) + geom_smooth(aes(u, v), method="lm", se=FALSE)

..。但我也想展示uv上的最小二乘回归(同时)。

这就是我天真地试图通过将一个不同的aes传递给geom_smooth来实现的。

代码语言:javascript
复制
last_plot() + geom_smooth(aes(v, u), method="lm", color="red", se=FALSE)

当然,这不太管用。第二个geom_smooth显示了正确直线的逆(我认为)。我希望它的坡度比第一条线还要陡。

此外,置信区间是错误的。我并不特别关心这些,但我确实认为它们可能是一条线索。

我是不是想要用ggplot2很难做的事?

编辑:这里有更多,显示了我期望的行:

代码语言:javascript
复制
# (1) Least-squares regression of v on u
mod <- lm(v ~ u, data=df)
v_intercept <- coef(mod)[1]
v_slope <- coef(mod)[2]
last_plot() + geom_abline(
    intercept = v_intercept, 
    slope = v_slope, 
    color = "blue", 
    linetype = 2
)

# (2) Least-squares regression of u on v
mod2 <- lm(u ~ v, data=df)
u_intercept <- coef(mod2)[1]
u_slope <- coef(mod2)[2]
# NOTE: we have to solve for the v-intercept and invert the slope
# because we're still in the original (u, v) coordinate frame
last_plot() + geom_abline(
    intercept = - u_intercept / u_slope, 
    slope = 1 / u_slope, 
    color = "red", 
    linetype = 2
)

EN

回答 1

Stack Overflow用户

发布于 2013-02-20 04:45:40

代码语言:javascript
复制
ggplot(df) + 
  geom_smooth(aes(u,v), method='lm') + 
  geom_smooth(aes(v,u), method='lm', colour="red")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14972417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档