Влияние промежуточных итогов на значимые тесты в таблицах expss - PullRequest
1 голос
/ 02 апреля 2020

Привет экспертам R / expss! Это дополнительный вопрос к этому -> Сложные таблицы с пакетом expss .

Я добавил промежуточные итоги к уже сложным таблицам, используя отличный пакет expss, и он работает хорошо для большинства задачи (счет, пропорции, средства ...). Тем не менее, я обнаружил, что оценки статистических тестов отличаются между одной таблицей без промежуточных итогов и точно такой же с промежуточными итогами. @Gregory Demin, ваши знания будут высоко оценены:)

Пример, иллюстрирующий мои слова, с использованием инертного набора данных, доступного в пакете наборов данных:

example <- infert %>%
  tab_significance_options(sig_level=0.2, keep="none", sig_labels=NULL, subtable_marks="greater", mode="append") %>%
  tab_cols(total(), education) %>%
  tab_cells(parity) %>%
  # block for cases
  tab_stat_cases(label="N", total_row_position="above", total_statistic="u_cases", total_label="TOTAL") %>% 
  tab_last_add_sig_labels() %>%
  # block for percent statistic - Subtable tests  
  tab_stat_cpct(label="%Col.", total_row_position="above", total_statistic="u_cpct", total_label="TOTAL") %>%
  tab_last_add_sig_labels() %>%
  tab_last_sig_cpct(label="T.1", compare_type="subtable") %>%
  # block for percent statistic - First column tests
  tab_stat_cpct(label="T.2", total_row_position="above", total_statistic="u_cpct", total_label="TOTAL") %>%
  tab_last_add_sig_labels() %>%
  tab_last_sig_cpct(compare_type="first_column", mode="replace") %>%
  tab_pivot(stat_position="inside_columns") %>%
  # converts NA to zero
  recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
example <- example[,-c(4,5)]
print(example)

Примечание: sig_level очень высокий (20%), чтобы проиллюстрировать эту конкретную проблему c, не волнуйтесь c :) Это отправная точка, и я в порядке с этим. Затем мы добавляем только промежуточные итоги (строка 5):

example2 <- infert %>%
  tab_significance_options(sig_level=0.2, keep="none", sig_labels=NULL, subtable_marks="greater", mode="append") %>%
  tab_cols(total(), education) %>%
  tab_cells(parity) %>%
  tab_subtotal_cells("#FIRST 3"=c(1,2,3),"#LAST 3"=c(4,5,6), position = "above") %>%
  # block for cases
  tab_stat_cases(label="N", total_row_position="above", total_statistic="u_cases", total_label="TOTAL") %>% 
  tab_last_add_sig_labels() %>%
  # block for percent statistic - Subtable tests  
  tab_stat_cpct(label="%Col.", total_row_position="above", total_statistic="u_cpct", total_label="TOTAL") %>%
  tab_last_add_sig_labels() %>%
  tab_last_sig_cpct(label="T.1", compare_type="subtable") %>%
  # block for percent statistic - First column tests
  tab_stat_cpct(label="T.2", total_row_position="above", total_statistic="u_cpct", total_label="TOTAL") %>%
  tab_last_add_sig_labels() %>%
  tab_last_sig_cpct(compare_type="first_column", mode="replace") %>%
  tab_pivot(stat_position="inside_columns") %>%
  # converts NA to zero
  recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
example2 <- example2[,-c(4,5)]
print(example2)

Я не знаю, что происходит, но результаты проверок значимости на этот раз не совпадают. Кроме того, я чувствую, что критерий значимости не рассчитывается по двум строкам промежуточных итогов. Любое понимание?

1 Ответ

1 голос
/ 03 апреля 2020

Для проверки значимости между процентами нам нужны случаи в общей статистике c. Таким образом, мы сделаем общую статистику c в два ряда. После всех манипуляций строки с общим количеством дел будут удалены. significance_cpct используйте знак # для определения общего количества строк. И # в промежуточных итогах приводит к неверным результатам.

С учетом всего вышесказанного:

example2 <- infert %>%
    tab_significance_options(sig_level=0.2, keep="none", sig_labels=NULL, subtable_marks="greater", mode="append") %>%
    tab_cols(total(), education) %>%
    tab_cells(parity) %>%
    tab_subtotal_cells("FIRST 3"=c(1,2,3),"LAST 3"=c(4,5,6), position = "above") %>%
    # block for cases
    tab_stat_cases(label="N", total_row_position="above", total_statistic="u_cases", total_label="TOTAL") %>% 
    tab_last_add_sig_labels() %>%
    # block for percent statistic - Subtable tests  
    # note additional total statistic
    tab_stat_cpct(label="%Col.", total_row_position="above", total_statistic= c("u_cases", "u_cpct"), 
                  total_label=c("TO DELETE", "TOTAL")) %>%
    tab_last_add_sig_labels() %>%
    tab_last_sig_cpct(label="T.1", compare_type="subtable") %>%
    # block for percent statistic - First column tests
    tab_stat_cpct(label="T.2", total_row_position="above", total_statistic= c("u_cases", "u_cpct"), 
                  total_label=c("TO DELETE", "TOTAL")) %>%
    tab_last_add_sig_labels() %>%
    tab_last_sig_cpct(compare_type="first_column", mode="replace") %>%
    tab_pivot(stat_position="inside_columns") %>%
    # drop row with TO_DELETE
    where(!grepl("TO DELETE", row_labels)) %>% 
    # converts NA to zero
    recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
example2 <- example2[,-c(4,5)]
print(example2)

ОБНОВЛЕНИЕ с net в столбцах:

data(infert)
example2 <- infert %>%
    apply_labels(
        education = "Education"
    ) %>% 
    tab_significance_options(sig_level=0.2, keep="none", sig_labels=NULL, subtable_marks="greater", mode="append") %>%
    tab_cols(total(), net(education, "LESS THAN 12 Y.O."=levels(education)[1:2])) %>%
    tab_cells(parity) %>%
    tab_subtotal_cells("FIRST 3"=c(1,2,3),"LAST 3"=c(4,5,6), position = "above") %>%
    # block for cases
    tab_stat_cases(label="N", total_row_position="above", total_statistic="u_cases", total_label="TOTAL") %>% 
    tab_last_add_sig_labels() %>%
    # block for percent statistic - Subtable tests  
    # note additional total statistic
    tab_stat_cpct(label="%Col.", total_row_position="above", total_statistic= c("u_cases", "u_cpct"), 
                  total_label=c("TO DELETE", "TOTAL")) %>%
    tab_last_add_sig_labels() %>%
    tab_last_sig_cpct(label="T.1", compare_type="subtable") %>%
    # block for percent statistic - First column tests
    tab_stat_cpct(label="T.2", total_row_position="above", total_statistic= c("u_cases", "u_cpct"), 
                  total_label=c("TO DELETE", "TOTAL")) %>%
    tab_last_add_sig_labels() %>%
    tab_last_sig_cpct(compare_type="first_column", mode="replace") %>%
    tab_pivot(stat_position="inside_columns") %>%
    # drop row with TO_DELETE
    where(!grepl("TO DELETE", row_labels)) %>% 
    # converts NA to zero
    recode(as.criterion(is.numeric) & is.na ~ 0, TRUE ~ copy)
example2 <- example2[,-c(4,5)]
print(example2)
...