R Plotly - Построение нескольких линий регрессии - PullRequest
0 голосов
/ 18 декабря 2018

Как добавить несколько линий регрессии к одному и тому же графику в виде графика?

Я хочу построить график рассеяния, а также линию регрессии для каждой категории

Графики графика рассеянияхорошо, однако линии графика не отображаются правильно (по сравнению с результатами Excel, см. ниже)

df <-  as.data.frame(1:19)

df$CATEGORY <- c("C","C","A","A","A","B","B","A","B","B","A","C","B","B","A","B","C","B","B")
df$x <- c(126,40,12,42,17,150,54,35,21,71,52,115,52,40,22,73,98,35,196)
df$y <- c(92,62,4,23,60,60,49,41,50,76,52,24,9,78,71,25,21,22,25)

df[,1] <- NULL

fv <- df %>%
  filter(!is.na(x)) %>%
  lm(x ~ y + y*CATEGORY,.) %>%
  fitted.values()

p <- plot_ly(data = df,
         x = ~x,
         y = ~y,
         color = ~CATEGORY,
         type = "scatter",
         mode = "markers"
) %>%
  add_trace(x = ~y, y = ~fv, mode = "lines")

p
  • Извинения за то, что не добавили всю информацию заранее, и спасибо за добавление предложения "y * CATEGORY ", чтобы исправить проблему с параллельными линиями.

Вывод в Excel https://i.imgur.com/2QMacSC.png

R Вывод https://i.imgur.com/LNypvDn.png

1 Ответ

0 голосов
/ 18 декабря 2018

Попробуйте это:

library(plotly)
df <-  as.data.frame(1:19)

df$CATEGORY <- c("C","C","A","A","A","B","B","A","B","B","A","C","B","B","A","B","C","B","B")
df$x <- c(126,40,12,42,17,150,54,35,21,71,52,115,52,40,22,73,98,35,196)
df$y <- c(92,62,4,23,60,60,49,41,50,76,52,24,9,78,71,25,21,22,25)

df[,1] <- NULL

df$fv <- df %>%
  filter(!is.na(x)) %>%
  lm(y ~ x*CATEGORY,.) %>%
  fitted.values()

p <- plot_ly(data = df,
         x = ~x,
         y = ~y,
         color = ~CATEGORY,
         type = "scatter",
         mode = "markers"
) %>%
  add_trace(x = ~x, y = ~fv, mode = "lines")

p

enter image description here

...