Słownik metodologiczny · Testy statystyczne

Analiza podgrup – dlaczego testuje się interakcję, a nie każdą podgrupę osobno?

„Program działa tylko u kobiet” to jeden z najczęstszych pozornych wniosków z badań interwencyjnych. Pokazujemy w R, skąd się bierze i jak poprawnie sprawdzić, czy efekt różni się między podgrupami.

Strona główna / Słownik / Analiza podgrup
W skrócie: Analiza podgrup sprawdza, czy efekt interwencji różni się między częściami próby. Robi się to testem interakcji grupa × cecha, a nie osobnymi testami w podgrupach. Podgrupy zaplanuj z góry i ogranicz ich liczbę.

Co to jest analiza podgrup?

Analiza podgrup (ang. subgroup analysis) sprawdza, czy efekt interwencji różni się między częściami próby, np. kobietami i mężczyznami, osobami młodszymi i starszymi albo pacjentami o różnym nasileniu objawów. Pytanie brzmi więc: czy efekt zależy od cechy uczestnika? To pytanie o interakcję albo moderację, a nie o to, w której podgrupie wynik jest istotny (Hopewell i in., 2025).

Jak to zrobić poprawnie

  1. Zaplanuj podgrupy z góry i wpisz je do rejestracji badania lub prerejestracji razem z oczekiwanym kierunkiem różnicy.
  2. Testuj interakcję grupa × cecha w jednym modelu, zamiast liczyć osobne testy w każdej podgrupie.
  3. Ogranicz liczbę podgrup. Przy 10 niezależnych testach na poziomie α = .05 szansa co najmniej jednego fałszywego alarmu wynosi 40.1% (zob. problem wielokrotnych porównań).

Brookes i in. (2004) pokazali w symulacjach, że osobne analizy w podgrupach często dają istotny efekt tylko w jednej z nich, a badanie z mocą 80% dla efektu ogólnego ma tylko 29% mocy dla interakcji tej samej wielkości.

Przykład

160 osób losowo przydzielono do programu redukcji lęku albo do kontroli; prawdziwy efekt był taki sam u kobiet i mężczyzn (dane symulowane). U kobiet program obniżył lęk o 2.55 pkt, p = .004, u mężczyzn o 0.99 pkt, p = .320. Kusi wniosek „program działa tylko u kobiet”, ale test interakcji tego nie potwierdza: b = 1.56, 95% CI [−1.04, 4.16], t(156) = 1.18, p = .239. W 5000 powtórzeniach takiego badania wynik istotny tylko w jednej podgrupie pojawił się w 50.5% prób, a istotna interakcja – w 5.0%.

Jak opisać w pracy

Zgodnie z planem analiz sprawdzono, czy efekt programu zależy od płci (interakcja grupa × płeć). Interakcja była nieistotna, b = 1.56, 95% CI [−1.04, 4.16], t(156) = 1.18, p = .239, więc nie ma podstaw, by twierdzić, że efekt programu różni się u kobiet i mężczyzn.

Na co uważać

  • „Istotne u kobiet, nieistotne u mężczyzn” to nie dowód różnicy. Różnicę testuje dopiero interakcja.
  • Nieistotna interakcja nie dowodzi braku różnicy, bo test interakcji ma małą moc. Podaj oszacowanie z przedziałem ufności.
  • Podgrupy wybrane po obejrzeniu danych opisz jako eksploracyjne; inaczej grozi to p-hackingiem. Więcej o korektach piszemy w poradniku poprawki na wielokrotne porównania.
Przykład reprodukowalny

Podgrupy a test interakcji w R

Kod porównuje osobne testy w podgrupach z testem interakcji w jednym badaniu, a potem powtarza badanie 5000 razy przy efekcie jednakowym w obu podgrupach.

Osobne testy w podgrupach i test interakcji

Dane wejściowe: 160 osób (80 kobiet, 80 mężczyzn), program albo kontrola, lęk po interwencji; efekt programu 1.8 pkt w obu podgrupach (dane symulowane).

Co odczytać: wartości p w podgrupach i dla interakcji oraz odsetek powtórzeń, w których istotny był wynik tylko w jednej podgrupie albo interakcja.

R
proba <- function(n = 160) {
  d <- data.frame(grupa = rep(0:1, n / 2), plec = rep(c("K", "M"), each = n / 2))
  d$lek <- 12 - 0.45 * 4 * d$grupa + rnorm(n, 0, 4)          # SD = 4, efekt = 1.8 pkt w obu podgrupach
  d
}
p_podgr <- function(d, s) summary(lm(lek ~ grupa, data = d[d$plec == s, ]))$coef["grupa", 4]
p_inter <- function(d) summary(lm(lek ~ grupa * plec, data = d))$coef["grupa:plecM", 4]
set.seed(33)
d <- proba()
round(c(p_kobiety = p_podgr(d, "K"), p_mezczyzni = p_podgr(d, "M"), p_interakcja = p_inter(d)), 3)
set.seed(167)
wyn <- replicate(5000, { d <- proba(); c(p_podgr(d, "K") < .05, p_podgr(d, "M") < .05, p_inter(d) < .05) })
round(100 * c(tylko_jedna_istotna = mean(wyn[1, ] != wyn[2, ]), interakcja_istotna = mean(wyn[3, ])), 1)
Wynik w R
   p_kobiety  p_mezczyzni p_interakcja 
       0.004        0.320        0.239 
tylko_jedna_istotna  interakcja_istotna 
               50.5                 5.0

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/

Najczęstsze pytania

Dlaczego nie wystarczy porównać wartości p w podgrupach?

Bo istotny wynik w jednej podgrupie i nieistotny w drugiej często pojawia się przy jednakowym efekcie, np. przez różną liczebność. O różnicy efektów rozstrzyga test interakcji grupa × cecha.

Ile podgrup można przeanalizować w jednym badaniu?

Jak najmniej i tylko zaplanowane z góry. Każda kolejna podgrupa zwiększa ryzyko fałszywego alarmu: przy 10 testach na poziomie .05 wynosi ono 40.1%.

Co zrobić z podgrupą wybraną już po obejrzeniu danych?

Opisz ją jako analizę eksploracyjną, podaj liczbę wszystkich sprawdzonych podgrup i traktuj wynik jako hipotezę do sprawdzenia w kolejnym badaniu, a nie jako wniosek.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Brookes, S. T., Whitely, E., Egger, M., Davey Smith, G., Mulheran, P. A., & Peters, T. J. (2004). Subgroup analyses in randomized trials: Risks of subgroup-specific analyses; power and sample size for the interaction test. Journal of Clinical Epidemiology, 57(3), 229–236. https://doi.org/10.1016/j.jclinepi.2003.08.009
  2. Hopewell, S., Chan, A.-W., Collins, G. S., Hróbjartsson, A., Moher, D., Schulz, K. F., Tunn, R., Aggarwal, R., Berkwits, M., Berlin, J. A., Bhandari, N., Butcher, N. J., Campbell, M. K., Chidebe, R. C. W., Elbourne, D., Farmer, A., Fergusson, D. A., Golub, R. M., Goodman, S. N., . . . Boutron, I. (2025). CONSORT 2025 explanation and elaboration: Updated guideline for reporting randomised trials. BMJ, 389, Article e081124. https://doi.org/10.1136/bmj-2024-081124 ● Otwarty dostęp

Cytowania BibTeX

@article{brookes2004subgroup, author={Brookes, Sara T. and Whitely, Elise and Egger, Matthias and Davey Smith, George and Mulheran, Paul A. and Peters, Tim J.}, title={{Subgroup analyses in randomized trials: Risks of subgroup-specific analyses; power and sample size for the interaction test}}, journal={Journal of Clinical Epidemiology}, year={2004}, volume={57}, number={3}, pages={229--236}, doi={10.1016/j.jclinepi.2003.08.009}}
@article{hopewell2025consort, author={Hopewell, Sally and Chan, An-Wen and Collins, Gary S. and Hróbjartsson, Asbjørn and Moher, David and Schulz, Kenneth F. and Tunn, Ruth and Aggarwal, Rakesh and Berkwits, Michael and Berlin, Jesse A. and Bhandari, Nita and Butcher, Nancy J. and Campbell, Marion K. and Chidebe, Runcie C. W. and Elbourne, Diana and Farmer, Andrew and Fergusson, Dean A. and Golub, Robert M. and Goodman, Steven N. and Hoffmann, Tammy C. and Ioannidis, John P. A. and Kahan, Brennan C. and Knowles, Rachel L. and Lamb, Sarah E. and Lewis, Steff and Loder, Elizabeth and Offringa, Martin and Ravaud, Philippe and Richards, Dawn P. and Rockhold, Frank W. and Schriger, David L. and Siegfried, Nandi L. and Staniszewska, Sophie and Taylor, Rod S. and Thabane, Lehana and Torgerson, David and Vohra, Sunita and White, Ian R. and Boutron, Isabelle}, title={{CONSORT 2025 explanation and elaboration: Updated guideline for reporting randomised trials}}, journal={BMJ}, year={2025}, volume={389}, eid={e081124}, doi={10.1136/bmj-2024-081124}}
R