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

why lines() function didn't work in my code

我尝试在回归图上绘制区间,但是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"))

这是我得到的:

我已经在网站上找遍了所有的解释,但还是看不懂台词,希望你能告诉我我的代码有什么问题。

非常感谢。

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 轴的范围。否则置信区间将超出绘图区域。

这是结果图: