如何在同一个地块上显示2条回归线? 以下是两种型号:
data(mtcars)
a <- lm(mpg~wt+hp)
b <- lm(mpg~wt+hp+wt*hp)
我在x轴上绘制wt,在y轴上绘制mpg,在hp上绘制颜色。 这是在基地R:
cr <- colorRamp(c("yellow", "red"))
with(mtcars, {
plot(wt, mpg, col = rgb(cr(hp / max(hp)), max=255),
xlab="Weight", ylab="Miles per Gallon", pch=20)
})
另外,请在ggplot2中说明如何完成此操作。 这是情节:
library(ggplot2)
p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point(aes(col = hp))
p + scale_colour_gradientn(colours=c("green","black"))
提前致谢!
答案 0 :(得分:0)
geom_smooth的文档实际上告诉您如何执行此操作。
可以使用回归模型预测y的新值,然后使用geom_smooth()在同一图表上绘制这些值。
下面是ggplot2的代码,它产生我认为你想要的东西。两条线重叠得如此之多,看起来只有一条线被绘制,我将一条线型设置为虚线以证明这一点。 我不知道如何在基地R中实现这一目标。
data(mtcars)
library(ggplot2)
a <- lm(mpg~wt+hp, data = mtcars)
b <- lm(mpg~wt+hp+wt*hp, data = mtcars)
mtcars$pred.a <- predict(a)
mtcars$pred.b <- predict(b)
p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point(aes(col = hp)) +
scale_colour_gradientn(colours=c("green","black")) +
geom_smooth(aes(x = wt, y = pred.a), method = "lm", colour = "black", fill = NA) +
geom_smooth(aes(x = wt, y = pred.b), method = "lm", colour = "red", fill = NA, linetype = 4)
p
答案 1 :(得分:0)
基础R解决方案:
a <- lm(mpg~wt+hp, data=mtcars)
b <- lm(mpg~wt+hp+wt*hp, data=mtcars)
wt <- mtcars[, "wt"]
idx <- sort(wt, index.return=TRUE)$ix
plot(mpg~wt, data=mtcars)
lines(wt[idx], predict(a)[idx], col="red")
lines(wt[idx], predict(b)[idx], col="blue")
然而,这不是最好的可视化设想。
答案 2 :(得分:0)
您正在询问如何添加回归线,但您的回归模型会生成回归平面和回归曲面,这两者都比线条更高。您可以通过调整所选的hp值来查找回归线,或者为不同的hp值显示多行。
使用基础图形,您可以使用TeachingDemos包中的Predict.Plot
函数将预测线/曲线添加到拟合模型(或2)的图中。用于创建当前行的交互式TkPredict' function in the same package will let you interact with the plot to choose conditioning values, then will produce the call to
Predict.Plot`。您可以组合生成的命令以将它们包含在同一个图上。