[英]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.