Я уже некоторое время сражаюсь с этим, хотя кажется, что это должно быть довольно просто. Я следовал за советом по этому вопросу:добавление линий «LD50» к графику логистической регрессии с использованием ggplot2
Predicted values for logistic regression from glm and stat_smooth in ggplot2 are different
Что у меня есть логистическая кривая регрессии, и я хочу, чтобы добавить строку «ЛД50», как в плотности, где 0,5 из испытаний являются успехи (у = 1). Я вычислил значение плотности, используя функцию dose.p
, и использую эти значения для направления моего geom_line
. Но почему-то линии не идут туда, куда я хочу, чтобы они пошли, и я не могу понять, почему! Я хочу, чтобы они работали под углом 90 градусов, как в приведенном выше примере, но почему-то я получаю диагональную линию вместо этого, и я действительно не могу понять, почему!
Treatment=c(rep("Live", 50), rep("Degraded", 50))
Density=c(rep(141.9015767,10), rep(165.4903068, 10), rep(186.4801865,10), rep(325.9259259,10), rep(662.8471167, 10), rep(141.9015767,10), rep(165.4903068, 10), rep(186.4801865,10), rep(325.9259259,10), rep(662.8471167, 10))
Code=c(0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1)
Choice=data.frame(Treatment, Density, Code)
##plot
Choice_plot=ggplot(data=Choice, aes(x=Density, y=Code, linetype=Treatment)) + geom_point(size=2.5, colour="black", alpha=1/6)+
#LD50 line Live
geom_segment(aes(y = 0.5, yend = 0.5, xend = 316.8520),x = -Inf,linetype = "dashed") +
geom_segment(aes(x=316.8520, xend=316.8520, y=0, yend=0.5),x = -Inf,linetype = "dotted") +
#LD50 line Dead
geom_segment(aes(y = 0.5, yend = 0.5, xend = 411.8904),x = -Inf,linetype = "dashed") +
geom_segment(aes(x=411.8904, xend=411.8904, y=0, yend=0.5),x = -Inf,linetype = "dotted") +
stat_smooth(method="glm", family="binomial", se=FALSE, colour="black", size=0.3)+
labs(y="Colony Choice", size=1.5)+
labs(x="P. mol density on established colony (ind/m2)", size=1.5)+
## Make it pretty
theme_bw()+
theme(panel.background = element_rect(colour = NA))+
theme(panel.grid.minor = element_line(colour = NA))+
theme(panel.grid.major = element_line(colour = NA))
Choice_plot
Горизонтальная линия работает нормально, но предположительно, вертикальная линия заканчивается по диагонали от у, х = 0 у = 0,5, х = 316,8520 или 411,8904, а не вертикально! Я не могу опубликовать изображения, но я новичок, извините!
Для записи, изначально я начал использовать подобный код geom_segment как для горизонтального и вертикального сегмента:
geom_segment(aes(y = 0.5, yend = 0.5, xend = 411.8904),x = -Inf,linetype = "dashed") +
geom_segment(aes(x=411.8904, xend=411.8904, yend=0.5),x = -Inf,linetype = "dotted")
В этом случае я в конечном итоге с двумя диагональными линиями, проходящими от конца горизонтальной линии до y = 1 & 0, x = 0
Кто-нибудь знает, где я ошибаюсь?
В вашей второй 'geom_segment()' вы сопоставили 'x' дважды (' х = 411.8904' и 'х = -Inf'), удалите вторую, и вы должны быть правы - голосование, чтобы закрыть, как это, по-видимому, простая ошибка, которая вряд ли поможет другим. – alexwhan