繁体   English   中英

如何将预测函数用于以小节形式存储为列的线性模型

[英]How to use the predict function for linear models stored in tibbles as columns

我有一些类似的代码:

library(tidyverse)
library(broom)

df <- tribble(~group, ~set, ~x, ~y,
  0, "training", 1, 2,
  0, "training", 2, 4,
  0, "training", 4, 9,
  0, "training", 5, 9,
  0, "training", 15, 29,
  0, "training", 20, 42,
  0, "training", 21, 42,
  0, "training", 25, 49,
  0, "test", 10, NA,
)
df %>%
  filter(set == "training") %>%
  group_by(group) %>%
  do(pm = lm(y ~ x, data = .)) %>%
  left_join(df, ., by = "group")

所以我得到这样的东西:

  group      set    x     y     model   
  <dbl>  <chr>    <dbl> <dbl>  <list>  
1    0. training    1.    2. <S3: lm>
2    0. training    2.    4. <S3: lm>
3    0. training    4.    9. <S3: lm>
4    0. training    5.    9. <S3: lm>
5    0. training   15.   29. <S3: lm>
6    0. training   20.   42. <S3: lm>
7    0. training   21.   42. <S3: lm>
8    0. training   25.   49. <S3: lm>
9    0. test       10.   NA  <S3: lm>

如何使用第9行中set等于“ test”的线性模型从x预测y 预先感谢您的帮助

按“分组”分组后,我们可以replace基于lm模型的predict输出replace为“ y”中的NA元素

library(dplyr)
df %>%
  filter(set == "training") %>%
  group_by(group) %>%
  do(pm = lm(y ~ x, data = .)) %>%
  left_join(df, ., by = "group") %>%
  group_by(group) %>% 
  mutate(y = replace(y, is.na(y), predict(pm[[1]],  
        newdata = data.frame(x = x[set == "test"]))))
# A tibble: 9 x 5
# Groups:   group [1]
#  group set          x     y pm    
#  <dbl> <chr>    <dbl> <dbl> <list>
#1     0 training     1   2   <lm>  
#2     0 training     2   4   <lm>  
#3     0 training     4   9   <lm>  
#4     0 training     5   9   <lm>  
#5     0 training    15  29   <lm>  
#6     0 training    20  42   <lm>  
#7     0 training    21  42   <lm>  
#8     0 training    25  49   <lm>  
#9     0 test        10  20.0 <lm>  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM