R и ggplot добавляют строку geom_smooth сложной полиномиальной функции регрессии - PullRequest
0 голосов
/ 27 мая 2020

Я использую линейную регрессию следующей функции: 100 / (100-Y) = b1 + b2 * (1 / X)

и получаю коэффициенты, которые равны b1 = 2,0675 и b2 = 16.2662

lm1 <- lm(I((100/(100-Y)))~I((1/X)), data = table_67)
summary(lm1)

Затем я хочу визуализировать функцию на основе полученных коэффициентов. Одно решение, которое я нашел, но его получение требует немного времени, - это построить график функции после того, как я решу для y и использую ggplot. Как это:

f <- function(x) ((106.75*x+1626.62)/(2.0675*x+16.2662))
ggplot(data.frame(x = c(0,125)), aes(x = x))+
  stat_function(fun = f, size = 1.2)

Хотя это дает мне именно то, что я ищу, это занимает немного времени. Мне было интересно, есть ли альтернативное решение.

Я думал либо о следующем коде:

gggplot(table_67, aes(X, Y))+
  geom_smooth(method = "lm", se=FALSE, formula = I((100/(100-y)))~I((1/x)))

, который строит правильный график, но я не могу определить интервал значений Y, для которого я хочу построить его. Вы можете видеть, что ось Y имеет значения от нуля и выше, но я хотел бы визуализировать ее на основе определенного интервала c и полученных мной коэффициентов (которые соответствуют значениям Y моего набора данных). В предполагаемой регрессии, если X стремится к бесконечности, предел Y стремится к 51, что не видно в этом решении

enter image description here

Или, если это невозможно, и я должен использовать приведенный выше код функции (x), есть ли способ определить мою функцию, избегая ее решения с Y? Я думал примерно так, как показано ниже, и я знаю, что это не работает, но чтобы объяснить, что я ищу:

g <- (100/(100-function(x))) (2.0675 + 16.2662*(1/x))
ggplot(data.frame(x = c(0,125)), aes(x = x))+
  stat_function(fun = f, size = 1.2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...