【问题标题】:R Plotly: add loess line on subsetR Plotly:在子集上添加黄土线
【发布时间】:2020-09-16 07:17:46
【问题描述】:

我正在尝试使用 plotly 将整个数据帧的黄土线(或线性模型)拟合到数据帧的子集上。

model_LV2F<- loess(p_LV2F ~schoolweging, data = df)
plot_ly(df_subset) %>% 
  add_markers(x=~schoolweging, y=~p_LV2F, marker=list(color="red", opacity=3/10), name="2F") %>%
  add_lines(x=~schoolweging, y=~model_LV2F$fitted, line=list(color="red"))

我收到错误“Tibble 列必须具有兼容的大小。”,因为该模型基于 6000 个观察值,而子集数据框仅包含 23 个观察值。

如何从另一个数据框中添加预先计算的参考线?

【问题讨论】:

    标签: r plotly r-plotly loess


    【解决方案1】:

    我很确定这不是最 R 的解决方案,但我设法完成了它。 我编写了一个函数来提取拟合线的所有 x 和 y 对,并且只保留唯一值。 之后,我可以在我的子集数据框中加入这些值。

    loess_ref <- function(...) {
      mdl <- loess(...)
      x <- mdl$x[, ]
      y <- mdl$fitted
      mdl_df <- data.frame(x, y) %>% drop_na() %>% unique()
    }
    
    loess_LV2F <- loess_ref(p_LV2F ~ schoolweging, data = df)
    
    df_subset %>%
      left_join(loess_LV2F, by = c("schoolweging" = "x")) %>%
      plot_ly() %>%
      add_markers(
        x =  ~ schoolweging,
        y =  ~ p_LV2F,
        marker = list(color = "red", opacity = 3 / 10),
        name = "2F"
      ) %>%
      add_lines(
        x =  ~ schoolweging,
        y =  ~ model_LV2F$fitted,
        line = list(color = "red")
      )
    

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多