Постройте кусочную регрессию в два этапа на том же графике

#r

#r

Вопрос:

Я пытаюсь построить две кривые на одном графике, но это не работает. Я хочу построить функцию f (x) = 3x 2, если x<= 3 и f (x) = 2x-0.5x ^ 2, если x> 3 на интервале [0,6]. Я думал, что должен был сделать

curve(3*x 2, 0,3)

и

 curve(2*x-0.5*x^2,3,6, add = TRUE)
  

Что я мог бы сделать для построения такой функции?

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

1. Ограничения отключены. Вам нужно будет настроить xlim и ylim при первом вызове кривой, чтобы отображался второй. Итак, добавьте ylim = c(-5, 10), xlim = c(0,6) к первому вызову кривой.

Ответ №1:

Используйте xlim и ylim в первом curve , чтобы установить границы графика.

 curve(3*x 2, 0,3, xlim = c(0, 6), ylim = c(-5, 12))
curve(2*x-0.5*x^2,3,6, add = TRUE)
  

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

Поскольку вторая кривая все еще немного обрезается, вы можете захотеть использовать c(-7 12) для пределов y.

Другой вариант, если вы хотите, чтобы линии были соединены и который устраняет необходимость устанавливать ограничения вручную, — это кодировать обе функции в одной с ifelse :

 curve(ifelse(x <= 3, 3 * x   2, 2 * x - 0.5 * x^2), 0, 6, ylab = "f(x)")
  

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

Ответ №2:

Вы можете сделать это, например, вы получите 2 кривые вместе.

 c1 <- curve(2*x-0.6*x^2,3,6)
c2 <- curve(2*x-0.5*x^2,3,6)

plot(c1)
lines(c2, col="red")
  

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