【问题标题】:Calculate multiple regression models计算多个回归模型
【发布时间】:2020-05-19 13:15:02
【问题描述】:

随着时间的推移,我测量了土壤孵化(装有土壤的封闭罐子)中的甲烷浓度。为了计算甲烷产生率,我需要将二阶多项式回归模型拟合到甲烷浓度 (ch4_umol) 和时间 (stamp) 之间的关系。这个回归的 R2 值,我想在我的数据集中的一个新列中。我想计算每个“jar_camp”的 R2。 有人能帮忙吗? 免责声明:我是新手,主要使用 tidyverse。

我的数据如下所示:

structure(list(jar_camp = c("1_pf1.1", "1_pf1.1", "1_pf1.1", 
"1_pf1.1", "1_pf1.1", "1_pf1.1", "2_pf1.1", "2_pf1.1", "2_pf1.1", 
"2_pf1.1", "2_pf1.1", "2_pf1.1", "3_pf1.1", "3_pf1.1", "3_pf1.1", 
"3_pf1.1", "3_pf1.1", "1_pf2.1", "1_pf2.1", "1_pf2.1", "1_pf2.1", 
"1_pf2.1", "1_pf2.1", "2_pf2.1", "2_pf2.1", "2_pf2.1", "2_pf2.1", 
"2_pf2.1", "2_pf2.1", "3_pf2.1", "3_pf2.1", "3_pf2.1", "3_pf2.1", 
"3_pf2.1"), jar = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 
3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3), 
    campaign = c("pf1.1", "pf1.1", "pf1.1", "pf1.1", "pf1.1", 
    "pf1.1", "pf1.1", "pf1.1", "pf1.1", "pf1.1", "pf1.1", "pf1.1", 
    "pf1.1", "pf1.1", "pf1.1", "pf1.1", "pf1.1", "pf2.1", "pf2.1", 
    "pf2.1", "pf2.1", "pf2.1", "pf2.1", "pf2.1", "pf2.1", "pf2.1", 
    "pf2.1", "pf2.1", "pf2.1", "pf2.1", "pf2.1", "pf2.1", "pf2.1", 
    "pf2.1"), stamp = structure(c(1546688646, 1546688647, 1546688649, 
    1546688651, 1546688653, 1546688654, 1546689321, 1546689323, 
    1546689324, 1546689326, 1546689328, 1546689329, 1546689877, 
    1546689878, 1546689880, 1546689882, 1546689884, 1547031076, 
    1547031077, 1547031079, 1547031081, 1547031083, 1547031084, 
    1547032136, 1547032137, 1547032139, 1547032141, 1547032143, 
    1547032144, 1547033073, 1547033075, 1547033076, 1547033078, 
    1547033080), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    ch4_umol = c(74.982885373, 74.315864696, 75.405874095, 73.876607177, 
    74.153176726, 74.429746275, 159.645704961, 159.661973758, 
    159.678242555, 159.694511352, 159.710780149, 159.75958654, 
    134.673101566, 135.779379762, 135.584154198, 135.600422995, 
    136.6578948, 455.542584797, 455.656466376, 455.998111113, 
    455.998111113, 455.623928782, 455.591391188, 461.838609236, 
    461.887415627, 461.985028409, 461.789802845, 461.627114875, 
    461.789802845, 441.356193813, 440.982011482, 441.20977464, 
    441.112161858, 441.112161858)), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -34L))

【问题讨论】:

    标签: r regression tidyverse


    【解决方案1】:

    试着这样做

    library(tidyverse)
    library(broom)
    df %>% 
      group_by(jar_camp) %>% 
      nest() %>% 
      mutate(model = map(data, ~ lm(ch4_umol ~ poly(stamp, 2), data = .x))) %>% 
      mutate(glance_model = map(model, glance)) %>% 
      select(jar_camp, glance_model) %>% 
      unnest(glance_model)
    

    【讨论】:

    • 非常感谢尤里。回复晚了非常抱歉!我认为它可以正常工作!
    • 嗨 Yuriy,我发现我还需要每个回归的斜率(值)。您对如何编辑代码以创建此输出有什么建议吗?
    猜你喜欢
    • 2019-07-03
    • 2021-06-18
    • 2017-09-15
    • 2019-08-10
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多