簡體   English   中英

R Plotly:在子集上添加黃土線

[英]R Plotly: add loess line on subset

我正在嘗試使用 plotly 在數據框的子集上擬合整個數據框的黃土線(或 lineair 模型)。

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 的解決方案,但我設法完成了它。 我編寫了一個函數來提取擬合線的所有 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")
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM