loess regression on each group with dplyr::group_by()

后端 未结 2 617
小蘑菇
小蘑菇 2020-12-11 05:56

Alright, I\'m waving my white flag.

I\'m trying to compute a loess regression on my dataset.

I want loess to compute a different set of points that plots a

2条回答
  •  执笔经年
    2020-12-11 06:18

    This is a neat Tidyverse way to make it work:

    library(dplyr)
    library(tidyr)
    library(purrr)
    library(ggplot2)
    
    models <- fems %>%
            tidyr::nest(-CpG) %>%
            dplyr::mutate(
                    # Perform loess calculation on each CpG group
                    m = purrr::map(data, loess,
                                   formula = Meth ~ AVGMOrder, span = .5),
                    # Retrieve the fitted values from each model
                    fitted = purrr::map(m, `[[`, "fitted")
            )
    
    # Apply fitted y's as a new column
    results <- models %>%
            dplyr::select(-m) %>%
            tidyr::unnest()
    
    # Plot with loess line for each group
    ggplot(results, aes(x = AVGMOrder, y = Meth, group = CpG, colour = CpG)) +
            geom_point() +
            geom_line(aes(y = fitted))
    

提交回复
热议问题