почему функция lines () не работает в моем коде - PullRequest
0 голосов
/ 24 сентября 2018

Я попытался нарисовать интервалы на графике регрессии, но функция линий вообще не работала, а функция matlines просто нарисовала три линии без наклона.

Мой набор данных из пакета "далекой".

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 голосов
/ 24 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...