Prace dyplomowe · Regresja

Jak porównać regresję w dwóch grupach?

Krótka odpowiedź z przykładem w R: dlaczego dwie osobne regresje nie dowodzą różnicy, jak zbudować model z interakcją grupy, kiedy użyć testu z lub testu Chowa i jak opisać wynik.

Strona główna / Blog / Porównanie regresji w dwóch grupach
W skrócie: Nie porównuj istotności współczynników z dwóch osobnych regresji. Oszacuj jeden model na całej próbie z interakcją grupa × predyktor: współczynnik interakcji to różnica nachyleń z testem i 95% przedziałem ufności. W przykładzie wsparcie społeczne było istotne u kobiet (b = 1.09), a u mężczyzn nie (b = 0.30), ale różnica nachyleń nie była istotna, p = .227.

Dlaczego dwie osobne regresje nie wystarczą

Typowy rozdział wyników wygląda tak: regresja w grupie kobiet, regresja w grupie mężczyzn, a potem wniosek „wsparcie społeczne przewiduje satysfakcję z życia tylko u kobiet, bo tylko tam współczynnik jest istotny”. To rozumowanie nie zawiera żadnego testu różnicy między grupami. Gelman i Stern (2006) pokazują, że różnica między wynikiem „istotnym” i „nieistotnym” sama zwykle nie jest istotna statystycznie. Nieuwenhuis i in. (2011) przejrzeli 513 artykułów z czołowych czasopism neuronaukowych. Poprawną procedurę porównania dwóch efektów zastosowano w 78 z nich, a błędną, opartą na dwóch osobnych testach, w 79.

Pytanie „czy związek jest inny w dwóch grupach” to pytanie o moderację, w której moderatorem jest grupa. Odpowiada na nie interakcja grupa × predyktor w jednym modelu na całej próbie.

Przykład: wsparcie, stres i satysfakcja z życia

W badaniu 200 dorosłych (130 kobiet, 70 mężczyzn; dane symulowane) satysfakcję z życia (5–35) przewidywano stresem (0–40) i wsparciem społecznym (1–7). Predyktory wycentrowano na średniej całej próby (stres: M = 19.32, wsparcie: M = 4.87).

Krok 1 – osobne regresje. U kobiet wsparcie wiązało się z wyższą satysfakcją, b = 1.09, 95% CI [0.46, 1.72], p < .001. U mężczyzn związek był słabszy i nieistotny, b = 0.30, 95% CI [−0.86, 1.46], p = .604. Stres obniżał satysfakcję w obu grupach (b = −0.24 i −0.21). Na tym etapie wolno tylko opisać wyniki w grupach. Wniosku o różnicy jeszcze nie ma.

Krok 2 – jeden model z interakcjami. Do modelu na całej próbie wchodzą grupa, oba predyktory i ich iloczyny z grupą (satysfakcja ~ grupa * (stres_c + wsparcie_c)). Współczynnik interakcji to różnica nachyleń między grupami:

  • wsparcie: różnica −0.78, 95% CI [−2.06, 0.49], t(194) = −1.21, p = .227;
  • stres: różnica 0.04, 95% CI [−0.14, 0.21], p = .686.

Przedział ufności dla różnicy nachyleń wsparcia jest szeroki. Obejmuje i brak różnicy, i nachylenie u mężczyzn o dwa punkty mniejsze. Dane nie rozstrzygają więc, czy wsparcie działa inaczej u kobiet i mężczyzn (rysunek 1). Wniosek „tylko u kobiet” byłby nieuprawniony.

Nachylenia stresu i wsparcia społecznego u kobiet i mężczyzn z 95% przedziałami ufności: wsparcie b = 1.09 u kobiet i b = 0.30 u mężczyzn, ale test różnicy nachyleń daje p = .227; dla stresu b = −0.24 i −0.21, różnica p = .686
Rysunek 1. Nachylenia stresu i wsparcia społecznego w obu grupach z 95% przedziałami ufności, oszacowane w jednym modelu z interakcjami. Nad panelami – wartość p testu różnicy nachyleń. Obliczenia: R (dane symulowane).

Krok 3 – nachylenia w grupach. Po teście interakcji możesz podać nachylenie w każdej grupie z przedziałem ufności, np. funkcją emtrends() z pakietu emmeans. To odpowiednik prostych nachyleń z poradnika analiza moderacji krok po kroku, gdzie omawiamy też moderator ciągły i przedział Johnsona–Neymana.

Test z dla dwóch współczynników i test Chowa

Jeśli masz tylko wyniki dwóch osobnych regresji, np. z dwóch artykułów, różnicę współczynników sprawdzisz testem z: z = (b1 − b2) / √(SE1² + SE2²). Paternoster i in. (1998) pokazują, że to jest poprawny wzór, a popularna wersja z innym błędem standardowym zbyt łatwo odrzuca hipotezę zerową. W przykładzie z = 1.19, p = .236, czyli prawie tyle samo co w modelu z interakcją. Test z dopuszcza różną wariancję reszt w grupach.

Test Chowa sprawdza naraz, czy różni się cały model: stała i wszystkie nachylenia. To porównanie modelu wspólnego z modelem z pełnymi interakcjami. W przykładzie dał F(3, 194) = 6.34, p < .001, ale wynik ten wynika głównie z różnicy poziomu. Przy przeciętnym stresie i wsparciu mężczyźni mieli satysfakcję niższą o 2.57 punktu, 95% CI [−3.80, −1.34]. Sam test obu nachyleń był nieistotny, F(2, 194) = 0.82, p = .444. Dlatego zawsze sprawdzaj osobno różnicę poziomu i różnicę nachyleń.

Na co uważać

  • Porównuj b, a nie β ani R². W przykładzie R² wynosiło .188 u kobiet i .112 u mężczyzn, choć nachylenie stresu było prawie identyczne. Oba wskaźniki zależą od rozrzutu zmiennych w grupie. Więcej we wpisie współczynniki standaryzowane czy niestandaryzowane.
  • Sprawdź wariancję reszt w grupach. Tutaj odchylenia standardowe reszt były podobne (4.09 i 4.33). Gdy wyraźnie się różnią, a grupy są nierówne, użyj odpornych błędów standardowych HC3. W przykładzie dały dla interakcji wsparcia p = .213.
  • Zaplanuj liczebność. Brookes i in. (2004) pokazali, że badanie z mocą 80% dla efektu głównego ma tylko 29% mocy do wykrycia interakcji tej samej wielkości. Do takiej samej mocy potrzeba około czterech razy większej próby. Nieistotna interakcja w małej próbie to zwykle wynik nierozstrzygający (zob. analiza podgrup).
  • Przy skalach latentnych sprawdź pomiar. Porównanie ścieżek w SEM ma sens dopiero przy równoważnym pomiarze w grupach; procedurę opisujemy w poradniku inwariancja pomiaru krok po kroku.

Gdy porównujesz same korelacje, a nie nachylenia, użyj testu opisanego we wpisie jak porównać dwie korelacje. Interakcje zmiennej kategorialnej z ciągłą w klasycznym ujęciu opisują Aiken i West (1991). W modelu z interakcjami grupę koduje się zmienną 0/1 (dummy coding), a predyktory ilościowe warto wycentrować, żeby współczynnik grupy opisywał różnicę przy przeciętnych wartościach predyktorów.

Jak to opisać w pracy

Aby sprawdzić, czy związki stresu i wsparcia społecznego z satysfakcją z życia różnią się u kobiet (n = 130) i mężczyzn (n = 70), przeprowadzono regresję liniową na całej próbie z interakcjami płci z oboma predyktorami (predyktory wycentrowane). Przy przeciętnym poziomie stresu i wsparcia mężczyźni mieli niższą satysfakcję niż kobiety, b = −2.57, 95% CI [−3.80, −1.34], p < .001. Nachylenie wsparcia społecznego wynosiło 1.09, 95% CI [0.45, 1.73], u kobiet i 0.30, 95% CI [−0.80, 1.41], u mężczyzn, ale różnica nachyleń nie była istotna, b = −0.78, 95% CI [−2.06, 0.49], t(194) = −1.21, p = .227. Nie różniły się też nachylenia stresu, b = 0.04, 95% CI [−0.14, 0.21], p = .686. Dane nie pozwalają więc stwierdzić, że związek wsparcia z satysfakcją zależy od płci.

Wybór testu dla innych porównań grup ułatwia przewodnik po testach statystycznych. Jeśli promotor oczekuje osobnych regresji w grupach, możemy pomóc Ci uzasadnić model z interakcją w ramach analiz i konsultacji dla studentów.

Przykład reprodukowalny

Porównanie regresji w dwóch grupach w R

Kod odtwarza wszystkie liczby z tekstu i rysunku: osobne regresje w grupach, test z dla różnicy współczynników, model z interakcjami, test łączny (Chowa), test samych nachyleń, nachylenia w grupach z emmeans i błędy standardowe HC3.

Osobne modele, model z interakcjami i test Chowa

Dane wejściowe: 200 osób dorosłych, 130 kobiet i 70 mężczyzn (dane symulowane, set.seed(9)): satysfakcja z życia (5–35), stres (0–40) i wsparcie społeczne (1–7), predyktory wycentrowane na średniej całej próby.

Co odczytać: współczynniki i 95% CI w dwóch osobnych modelach, R² i SD reszt w grupach, wynik testu z, wiersze grupamężczyźni:… w modelu z interakcjami, F i Pr(>F) w dwóch tabelach anova(), nachylenia z emtrends() z 95% CI i ich różnicę oraz wiersze interakcji z błędami HC3.

R
# B191 – porównanie regresji w dwóch grupach: osobne modele a jeden model z interakcją
# Dane symulowane: 200 osób dorosłych (130 kobiet, 70 mężczyzn); satysfakcja z życia (5–35),
# stres (0–40) i wsparcie społeczne (1–7).
suppressPackageStartupMessages({library(emmeans); library(sandwich); library(lmtest)})
set.seed(9)
nk <- 130; nm <- 70
grupa <- factor(rep(c("kobiety", "mężczyźni"), c(nk, nm)), levels = c("kobiety", "mężczyźni"))
stres <- round(pmin(40, pmax(0, rnorm(nk + nm, 20, 7))))
wsparcie <- round(pmin(7, pmax(1, rnorm(nk + nm, 4.8, 1.1))), 1)
b_wsp <- ifelse(grupa == "kobiety", 1.0, 0.6)
sat <- 22 - 0.25 * stres + b_wsp * wsparcie + rnorm(nk + nm, 0, 4.2)
dane <- data.frame(grupa, stres, wsparcie, satysfakcja = round(pmin(35, pmax(5, sat))))
# predyktory wycentrowane na średniej całej próby: współczynnik grupy = różnica przy przeciętnym stresie i wsparciu
dane$stres_c <- dane$stres - mean(dane$stres)
dane$wsparcie_c <- dane$wsparcie - mean(dane$wsparcie)
round(c(M_stres = mean(dane$stres), M_wsparcie = mean(dane$wsparcie)), 2)
table(dane$grupa)

# 1. Dwie osobne regresje – tak NIE testujemy różnicy, ale tak zwykle zaczyna się błąd
m_k <- lm(satysfakcja ~ stres_c + wsparcie_c, data = subset(dane, grupa == "kobiety"))
m_m <- lm(satysfakcja ~ stres_c + wsparcie_c, data = subset(dane, grupa == "mężczyźni"))
round(cbind(summary(m_k)$coefficients, confint(m_k)), 4)
round(cbind(summary(m_m)$coefficients, confint(m_m)), 4)
round(c(R2_kobiety = summary(m_k)$r.squared, R2_mezczyzni = summary(m_m)$r.squared,
        SD_reszt_k = sigma(m_k), SD_reszt_m = sigma(m_m)), 3)

# 2. Test z dla różnicy dwóch współczynników z osobnych modeli (Paternoster i in., 1998)
b1 <- coef(m_k)["wsparcie_c"]; b2 <- coef(m_m)["wsparcie_c"]
se1 <- sqrt(vcov(m_k)["wsparcie_c", "wsparcie_c"]); se2 <- sqrt(vcov(m_m)["wsparcie_c", "wsparcie_c"])
z <- (b1 - b2) / sqrt(se1^2 + se2^2)
round(c(roznica = unname(b1 - b2), z = unname(z), p = 2 * pnorm(-abs(unname(z)))), 3)

# 3. Jeden model z interakcjami: grupa × każdy predyktor
m_pelny <- lm(satysfakcja ~ grupa * (stres_c + wsparcie_c), data = dane)
round(cbind(summary(m_pelny)$coefficients, confint(m_pelny)), 3)

# 4. Test łączny (test Chowa): czy cały model – stała i oba nachylenia – różni się między grupami?
m_wspolny <- lm(satysfakcja ~ stres_c + wsparcie_c, data = dane)
anova(m_wspolny, m_pelny)
# ... i czy różnią się same nachylenia (stała może się różnić)?
m_stala <- lm(satysfakcja ~ grupa + stres_c + wsparcie_c, data = dane)
anova(m_stala, m_pelny)

# 5. Nachylenia w każdej grupie z 95% CI i ich różnica (emmeans)
tr <- emtrends(m_pelny, ~ grupa, var = "wsparcie_c")
summary(tr, infer = TRUE)
pairs(tr, infer = TRUE)
summary(emtrends(m_pelny, ~ grupa, var = "stres_c"), infer = TRUE)

# 6. Różna wariancja reszt w grupach? Błędy standardowe HC3 dla interakcji
round(coeftest(m_pelny, vcov = vcovHC(m_pelny, type = "HC3"))[5:6, ], 3)
Wynik w R
   M_stres M_wsparcie 
     19.32       4.87 

  kobiety mężczyźni 
      130        70 
            Estimate Std. Error t value Pr(>|t|)   2.5 %  97.5 %
(Intercept)  22.3925     0.3594 62.3103    0e+00 21.6814 23.1036
stres_c      -0.2416     0.0551 -4.3834    0e+00 -0.3507 -0.1325
wsparcie_c    1.0866     0.3181  3.4156    9e-04  0.4571  1.7161
            Estimate Std. Error t value Pr(>|t|)   2.5 %  97.5 %
(Intercept)  19.8247     0.5215 38.0181   0.0000 18.7839 20.8656
stres_c      -0.2054     0.0722 -2.8428   0.0059 -0.3496 -0.0612
wsparcie_c    0.3025     0.5803  0.5213   0.6039 -0.8557  1.4607
  R2_kobiety R2_mezczyzni   SD_reszt_k   SD_reszt_m 
       0.188        0.112        4.086        4.328 
roznica       z       p 
  0.784   1.185   0.236 
                          Estimate Std. Error t value Pr(>|t|)  2.5 % 97.5 %
(Intercept)                 22.393      0.367  61.036    0.000 21.669 23.116
grupamężczyźni              -2.568      0.622  -4.127    0.000 -3.795 -1.341
stres_c                     -0.242      0.056  -4.294    0.000 -0.353 -0.131
wsparcie_c                   1.087      0.325   3.346    0.001  0.446  1.727
grupamężczyźni:stres_c       0.036      0.090   0.405    0.686 -0.140  0.213
grupamężczyźni:wsparcie_c   -0.784      0.647  -1.213    0.227 -2.059  0.491
Analysis of Variance Table

Model 1: satysfakcja ~ stres_c + wsparcie_c
Model 2: satysfakcja ~ grupa * (stres_c + wsparcie_c)
  Res.Df    RSS Df Sum of Sq    F    Pr(>F)    
1    197 3706.5                                
2    194 3375.6  3    330.95 6.34 0.0004017 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Analysis of Variance Table

Model 1: satysfakcja ~ grupa + stres_c + wsparcie_c
Model 2: satysfakcja ~ grupa * (stres_c + wsparcie_c)
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1    196 3403.9                           
2    194 3375.6  2    28.395 0.8159 0.4437
 grupa     wsparcie_c.trend    SE  df lower.CL upper.CL t.ratio p.value
 kobiety              1.087 0.325 194    0.446     1.73   3.346  0.0010
 mężczyźni            0.302 0.559 194   -0.800     1.41   0.541  0.5892

Confidence level used: 0.95 
 contrast            estimate    SE  df lower.CL upper.CL t.ratio p.value
 kobiety - mężczyźni    0.784 0.647 194   -0.491     2.06   1.213  0.2268

Confidence level used: 0.95 
 grupa     stres_c.trend     SE  df lower.CL upper.CL t.ratio p.value
 kobiety          -0.242 0.0563 194   -0.353  -0.1306  -4.294 <0.0001
 mężczyźni        -0.205 0.0696 194   -0.343  -0.0681  -2.950  0.0036

Confidence level used: 0.95 
                          Estimate Std. Error t value Pr(>|t|)
grupamężczyźni:stres_c       0.036      0.090   0.401    0.689
grupamężczyźni:wsparcie_c   -0.784      0.627  -1.250    0.213

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje lm() i anova() z pakietu stats); rysunek przygotowano w pakiecie ggplot2. W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  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/
  2. emmeans (wersja 2.0.2): Lenth, R. V., & Piaskowski, J. (2026). emmeans: Estimated marginal means, aka least-squares means [R package]. https://doi.org/10.32614/CRAN.package.emmeans
  3. sandwich (wersja 3.1.1): Zeileis, A., Köll, S., & Graham, N. (2020). Various versatile variances: An object-oriented implementation of clustered covariances in R. Journal of Statistical Software, 95(1), 1–36. https://doi.org/10.18637/jss.v095.i01
  4. lmtest (wersja 0.9.40): Zeileis, A., & Hothorn, T. (2002). Diagnostic checking in regression relationships. R News, 2(3), 7–10. https://CRAN.R-project.org/doc/Rnews/
  5. ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org

Najczęstsze pytania

Czy mogę porównać R² z regresji policzonych osobno w dwóch grupach?

Nie jako dowód, że związek jest inny. R² zależy od rozrzutu predyktorów i wyniku w każdej grupie. W przykładzie z tego wpisu wynosiło .188 u kobiet i .112 u mężczyzn, choć nachylenie stresu było w obu grupach prawie takie samo (−0.24 i −0.21). Różnice związków sprawdzaj testem interakcji grupa × predyktor.

Co to jest test Chowa i kiedy go użyć?

To test F, który sprawdza naraz, czy w dwóch grupach różnią się wszystkie współczynniki regresji: stała i nachylenia. Odpowiada porównaniu modelu wspólnego z modelem z pełnymi interakcjami z grupą. Bywa istotny tylko z powodu różnicy poziomu, dlatego różnicę samych nachyleń sprawdź osobnym testem.

Ile osób potrzeba, żeby wykryć różnicę nachyleń między grupami?

Zwykle kilka razy więcej niż do wykrycia samego związku. Brookes i in. (2004) pokazali, że badanie z mocą 80% dla efektu głównego ma tylko 29% mocy dla interakcji tej samej wielkości, a do takiej samej mocy potrzeba mniej więcej czterokrotnie większej próby.

Powiązane hasła

Przeczytaj też

Masz dwie regresje i nie wiesz, jak je porównać?

Zbudujemy model z interakcją, sprawdzimy różnice nachyleń i wyjaśnimy wynik tak, żebyś umiał(a) go opisać i obronić.

Oferta dla studentówWyceń analizę

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Aiken, L. S., & West, S. G. (1991). Multiple regression: Testing and interpreting interactions. Sage.
  2. 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
  3. Gelman, A., & Stern, H. (2006). The difference between “significant” and “not significant” is not itself statistically significant. The American Statistician, 60(4), 328–331. https://doi.org/10.1198/000313006x152649
  4. Nieuwenhuis, S., Forstmann, B. U., & Wagenmakers, E.-J. (2011). Erroneous analyses of interactions in neuroscience: A problem of significance. Nature Neuroscience, 14(9), 1105–1107. https://doi.org/10.1038/nn.2886
  5. Paternoster, R., Brame, R., Mazerolle, P., & Piquero, A. (1998). Using the correct statistical test for the equality of regression coefficients. Criminology, 36(4), 859–866. https://doi.org/10.1111/j.1745-9125.1998.tb01268.x

Cytowania BibTeX

@book{aiken1991multiple, author={Aiken, Leona S. and West, Stephen G.}, title={{Multiple regression: Testing and interpreting interactions}}, year={1991}, publisher={Sage}}
@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{gelman2006difference, author={Gelman, Andrew and Stern, Hal}, title={{The difference between “significant” and “not significant” is not itself statistically significant}}, journal={The American Statistician}, year={2006}, volume={60}, number={4}, pages={328--331}, doi={10.1198/000313006x152649}}
@article{nieuwenhuis2011erroneous, author={Nieuwenhuis, Sander and Forstmann, Birte U. and Wagenmakers, Eric-Jan}, title={{Erroneous analyses of interactions in neuroscience: A problem of significance}}, journal={Nature Neuroscience}, year={2011}, volume={14}, number={9}, pages={1105--1107}, doi={10.1038/nn.2886}}
@article{paternoster1998using, author={Paternoster, Raymond and Brame, Robert and Mazerolle, Paul and Piquero, Alex}, title={{Using the correct statistical test for the equality of regression coefficients}}, journal={Criminology}, year={1998}, volume={36}, number={4}, pages={859--866}, doi={10.1111/j.1745-9125.1998.tb01268.x}}
R