【问题标题】:R Plotly - Plotting Multiple Regression LinesR Plotly - 绘制多条回归线
【发布时间】:2019-05-19 01:41:59
【问题描述】:

如何在 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 的输出。请参阅此帖子以获取指导:stackoverflow.com/questions/5963269/…
  • 另外,情节性的罪名是强制性的吗?
  • 请使用 r-plotly 标签而不是 plotly。此外,您需要向我们提供dput(df) 或dput(head(df, 20))(如果数据过多)以便我们提供帮助。
  • 线条应该根据您的模型是平行的。如果您希望每个类别的斜率不同(例如lm(x ~ y + y*CATEGORY, .)
  • @emilliman5 谢谢!我已将新信息添加到原始问题中,不确定 R 回归线是否应与 excel 中的匹配,但我已将问题中的两个图像都链接起来。

标签: r plot regression r-plotly


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 2016-03-12
    • 2013-07-11
    • 2019-10-20
    • 2017-02-05
    • 2017-09-24
    • 2014-06-13
    相关资源
    最近更新 更多