Тесты Chisq и Fishers post hoc

#r #chi-squared #posthoc

#r #хи-квадрат #posthoc

Вопрос:

Я пытаюсь выполнить тесты post hoc как для chisq, так и для точного теста Фишера. Используемый мной фрейм данных имеет размер 2×3. Я выполнил тест chisq, который выдал значительное значение p, но когда я проверил ожидаемые значения, некоторые из них были меньше 5, поэтому я выполнил точный тест Fishers, который также вернул значение p меньше 0,05. Сейчас я пытаюсь проверить, какие взаимодействия являются значимыми, поэтому я попытался запустить chisq.posthoc.test попарно.фишер и тест fisher.multcomp, но возвращаемые значения вернулись странными, и я не уверен, что код, который я запускаю, неверен или что делать дальше. Я все еще относительно новичок в R, поэтому я немного застрял.

Если бы кто-нибудь мог помочь мне разобраться в том, что происходит и что я должен делать дальше, я был бы признателен за любую помощь.

 tally_spawnsl<-
  data%>%
  group_by(Spawn_Type, spawn_false,Lunar_Phase_Boxed) %>%
  filter(spawn_false=="TRUE")%>%
  tally()

print.data.frame(tally_spawnsl)

  Spawn_Type spawn_false Lunar_Phase_Boxed   n
1      Group        TRUE              Full 372
2      Group        TRUE              Half 134
3      Group        TRUE               New 348
4       Pair        TRUE              Full  20
5       Pair        TRUE              Half   3
6       Pair        TRUE               New   4

spawntypesl<- data.frame(
  expand.grid(lunarphase=c("Full","Half","New"),
              type=c("Group","Pair")),
  count=c(372,134,348,20,3,4))

spawntypesl

  lunarphase  type count
1       Full Group   372
2       Half Group   134
3        New Group   348
4       Full  Pair    20
5       Half  Pair     3
6        New  Pair     4

tablel<-xtabs(count~lunarphase type, data=spawntypesl)
tablel

          type
lunarphase Group Pair
      Full   372   20
      Half   134    3
      New    348    4

summary(tablel)
Call: xtabs(formula = count ~ lunarphase   type, data = spawntypesl)
Number of cases in table: 881 
Number of factors: 2 
Test for independence of all factors:
    Chisq = 10.236, df = 2, p-value = 0.005988
    Chi-squared approximation may be incorrect

chisq.test(tablel,simulate.p.value=TRUE)

    Pearson's Chi-squared test with simulated p-value (based on 2000 replicates)

data:  tablel
X-squared = 10.236, df = NA, p-value = 0.002999

chisq.test(tablel)$expected
          type
lunarphase    Group      Pair
      Full 379.9864 12.013621
      Half 132.8014  4.198638
      New  341.2123 10.787741

library(devtools)
devtools::install_github("ebbertd/chisq.posthoc.test")
chisq.posthoc.test::chisq.posthoc.test(tablel, method = "bonferroni")```

  Dimension     Value             Group               Pair
1      Full Residuals -3.14127171999929   3.14127171999929
2      Full  p values           0.0101*            0.0101*
3      Half Residuals 0.646538369476683 -0.646538369476691
4      Half  p values                 1                  1
5       New Residuals  2.70881379836813  -2.70881379836813
6       New  p values           0.0405*            0.0405*

####Fisher Test for lunar phase and spawn type####

fishertestl<-fisher.test(tablel)
fishertestl
    Fisher's Exact Test for Count Data

data:  tablel
p-value = 0.005426
alternative hypothesis: two.sided

fishertestl$p.value
[1] 0.005426258

fisher.multcomp(tablel, p.method = "none")

        Pairwise comparisons using Fisher's exact test for count data

data:  tablel

         Full   Half
Half 0.222207      -
New  0.002811 0.4062

P value adjustment method: none
  
 > chisq.posthoc.test::chisq.posthoc.test(tablel, method = "bonferroni")
  Dimension     Value             Group               Pair
1      Full Residuals -3.14127171999929   3.14127171999929
2      Full  p values           0.0101*            0.0101*
3      Half Residuals 0.646538369476683 -0.646538369476691
4      Half  p values                 1                  1
5       New Residuals  2.70881379836813  -2.70881379836813
6       New  p values           0.0405*            0.0405*
Warning message:
In chisq.test(x, ...) : Chi-squared approximation may be incorrect
> fisher.multcomp(tablel, p.method = "bonferroni")

        Pairwise comparisons using Fisher's exact test for count data

data:  tablel

         Full Half
Half 0.666620    -
New  0.008432    1

P value adjustment method: bonferroni
> chisq.posthoc.test::chisq.posthoc.test(tablel, method = "none")
  Dimension     Value             Group               Pair
1      Full Residuals -3.14127171999929   3.14127171999929
2      Full  p values           0.0017*            0.0017*
3      Half Residuals 0.646538369476683 -0.646538369476691
4      Half  p values            0.5179             0.5179
5       New Residuals  2.70881379836813  -2.70881379836813
6       New  p values           0.0068*            0.0068*
Warning message:
In chisq.test(x, ...) : Chi-squared approximation may be incorrect
> fisher.multcomp(tablel, p.method = "none")

        Pairwise comparisons using Fisher's exact test for count data

data:  tablel

         Full   Half
Half 0.222207      -
New  0.002811 0.4062

P value adjustment method: none
  

Комментарии:

1. для вычисления хи-квадрата используется корректировка значения p Бонферони, а для точного теста корректировка значения p не используется

2. @Nate Я внес коррективы в обе стороны для обоих тестов, но результаты по-прежнему выглядели некорректно. Я добавлю код и результаты, показывающие оба в редактировании выше.

3. не уверен, что правильно, но оба теста приводят к одному и тому же выводу, существенная разница в полном и новом, но не в половине.

4. @Nate Спасибо за вашу помощь! Я также проверил это, запустив график корреляции, чтобы показать, какие взаимодействия влияют на значение chisq