Я хочу сравнить цензурированную модель данных с моделью прямого доступа. У меня есть таблица, которая содержит вложенные данные, я добавил две разные модели регрессии (простая модель lm и модель тобита для цензурированных данных), и я использовал функции tidy и glance, чтобы извлечь оценки параметров и поместить их в свои собственные столбцы. Я также и добавил функцию построения к структуре. Вот тиббл:
Когда я запускаю функцию построения графика, каждый из 77 графиков содержит правильные точки из одной строки с geom_point. Тем не менее, каждая фигура содержит линии регрессии любых других фигур, а не две (по одной от каждой модели регрессии). Но скорее обе модели умножают на 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_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
должны быть 1d атомными векторами или списками", что подразумевает, что я не индексирую в структуре должным образом ... следовательно, я "вытаскиваю коэффициенты и поставить их в свои колонки "подход.
Заранее спасибо.