TL;DR

  • 386 научных единиц: 243 доклада, 141 постер и 2 работы в обоих форматах

  • География – в основном Европа (81%) и США (15%). Всего представлены работы из 34 страны. Почти половина работ (46%) – из Германии, Австрии или Швейцарии. Международные коллаборации встречаются в 31% работ

  • Главная тема – аффективная динамика, она есть в 47% работ. Дальше идут стресс (28%), когнитивные процессы (25%) и качество измерений (24%)

  • Темы собираются в три повестки: клиническую – 50% работ (депрессия, подростки, тревога, суицидальность), здоровье и старение – 53% (когнитивные процессы, физическая активность, одиночество, сон) и стресс в контексте работы и тела – 56%

  • Наиболее типичный дизайн EMA: 5 бипов, 14 дней и в сумме около 63 бипов на участника

  • m-Path – самая заметная платформа. Инструменты в абстрактах почти не описывают, платформа названа только в 10% работ. Среди названных у m-Path нет конкурентов – m-Path встречается в 13 работах, остальные встречаются по одному-три раза

  • Сенсорами в основном собирают акселерометрию (37%) и пульс с вариабельностью сердечного ритма (31%). Дальше идут аудио и речь (18%), GPS (17%) и логи смартфона (17%)

  • Исследовательские устройства (напр., movisens) идут вровень с потребительскими (напр., Apple Watch)

  • Работы с низким CR и неподтвердившимися гипотезами не дискриминируют. При этом они представлены не только среди постеров, но и среди очных докладов. Но уверенно говорить об этом сложно: CR сообщают 8% работ, а судьбу гипотез можно понять лишь у 6%

Введение

SAA Conference – ежегодная междунарожная конференция общества амбулаторной оценки (Society for Ambulatory Assessment). Её программа показывает срез поля: какие темы сейчас изучают, какие дизайны считаются нормой и какими инструментами пользуются

Подготовительный этап

Что было сделано:

  • Спарсены буклет абстрактов SAA 2026 (360 страниц) и 123 PDF-постера. Всё сведено в таблицу units.csv: одна строка – одна научная единица (доклад, постер или работа в обоих форматах)

  • Страны взяты из аффилиаций в буклете. Каждая страна считается у работы один раз, ведущей считается страна первой аффилиации

  • Темы, методы, платформы, устройства и сенсоры размечены по словарям, спорные случаи проверены вручную

  • Дизайн (бипы в день, дни, итоговая нагрузка) и подтверждение гипотез размечены вручную по текстам абстрактов и постеров. Если указан диапазон («5–6 раз в день»), бралась середина. У measurement burst дни всех волн суммировались. Если было несколько исследований, бралось первое

1. Кто и с чем участвовал

1.1. Объём постеров, абстрактов и совмещённого участия

fmt_all <- works %>%
  mutate(kind = factor(ru(format, lbl_format), levels = lbl_format)) %>%
  count(kind)

donut(fmt_all, ~kind, unname(pal[c("blue", "green", "orange")]),
      center = paste0("<b>", n_works, "</b><br>", plural(n_works, "единица", "единицы", "единиц")),
      title = "Научные единицы по формату участия", legend_title = "Формат")

1.2. Страны-участники

plot_geo(ctry_n, height = 440) %>%
  add_trace(type = "choropleth", locations = ~iso3, z = ~log10(n),
            text = ~paste0("<b>", name_ru, "</b><br>", hl("работ"), ": ", n, "<br>", hl("первая аффилиация"), ": ", lead),
            hoverinfo = "text", zmin = 0, zmax = log10(max(ctry_n$n)),
            colorscale = list(c(0, "#DCEBF5"), c(1, pal[["navy"]])),
            marker = list(line = list(color = "white", width = 0.5)),
            colorbar = list(title = list(text = "<b>Работ</b>", font = list(size = font$size)),
                            tickvals = log10(c(1, 3, 10, 30, 100)),
                            ticktext = c(1, 3, 10, 30, 100), len = 0.55, thickness = 14)) %>%
  chart_layout(title = "Число работ по странам аффилиаций",
               geo = list(scope = "world", projection = list(type = "natural earth"), showframe = FALSE,
                          showcoastlines = FALSE, showland = TRUE, landcolor = "#EEEEEE",
                          showcountries = TRUE, countrycolor = "white", bgcolor = "#FFFFFF"),
               margin = list(l = 0, r = 0, t = 90, b = 0),
               updatemenus = list(list(type = "buttons", direction = "right", x = 0.5, y = 1.02,
                                       xanchor = "center", yanchor = "bottom",
                                       buttons = list(
                                         list(method = "relayout", label = "Мир",
                                              args = list(list(geo.scope = "world"))),
                                         list(method = "relayout", label = "Европа",
                                              args = list(list(geo.scope = "europe")))))))
top15 <- ctry_n %>% slice_head(n = 20) %>% arrange(n)

plot_ly(top15, y = ~factor(name_ru, levels = name_ru), height = 500) %>%
  add_bars(x = ~lead, name = "В первой аффилиации", orientation = "h", marker = list(color = pal[["blue"]]),
           hovertemplate = paste0(hl("%{y}"), ": %{x}<br>в первой аффилиации<extra></extra>")) %>%
  add_bars(x = ~coauthor, name = "Только у соавторов", orientation = "h", marker = list(color = pal[["light"]]),
           # на светлой плашке plotly оставляет серый #444, с ним контраст ниже нормы – берём темнее
           hoverlabel = list(font = list(color = "#333333")),
           hovertemplate = paste0(hl("%{y}"), ": %{x}<br>только у соавторов<extra></extra>")) %>%
  chart_layout(title = "Топ-20 стран по числу работ", barmode = "stack",
               xaxis = list(title = "Число работ", gridcolor = grid_col),
               yaxis = list(title = "", automargin = TRUE),
               legend = list(title = list(text = "Где указана страна"), traceorder = "normal"))

1.3. Типы работ

type_plot <- type_fmt %>%
  filter(format != "both") %>%   # две работы в обоих форматах на этих графиках не показываем
  mutate(fmt = factor(ru(format, lbl_format), levels = rev(lbl_format[1:2])),
         group = ru(study_type, lbl_type)) %>%
  group_by(fmt) %>% mutate(share = n / sum(n)) %>% ungroup()

stacked_bars(type_plot, groups = lbl_type[1:3], colors = unname(pal[c("blue", "orange", "green")]),
             title = "Типы работ по формату участия", legend_title = "Тип работы")

1.4. Стадии исследований

stage_plot <- stage_fmt %>%
  filter(format != "both") %>%
  mutate(fmt = factor(ru(format, lbl_format), levels = rev(lbl_format[1:2])),
         group = ru(stage, lbl_stage)) %>%
  group_by(fmt) %>% mutate(share = n / sum(n)) %>% ungroup()

stacked_bars(stage_plot, groups = lbl_stage, colors = unname(pal[c("blue", "light", "orange")]),
             title = "Стадии исследований по формату участия", legend_title = "Стадия")

Итоги

Формат: SAA – в первую очередь конференция устных докладов: их 63% от всех работ, постеров – 37%. Совмещённое участие почти не встречается: в обоих форматах было всего 2 работы

География: это европейская конференция с сильным американским присутствием. Лидирует Германия: немецкая аффилиация есть у 145 работ (38%). За ней идут Нидерланды (23%), США (20%), Австрия (11%), Великобритания (10%), Швейцария (9%) и Бельгия (8%). Работы с первой аффилиацией за пределами Европы и Северной Америки единичны - 3%

Типы и стадии: 91% работ – эмпирические исследования, протоколы (17) есть только среди постеров. Почти у всех докладов результаты уже готовы (91%), в то же время 30% постеров пока на стадии планирования или предварительных результаов - постеры, по сути, площадка для обсуждения работ в процессе



2. Тематика работ

2.1. Частотность тем

plot_ly(topic_share, y = ~factor(topic, levels = topic), height = 720) %>%
  add_bars(x = ~talk_s, name = "Доклады", orientation = "h", marker = list(color = pal[["blue"]]),
           customdata = ~talk,
           hovertemplate = paste0(hl("%{y}"), "<br>", hl("доклады"), ": %{customdata} (%{x:.0%})<extra></extra>")) %>%
  add_bars(x = ~poster_s, name = "Постеры", orientation = "h", marker = list(color = pal[["green"]]),
           customdata = ~poster,
           hovertemplate = paste0(hl("%{y}"), "<br>", hl("постеры"), ": %{customdata} (%{x:.0%})<extra></extra>")) %>%
  chart_layout(title = "Доля работ с темой среди докладов и постеров", barmode = "group", bargap = 0.3,
               xaxis = list(title = "Доля работ своего формата", tickformat = ".0%", gridcolor = grid_col),
               yaxis = list(title = "", automargin = TRUE),
               # в горизонтальной группе первый след рисуется снизу, поэтому легенду разворачиваем
               legend = list(title = list(text = "Формат"), traceorder = "reversed"))

Примечание: у одной работы может быть несколько тем, поэтому доли в сумме больше 100%

2.2. Связанность тем

Что показывает связь: связь (лифт) показывает, во сколько раз две темы встречаются вместе чаще, чем при случайном сочетании. Синий – темы встречаются вместе чаще случайного, красный – реже

ord <- names(sort(freq, decreasing = TRUE))
H <- lift[ord, ord]
Cc <- C[ord, ord]
H[Cc < 3] <- NA
hover <- matrix(sprintf(paste0(hl("%s × %s"), "<br>", hl("вместе"), ": %s<br>", hl("лифт"), ": %s"),
                        ru(rownames(H), lbl_topic)[row(H)], ru(colnames(H), lbl_topic)[col(H)],
                        pl_v(Cc, "работа", "работы", "работ"), ifelse(is.na(H), "–", num(H))), nrow = nrow(H))

plot_ly(x = ru(ord, lbl_topic), y = ru(ord, lbl_topic), z = H, type = "heatmap", text = hover, hoverinfo = "text",
        zmin = 0, zmax = 4, colorscale = list(c(0, pal[["red"]]), c(0.25, "#FFFFFF"), c(1, pal[["blue"]])),
        colorbar = list(title = list(text = "<b>Лифт</b>", font = list(size = font$size)),
                        tickvals = c(0, 1, 2, 3, 4), ticktext = c("0", "1", "2", "3", "4+")),
        height = 760) %>%
  chart_layout(title = "Лифт для пар тем",
               xaxis = list(tickangle = -45, automargin = TRUE, title = "", dtick = 1, tickfont = list(size = 11)),
               yaxis = list(autorange = "reversed", automargin = TRUE, title = "", dtick = 1,
                            tickfont = list(size = 11)))

Примечание: пары, которые вместе встречаются меньше чем в 3 работах, не закрашены, т.к. лифт для них слишком шумный


Самые «притягивающиеся» пары тем

strong_pairs %>%
  transmute(`Тема 1` = cell_name(ru(from, lbl_topic)),
            `Тема 2` = cell_name(ru(to, lbl_topic)),
            `Работ вместе` = cell_tile(co),
            `Лифт` = cell_bar(lift, label = num(lift))) %>%
  table_html()
Тема 1 Тема 2 Работ вместе Лифт
Расстройства пищевого поведения Употребление ПАВ 7
7,48
Менструальный цикл Боль и соматика 5
4,34
Депрессия Тревога 33
3,14
Старение Климат и среда 5
2,73
Подростки и молодёжь Суицид и самоповреждение 5
2,54
Сон Старение 10
1,78
Сон Физическая активность 9
1,60
Когнитивные процессы Старение 20
1,59
Стресс Боль и соматика 16
1,56
Старение Одиночество и социальные связи 9
1,50

Итоги

Связи тем: аффективная динамика – сквозная тема конференции: она есть почти в каждой второй работе (47%) и сочетается практически со всем. Поэтому связи с ней почти не отличаются от случайных (лифт около 1). Сильнее всего темы притягиваются внутри клинических пар: депрессия и тревога встречаются вместе в 33 работах, это в 3,1 раза чаще случайного. Самые специфичные сочетания – небольшие, но плотные связки вроде расстройств пищевого поведения и употребления ПАВ

Кластеры: если сгруппировать темы по силе связей (алгоритм Louvain), получаются три большие исследовательские повестки. Первая – клиническая: депрессия, подростки, тревога, лечение и суицидальность. Вторая – здоровье и старение: когнитивные процессы, физическая активность, старение, одиночество и сон. Третья – стресс в контексте работы и тела: стресс, качество измерений, работа и учёба, боль и соматика. Психозы не образуют устойчивых связей ни с одной темой, а пищевые расстройства и ПАВ держатся отдельной парой

Доклады и постеры: Постеры заметно чаще посвящены работе и учёбе, стрессу, боли и соматике, а доклады – тревоге, депрессии и другим клиническим темам. Аффективная динамика и качество измерений одинаково популярны в обоих форматах

3. Методология

3.1. Методы

Выборка: метод указан в 357 работах (из 386)

mt_plot <- mt %>% arrange(n)
plot_ly(mt_plot, x = ~n / n_works, y = ~factor(label, levels = label), type = "bar", orientation = "h", height = 560,
        marker = list(color = pal[["blue"]]), text = ~paste0(n, " (", pct(n / n_works), ")"),
        textposition = "outside", cliponaxis = FALSE,
        hovertemplate = paste0(hl("%{y}"), ": %{text}<extra></extra>")) %>%
  chart_layout(title = "Методы, которыми пользуются в работах",
               xaxis = list(title = "Доля работ", tickformat = ".0%", gridcolor = grid_col, range = c(0, 0.75)),
               yaxis = list(title = "", automargin = TRUE), margin = list(r = 40))

Примечание: у работы может быть несколько методов, доли считаются от всех 386 работ

3.2. Дизайн: объём бипов в день

Выборка: частота опросов указана в 204 работах (из 386)

bpd <- design %>% filter(!is.na(beeps_per_day))
plot_ly(bpd %>% filter(beeps_per_day <= 26), x = ~beeps_per_day, type = "histogram", height = 420,
        xbins = list(start = 0.5, end = 26.5, size = 1),
        marker = list(color = pal[["blue"]], line = list(color = "white", width = 1)),
        hovertemplate = paste0(hl("%{x} бипов в день"), ": %{y} работ<extra></extra>")) %>%
  chart_layout(title = "Объём бипов в день",
               xaxis = list(title = "Бипов в день", dtick = 1, gridcolor = grid_col),
               yaxis = list(title = "Число работ", gridcolor = grid_col), bargap = 0.05,
               shapes = list(vline(s_bpd$med)),
               annotations = list(list(x = s_bpd$med, y = 1, yref = "paper", xanchor = "left", showarrow = FALSE,
                                       text = paste0(" медиана = ", fmtn(s_bpd$med)),
                                       font = list(color = pal[["red"]]))))

Примечание 1: значения меньше 1 – протоколы с опросом раз в несколько дней

Примечание 2: 1 работа с частотой больше 26 бипов в день на график не попала

3.3. Дизайн: количество недель сбора

Выборка: длительность указана в 251 работе (из 386)

wk_lab <- c("меньше 1", "1", "2", "3", "4", "5–8", "9–12", "больше 12")
wk <- design %>% filter(!is.na(days)) %>%
  mutate(cat = factor(wk_lab[findInterval(days, c(0, 7, 14, 21, 28, 35, 63, 91))], levels = wk_lab),
         exact = abs(days %% 7) < 1e-9) %>%
  count(cat, exact, .drop = FALSE)
wk_total <- wk %>% summarise(n = sum(n), .by = cat)

p <- plot_ly(height = 420)
for (g in c(TRUE, FALSE)) {
  p <- p %>%
    add_bars(data = wk %>% filter(exact == g), x = ~cat, y = ~n,
             name = if (g) "Кратна неделе" else "Не кратна",
             marker = list(color = if (g) pal[["blue"]] else pal[["light"]]),
             hovertemplate = paste0(hl("Недель"), ": %{x}<br>", hl("%{fullData.name}"), ": %{y} работ<extra></extra>"))
}
p %>%
  chart_layout(title = "Длительность сбора данных", barmode = "stack",
               xaxis = list(title = "Недель сбора"),
               yaxis = list(title = "Число работ", gridcolor = grid_col),
               legend = list(title = list(text = "Длительность"), traceorder = "normal"),
               # итог над столбиком: подписи сегментов в стопке не поместятся
               annotations = unname(Map(function(cat, n) {
                 list(x = cat, y = n, text = n, yanchor = "bottom", yshift = 2, showarrow = FALSE)
               }, as.character(wk_total$cat), wk_total$n)))

3.4. Дизайн: общее количество бипов на участника

Выборка: общая нагрузка известна для 195 работ (из 386)

tb <- design %>% filter(!is.na(total_beeps))
plot_ly(tb %>% filter(total_beeps <= 400), x = ~total_beeps, type = "histogram", height = 380,
        xbins = list(start = 0, end = 400, size = 20),
        marker = list(color = pal[["blue"]], line = list(color = "white", width = 1)),
        hovertemplate = paste0(hl("%{x} бипов"), ": %{y} работ<extra></extra>")) %>%
  chart_layout(title = "Всего бипов на участника",
               xaxis = list(title = "Всего бипов на участника", gridcolor = grid_col),
               yaxis = list(title = "Число работ", gridcolor = grid_col), bargap = 0.05,
               shapes = list(vline(s_tb$med)),
               annotations = list(list(x = s_tb$med, y = 1, yref = "paper", xanchor = "left", showarrow = FALSE,
                                       text = paste0(" медиана = ", fmtn(s_tb$med)),
                                       font = list(color = pal[["red"]]))))

Примечание: 1 работа с нагрузкой больше 400 бипов на график не попала

Итоги

design_stats <- tibble(
  param = c("Бипов в день", "Дней сбора", "Всего бипов на участника"),
  col = c("beeps_per_day", "days", "total_beeps")
) %>%
  mutate(s = map(col, ~ d_stat(design[[.x]])),
         n = map_int(s, "n"), med = map_dbl(s, "med"), q1 = map_dbl(s, "q1"), q3 = map_dbl(s, "q3"),
         min = map_dbl(s, "min"), max = map_dbl(s, "max"))

design_stats %>%
  transmute(`Параметр` = cell_name(param),
            `Медиана` = fmtn(med),
            # границы диапазона разносим пробелами, а тысячи оставляем слитно («1000»),
            # иначе «2–1 000» читается как два числа
            `Q1–Q3` = paste0(fmtn(q1, ""), " – ", fmtn(q3, "")),
            `Диапазон` = paste0(fmtn(min, ""), " – ", fmtn(max, "")),
            `<i>N</i>` = fmtn(n)) %>%
  table_html()
Параметр Медиана Q1–Q3 Диапазон N
Бипов в день 5 3 – 7 0,1 – 49 204
Дней сбора 14 7 – 28 2 – 1000 251
Всего бипов на участника 63 42 – 108 7 – 735 195

Методы: EMA/ESM – основа конференции, её используют 63% работ. Носимые устройства, пассивный сенсинг или GPS есть в 25% работ, чаще всего как дополнение к опросам: самоотчёт и сенсоры совмещают 19% работ

Дизайн: работы заметно стандартизированы. Медиана – 5 бипов в день (межквартильный размах 3–7), большинство (62%) исследований укладываются в диапазон от 4 до 10 бипов в день. Отдельный пик на одном бипе в день – это ежедневные дневники (15% работ). По длительности лидируют «круглые» сроки: у 64% работ сбор длится целое число недель. Самые популярные варианты – 2, 1 и 3 недели (21%, 15% и 12% работ соответственно), медиана – 2 недели

Общая нагрузка: половина работ (50%) укладывается в узкий коридор от 42 до 108 бипов на участника, медиана – 63

4. Инструментарий

4.1. Используемые платформы

Выборка: платформа указана в 39 работах (из 386)

plat_plot <- plat %>% arrange(n)
plot_ly(plat_plot, x = ~n, y = ~factor(value, levels = value), type = "bar", orientation = "h", height = 600,
        marker = list(color = ifelse(plat_plot$value == "PoEMA", pal[["orange"]], pal[["blue"]])),
        text = ~n, textposition = "outside", cliponaxis = FALSE,
        hovertemplate = paste0(hl("%{y}"), ": %{x} работ<extra></extra>")) %>%
  chart_layout(title = "Платформы для сбора данных",
               xaxis = list(title = "Число работ", gridcolor = grid_col, dtick = 2),
               yaxis = list(title = "", automargin = TRUE), margin = list(r = 30))

Примечание: «custom app» – собственные приложения без названия

4.2. Собираемые сигналы

Выборка: сигналы указаны в 98 работах (из 386)

sens_plot <- sens %>% arrange(n)
plot_ly(sens_plot, x = ~n, y = ~factor(label, levels = label), type = "bar", orientation = "h", height = 500,
        marker = list(color = pal[["green"]]), text = ~n, textposition = "outside", cliponaxis = FALSE,
        hovertemplate = paste0(hl("%{y}"), ": %{x} работ<extra></extra>")) %>%
  chart_layout(title = "Какие сигналы собирают сенсоры",
               xaxis = list(title = "Число работ", gridcolor = grid_col),
               yaxis = list(title = "", automargin = TRUE), margin = list(r = 30))

Примечание: логи смартфона – это экранное время, использование приложений, клавиатура и звонки

4.3. Используемые устройства

Выборка: модель или бренд устройства указаны в 33 работах (из 386)

devs_plot <- devs %>% arrange(n)
plot_ly(devs_plot, x = ~n, y = ~factor(value, levels = value), type = "bar", orientation = "h", height = 460,
        marker = list(color = pal[["blue"]]), text = ~n, textposition = "outside", cliponaxis = FALSE,
        hovertemplate = paste0(hl("%{y}"), ": %{x} работ<extra></extra>")) %>%
  chart_layout(title = "Какие устройства используют",
               xaxis = list(title = "Число работ", gridcolor = grid_col),
               yaxis = list(title = "", automargin = TRUE), margin = list(r = 30))

Итоги

Платформы: инструменты в абстрактах почти не описывают, платформа названа только в 10% работ. Среди названных у m-Path (13 работ) нет конкурентов: остальные платформы встречаются по одному-три раза

Сигналы: данные с датчиков упоминаются в 25% работ. Среди них лидируют акселерометрия (37%) и пульс с вариабельностью сердечного ритма (31%). На третьем-пятом местах: аудио и речь (18%), GPS (17%) и логи смартфона (17%) – сигналы цифрового фенотипирования, которые собираются без носимых устройств

Устройства: исследовательские (movisens, Empatica, ActiGraph) идут вровень с потребительскими (Garmin, Fitbit, Oura, Apple Watch) – но выборка слишком мала (33 работы), чтобы говорить об этом уверенно

5. Результаты: CR и неподтвержденные гипотезы

5.1. CR

Сompliance rate (CR) – доля отвеченных опросов от всех отправленных

set.seed(3)
cr_colors <- c("Доклад" = pal[["blue"]], "Постер" = pal[["green"]], "Доклад и постер" = pal[["grey"]],
               "PoEMA (наш доклад)" = pal[["orange"]])
cr_plot <- cr %>%
  mutate(group = ifelse(id == "T-230", "PoEMA (наш доклад)", ru(format, lbl_format)),
         y = runif(n(), -0.35, 0.35),
         hover = paste0("<b>", str_trunc(title, 70), "</b><br>CR = ", num(compliance_rate, 2),
                        ifelse(is.na(beeps_per_day), "",
                               paste0("<br>", pl_v(beeps_per_day, "бип", "бипа", "бипов"), " в день",
                                      ifelse(is.na(days), "", paste0(" × ", pl_v(days, "день", "дня", "дней")))))))
plot_ly(cr_plot, x = ~compliance_rate, y = ~y, color = ~group, colors = cr_colors, type = "scatter", mode = "markers",
        height = 400, marker = list(size = 14, opacity = 0.85, line = list(color = "white", width = 1)),
        text = ~hover, hoverinfo = "text") %>%
  chart_layout(title = "Compliance rate в работах, которые его сообщают",
               xaxis = list(title = "Compliance rate", tickformat = ".0%", range = c(0.1, 1.02), gridcolor = grid_col),
               yaxis = list(visible = FALSE, range = c(-0.6, 0.9), fixedrange = TRUE),
               shapes = list(vline(0.70, pal[["red"]]), vline(0.792, pal[["grey"]])),
               legend = list(title = list(text = "Формат")),
               annotations = list(
                 list(x = 0.70, y = 0.97, yref = "paper", xanchor = "right", showarrow = FALSE,
                      text = "0,70 – ниже появляются искажения ", font = list(color = pal[["red"]], size = 12)),
                 list(x = 0.792, y = 0.86, yref = "paper", xanchor = "right", showarrow = FALSE,
                      text = "0,79 – средний CR в метаанализе ", font = list(color = pal[["grey"]], size = 12))))

Примечание: красная линия – порог 0,70, ниже которого в результатах появляются заметные искажения (Mennis et al., 2018), серая – средний CR в метаанализе Wrzus & Neubauer (2023)

5.2. Доля подтверждённых гипотез

Данные приведены для того, чтобы понять как на конференции относятся к работам, в которых не подтвердились гипотезы

hyp_plot <- tibble(status = factor(lbl_hyp, levels = lbl_hyp), n = as.integer(hyp_n))
donut(hyp_plot, ~status, unname(pal[c("green", "orange", "red")]),
      center = paste0("<b>", nrow(hyp), "</b><br>", plural(nrow(hyp), "работа", "работы", "работ")),
      title = "Результаты проверки гипотез", legend_title = "Гипотезы") %>%
  style(textinfo = "value+percent")
hyp_fmt <- hyp %>%
  mutate(fmt = factor(ru(format, lbl_format), levels = rev(lbl_format[1:2])),
         group = ru(hypotheses, lbl_hyp)) %>%
  count(fmt, group) %>%
  group_by(fmt) %>% mutate(share = n / sum(n)) %>% ungroup()

stacked_bars(hyp_fmt, groups = lbl_hyp, colors = unname(pal[c("green", "orange", "red")]),
             title = "Результаты проверки гипотез по формату", legend_title = "Гипотезы", height = 280)

Итоги

Неудобные результаты не отклоняют: работы с низким CR и неподтвердившимися гипотезами на конференции есть, причём не только в постерной сессии. CR сообщают 29 работ, у 8 из них он ниже 0,70, минимум – 0,15. С гипотезами похожая картина: они не подтвердились у 6 работ из 25. Тем не менее вывод очень предварительный ввиду небольшой выборки: это всего 8% и 6% работ конференции. Но сам факт наличия таких работ обнадёживает