为什么lines()函数在我的代码中不起作用

时间:2018-09-24 04:38:04

标签: r function plot line linear-regression

我尝试在回归图上绘制间隔,但是lines函数根本不起作用,而matlines函数仅绘制了三条没有斜率的直线。

我的数据集来自“ faraway”软件包。

y = salmonella$colonies
x = salmonella$dose

salmonella_fit = lm(y ~ x)
summary(salmonella_fit)

newdose = data.frame( x= c(20, 40, 60, 80, 120, 150, 180, 300,500))
conf_interval = predict(salmonella_fit, newdose, interval = "confidence", level = 0.95)

xval = c(20, 40, 60, 80, 120, 150, 180, 300, 500)
plot(conf_interval[ ,1] ~ xval,  xlab = "newdose", ylab ="colonies", main = "Regression")
abline(salmonella_fit, col="lightblue")
lines(conf_interval[,2] ~ xval, col ="blue", type = "l")
lines(conf_interval[,3] ~ xval, col ="blue", type = "l")
matlines(conf_interval, xval, col=c("lightblue","blue","blue"))

这就是我得到的:

without lines

我一直在寻找网站上的所有解释,但是我仍然听不清楚,希望您能告诉我我的代码有什么问题。

非常感谢。

1 个答案:

答案 0 :(得分:0)

lines函数可将x坐标指定为第一个向量,将y坐标指定为第二个向量。

在您的情况下,整个绘图代码可能看起来像这样:

plot(conf_interval[ ,1] ~ xval,  xlab = "newdose", ylab ="colonies", main = "Regression", ylim=range(conf_interval))
abline(salmonella_fit, col="lightblue")
lines(xval, conf_interval[,2], col="blue")
lines(xval, conf_interval[,3], col="blue")

请注意,我还必须添加ylim=range(conf_interval),以便扩展y轴的限制。否则,置信区间将位于绘图区域之外。

这是结果图: cints