麻烦使用dplyr和嵌套的小标题在多个图形上获得多个回归线

时间:2019-01-24 15:04:59

标签: r dplyr nested tibble

我想将审查的数据模型与简单的ols模型进行比较。我有一个包含嵌套数据的小标题,我添加了两个不同的回归模型(用于检查数据的简单lm模型和tobit模型),并且使用了整洁和扫视功能提取参数估计值并将其放入自己的列。我还为结构添加了绘图功能。这是标题:

当我运行绘图功能时,77个图形中的每个图形都包含带有geom_point的单行中的适当点。但是,每个图形都包含其他图形回归线,而不是两个(每个回归模型一个)。而是两个模型乘以价值77的回归线。

这里是我将函数映射到tibble上的绘图功能:

 by_huc8_plots <- by_watershed_pvalue_slope %>%
  mutate(plot = map2(data, loc_major_basin, ~ ggplot(data = .x) +
                       geom_point(aes(x = y, y = combined_stube_conv100_conv60)) +
                       geom_abline(intercept = ols_intercept, 
                                   slope = ols_slope, color = 'blue') +
                       geom_abline(intercept = cens_intercept, 
                                   slope = cens_slope, color = 'green') +
                       ggtitle(.y) +
                       ylab('Clarity (cm)') +
                       xlab('Year')))

以下是带有两个模型的参数估计值的最终结果:

 by_huc8_plots
# A tibble: 76 x 11
   loc_major_basin data           ols_model ols_pvlaue ols_intercept ols_slope cens_model   cens_pval cens_intercept cens_slope plot  
             <int> <list>         <list>         <dbl>         <dbl>     <dbl> <list>           <dbl>          <dbl>      <dbl> <list>
 1         7080201 <tibble [3,32~ <S3: lm>   3.67e- 28        -1556.     0.791 <S3: survre~  0.               -1001.      0.515 <S3: ~
 2         7040002 <tibble [14,5~ <S3: lm>   1.20e- 95        -1492.     0.764 <S3: survre~  0.               -1006.      0.524 <S3: ~
 3         7010204 <tibble [6,69~ <S3: lm>   5.35e-206        -3606.     1.82  <S3: survre~  0.               -3591.      1.82  <S3: ~
 4         9020103 <tibble [1,10~ <S3: lm>   4.02e- 37        -3273.     1.65  <S3: survre~  0.               -3123.      1.57  <S3: ~
 5         9020104 <tibble [1,66~ <S3: lm>   1.39e- 28          903.    -0.445 <S3: survre~  0.                 912.     -0.450 <S3: ~
 6         9020303 <tibble [1,58~ <S3: lm>   3.69e- 38        -3867.     1.94  <S3: survre~  0.               -4303.      2.15  <S3: ~
 7         7010207 <tibble [3,57~ <S3: lm>   2.38e-135        -3578.     1.81  <S3: survre~  1.11e-16         -2043.      1.06  <S3: ~
 8         7010202 <tibble [2,73~ <S3: lm>   2.87e- 51        -2457.     1.25  <S3: survre~  5.20e- 2          -409.      0.240 <S3: ~
 9         7030005 <tibble [5,24~ <S3: lm>   3.36e-132        -3206.     1.62  <S3: survre~  0.               -1996.      1.03  <S3: ~
10         4010201 <tibble [1,41~ <S3: lm>   1.09e- 15         1217.    -0.578 <S3: survre~  0.                4763.     -2.34  <S3: ~
# ... with 66 more rows

有什么主意为什么ggplot代码会捕获所有77行参数估计值,而不是仅仅获取每行的估计值?

顺便说一句,我的第一个尝试是直接使用

索引到嵌套模型中
by_huc8_plots <- by_watershed_pvalue_slope %>%
  mutate(plot = map2(data, loc_major_basin, ~ ggplot(data = .x) +
                       geom_point(aes(x = y, y = combined_stube_conv100_conv60)) +
                       geom_abline(intercept = ols_model$coefficients[1], 
                                   slope = ols_model$coefficients[2], color = 'blue') +
                       geom_abline(intercept = cens_model$coefficients[1], 
                                   slope = cens_model$coefficients[2], color = 'green') +
                       ggtitle(.y) +
                       ylab('Clarity (cm)') +
                       xlab('Year')))

但这给了我一个错误:“列interceptslope必须是一维原子向量或列表”,这意味着我没有正确地索引到结构中,因此……系数,然后将其放在自己的列中”方法。

先谢谢了。

0 个答案:

没有答案