Подгонка многочлена 3-го порядка с известным перехватом x на ggplot2

#r #ggplot2 #non-linear-regression #intercept #best-fit-curve

#r #ggplot2 #нелинейная регрессия #перехват #кривая наилучшего соответствия

Вопрос:

Я пытаюсь подогнать многочлен 3-го порядка на ggplot2, используя stat_smoth, но хотел бы принудительно провести линию регрессии через известный перехват x (35 для следующего воспроизводимого примера).

Пример:

 x<-c(1,2,3,5,10,12,15,20,22,25,30,33,37)
y<-c(1000,800,100,10,1,0.3,0.25,0.2,0.1,0.1,0.03,0.05,0.03)
myformula<-y ~ poly(x,3)
ggplot(df, aes(x,y))   stat_smooth(method = lm, formula = myformula)   geom_point()   
stat_smooth(method = lm, formula = myformula)  
stat_poly_eq(formula = myformula, eq.with.lhs = "italic(psi)~`=`~",
                                  eq.x.rhs = "~italic(theta)", 
                                  aes(label = paste(..eq.label.., ..rr.label.., 
                                  sep = "~~~~")), label.x=0.15, parse = TRUE)  
xlim(0, 40)   ylim(0, 2000)  
scale_y_log10(breaks = c(0, 0.1,10,1000), labels= c(0,0.1, 10,1000))
  

введите описание изображения здесь

Как можно получить наилучшую линию регрессии и уравнение, когда x-перехват равен 35?
Кроме того, как я могу заставить линию касаться оси x?

Комментарии:

1. Вы говорите, что перехват x равен x = 35, но у вас логарифмическая шкала y, поэтому y = 0 будет бесконечно далеко внизу, за пределами страницы. Как бы вы намеревались показать это на графике?

2. Это хороший момент, я не думал об этом. Можно ли сделать x = 35, когда y — очень маленькое число (например, 0,001)?