R Plotly - 绘制多重回归线

3

如何在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
  • 很抱歉之前没有提供完整信息,感谢您提出"y*CATEGORY"的建议来解决平行线问题。

Excel输出 https://i.imgur.com/2QMacSC.png

R输出 https://i.imgur.com/LNypvDn.png


请创建一个可重现的示例,包括数据或至少包括 fv 的输出。请参考此帖子以获取指导:https://dev59.com/eG025IYBdhLWcg3whGSx - emilliman5
此外,使用Plotly语法是强制性的吗? - s__
1
请使用 r-plotly 标签代替 plotly。同时,您需要提供 dput(df)dput(head(df, 20))(如果数据量太大)以便我们进行帮助。 - ismirsehregal
根据您的模型,这些线应该是平行的。如果您希望每个类别的斜率不同,您需要将交互项添加到模型中(例如 lm(x ~ y + y*CATEGORY,.))。 - emilliman5
@emilliman5 谢谢你的回复!我已经将新信息添加到原始问题中,不确定 R 回归线是否应该与 Excel 中的匹配,但我已经在问题中链接了两个图像。 - Aaron Walton
你想要一个模型覆盖三个类别,还是三个模型,每个类别一个? - emilliman5
1个回答

3

试试这个:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接