我有一个包含两列数据的简单数据集 - K
和SwStr
。
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)
但是当我这样做时,我没有绘制任何线条。我做错了什么?
答案 0 :(得分:3)
(1)您正在反转原始图的轴。如果您想要x轴上的SwStr
和y轴上的K
,则需要
plot(res$SwStr, res$K)
或
with(res,plot(K~SwStr))
如果您检查图表上绘制点的实际值,这可能是显而易见的(特别是如果K
和SwStr
具有不同的幅度)...
对于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值......