麻烦在R中绘制预测线

时间:2011-11-28 15:27:17

标签: r plot

我有一个包含两列数据的简单数据集 - KSwStr

K = c(.259, .215, .224, .223, .262, .233)
SwStr = c(.130, .117, .117, .114, .113, .111)

我使用以下方式绘制数据:

plot(res$K, res$SwStr)

我想绘制线性模型的结果,使用SwStr来预测K。我尝试使用:

graphic<-lm(K~SwStr-1, data=res)
P=predict(graphic)

plot(res$K, res$SwStr)
lines(P, lty="dashed", col="green", lwd=3)

但是当我这样做时,我没有绘制任何线条。我做错了什么?

1 个答案:

答案 0 :(得分:3)

(1)您正在反转原始图的轴。如果您想要x轴上的SwStr和y轴上的K,则需要

plot(res$SwStr, res$K)

with(res,plot(K~SwStr))

如果您检查图表上绘制点的实际值,这可能是显而易见的(特别是如果KSwStr具有不同的幅度)...

对于lm适合您,您也可以使用abline(graphic,...)

编辑 :( 2)您还必须意识到predict仅提供预测的y值,而不是x值。所以你想要这样的东西:

K=c(.259, .215, .224, .223, .262, .233)
SwStr=c(.130, .117, .117, .114, .113, .111)
g <- lm(K~SwStr-1)
par(las=1,bty="l")  ## my favourites
plot(K~SwStr)
P <- predict(g)
lines(SwStr,P)

根据具体情况,您可能还想使用newdata predict参数来指定一组均匀间隔的x值......