Как добавить несколько линий регрессии к одному графику в plotly?
Я хочу построить график рассеяния, а также линию регрессии для каждой КАТЕГОРИИ.
Диаграмма рассеяния отображается нормально, однако линии графика не отображаются правильно (по сравнению с результатами 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
Выход в Excel https://i.imgur.com/2QMacSC.png
R Выход https://i.imgur.com/LNypvDn.png
Кроме того, является ли это обязательным синтаксисом заговора?
Пожалуйста, используйте тег р-сюжетно вместо хитроумно. Также вам необходимо предоставить нам dput(df)
или dput(head(df, 20))
(если данных слишком много), чтобы мы могли помочь.
Линии должен должны быть параллельны в зависимости от вашей модели. Что вам нужно добавить, так это взаимодействие с вашей моделью, если вы ожидаете, что уклоны будут разными в каждой категории (например, lm(x ~ y + y*CATEGORY, .)
@ emilliman5 Спасибо за это! Я добавил новую информацию к исходному вопросу, не уверен, должна ли линия регрессии R соответствовать этому в excel, но я связал оба изображения в вопросе.
Вы хотите 1 модель для всех трех категорий или 3 модели, по 1 для каждой категории?
Попробуй это:
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
Пожалуйста, создайте воспроизводимый пример, включая данные или, по крайней мере, вывод
fv
. См. Этот пост для руководства: stackoverflow.com/questions/5963269/…