我想将审查的数据模型与简单的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')))
但这给了我一个错误:“列intercept
,slope
必须是一维原子向量或列表”,这意味着我没有正确地索引到结构中,因此……系数,然后将其放在自己的列中”方法。
先谢谢了。