Prace dyplomowe · Regresja

Regresja hierarchiczna krok po kroku

Czy wsparcie społeczne wyjaśnia satysfakcję z życia ponad stres i demografię? Pokazujemy całą analizę: plan bloków, wspólną próbę dla wszystkich kroków, ΔR² z testem F zmiany i f², interakcję w ostatnim kroku, tabelę APA i kod R.

Strona główna / Blog / Regresja hierarchiczna
W skrócie: Regresja hierarchiczna sprawdza, czy blok zmiennych wyjaśnia wynik ponad bloki wprowadzone wcześniej. Ustal kolejność bloków przed analizą i licz wszystkie kroki na tej samej próbie, a dla każdego kroku podaj R², ΔR² i test F zmiany. Wielkość przyrostu opisz przez f², a interakcję wprowadzaj w ostatnim kroku, po jej składnikach.

Na jakie pytanie odpowiada regresja hierarchiczna

Regresja hierarchiczna odpowiada na pytanie „czy X wyjaśnia wynik ponad to, co wyjaśniają inne zmienne?”. Predyktory wprowadzasz w blokach, w kolejności ustalonej przed analizą. Po każdym kroku sprawdzasz, o ile wzrosło R² (ΔR²) i czy ten przyrost jest istotny w teście F zmiany. Definicję, wzory i różnicę wobec metody krokowej omawia hasło regresja hierarchiczna. Ten wpis prowadzi przez całą analizę do pracy dyplomowej, od planu bloków po tabelę APA.

Model z ostatniego kroku to zwykła regresja wieloraka, więc obowiązują te same założenia i ta sama interpretacja współczynników co w poradniku regresja wieloraka krok po kroku. Nowe są trzy rzeczy: plan bloków, wspólna próba dla wszystkich kroków i raport przyrostów.

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

W badaniu symulowanym 240 osób studiujących wypełniło skale satysfakcji z życia (5–35), stresu (0–40) i wsparcia społecznego (1–7). Podało też wiek, płeć i kierunek studiów (humanistyczny, ścisły, medyczny). Dane są w pliku CSV. Hipotezy brzmią:

  • H1: wsparcie społeczne wiąże się z wyższą satysfakcją także po uwzględnieniu stresu i zmiennych demograficznych;
  • H2: wsparcie osłabia ujemny związek stresu z satysfakcją (efekt buforujący, czyli moderacja).

Krok 1. Zaplanuj bloki przed analizą

Każdy blok to osobne pytanie. Kolejność wynika z hipotez, a nie z wyników.

Plan bloków regresji hierarchicznej w przykładzie i pytania, na które odpowiadają
KrokDodane zmiennePytanie
1Wiek, płeć, kierunek studiówIle wyjaśniają zmienne kontrolne?
2StresCzy stres wyjaśnia satysfakcję ponad demografię?
3Wsparcie społeczneH1: czy wsparcie wnosi coś ponad stres i demografię?
4Stres × wsparcieH2: czy związek stresu zależy od wsparcia?

Zasady są proste. Zmienne kontrolne idą na początek, ale tylko te, które mają uzasadnienie (zob. czy kontrolować wiek i płeć). Zmienna, której wkład chcesz wykazać, idzie po zmiennych, „ponad” które ma działać. Iloczyn wchodzi zawsze po swoich składnikach, bo interakcję testuje się przy kontroli efektów głównych (Aiken i West, 1991). Zmienną kategorialną o trzech poziomach wprowadzasz w całości, jako dwie zmienne zero-jedynkowe w jednym bloku (zob. dummy coding).

Krok 2. Ustal jedną próbę dla wszystkich kroków

To najczęstszy błąd techniczny. W przykładzie 14 osób nie wypełniło skali wsparcia. Model z kroku 1 liczy się więc na 240 osobach, a model z kroku 3 już na 226. R przerywa wtedy porównanie komunikatem „models were not all fitted to the same size of dataset”. Gdy kroki liczysz na różnych osobach, ΔR² miesza wkład zmiennych ze zmianą próby.

Najprostsze rozwiązanie to wybranie osób z kompletem danych przed dopasowaniem pierwszego modelu. W przykładzie zostało 226 osób. Podaj tę liczbę w pracy i wyjaśnij, skąd się wzięła. Gdy braków jest więcej, sprawdź ich mechanizm (zob. braki danych MCAR, MAR, MNAR). Graham (2009) w praktycznym przeglądzie omawia dwa podstawowe rozwiązania: imputację wielokrotną i metody największej wiarygodności. Jak połączyć ΔR² z wielu imputacji, opisuje wpis imputacja wielokrotna i reguły Rubina.

Krok 3. Przygotuj predyktory do interakcji

Przed utworzeniem iloczynu odejmij od stresu i wsparcia ich średnie z próby analitycznej (M = 19.43 i 5.04). To centrowanie zmiennych. Dalal i Zickar (2012) pokazują, że centrowanie nie zmienia dopasowania modelu ani testu interakcji. Zmienia za to współczynniki niższego rzędu. Po centrowaniu współczynnik stresu w kroku 4 opisuje związek przy średnim wsparciu, a nie przy wsparciu równym zero, którego skala 1–7 w ogóle nie przewiduje.

Krok 4. Dopasuj modele i porównaj kroki

Cztery zagnieżdżone modele porównujesz jedną funkcją anova(m1, m2, m3, m4). Każdy wiersz to test F zmiany względem poprzedniego kroku.

Kolejne kroki regresji hierarchicznej satysfakcji z życia: R², skorygowane R², przyrost R², test F zmiany i f²
KrokR²Skoryg. R²ΔR²Test F zmianypf²
1. Demografia.011−.007.011F(4, 221) = 0.63.6410.011
2. + stres.134.115.123F(1, 220) = 33.77< .0010.142
3. + wsparcie.187.165.053F(1, 219) = 14.43< .0010.065
4. + stres × wsparcie.206.180.019F(1, 218) = 5.12.0250.023

Demografia nie wyjaśniała satysfakcji. Skorygowane R² jest nawet ujemne, bo kara za cztery predyktory przewyższa ich wkład. Stres dodał 12.3% wyjaśnionej wariancji. Wsparcie dodało kolejne 5.3% ponad stres i demografię, co potwierdza H1. Interakcja dodała 1.9%, co potwierdza H2. Rysunek 1 pokazuje, jak rośnie R² w kolejnych krokach.

Słupki R² po czterech krokach: krok 1 R² = .011, krok 2 dodaje ΔR² = .123 (R² = .134), krok 3 dodaje .053 (R² = .187), krok 4 dodaje .019 (R² = .206); niebieskie odcinki pokazują bootstrapowe 95% przedziały ufności przyrostów
Rysunek 1. Szara część słupka to R² z poprzedniego kroku, czerwona – przyrost ΔR². Niebieskie odcinki to bootstrapowe 95% CI przyrostów (2000 prób) odłożone od poziomu poprzedniego kroku. Obliczenia: R, pakiet boot (dane symulowane).

Krok 5. Oceń wielkość przyrostu

Istotność nie mówi, czy przyrost jest duży. Do opisu wielkości służy f² = ΔR² / (1 − R²pełny), czyli lokalna wielkość efektu bloku w kontekście całego modelu (Selya i in., 2012). Więcej o tej mierze znajdziesz w haśle f Cohena. Cohen (1992) przyjął umownie 0.02 jako efekt mały, 0.15 jako średni i 0.35 jako duży. W przykładzie wsparcie ma f² = 0.065, a interakcja 0.023. Oba efekty są więc małe.

ΔR² jest oszacowaniem z próby, więc warto podać jego niepewność. Prosty sposób to bootstrap. Losujesz osoby ze zwracaniem, dopasowujesz wszystkie kroki od nowa i liczysz przyrosty. Percentylowe 95% CI wyniosły [.049, .215] dla stresu, [.011, .125] dla wsparcia i [.000, .069] dla interakcji. ΔR² nie może być ujemne, więc dolna granica dla małego efektu przylega do zera. Szeroki przedział dla interakcji przypomina, że przy 226 osobach jej wielkość jest słabo oszacowana.

Krok 6. Zinterpretuj przyrosty zgodnie z kolejnością

ΔR² odpowiada na pytanie „ile blok wnosi ponad bloki wcześniejsze”, a nie „jak ważna jest zmienna”. Stres i wsparcie korelują (r = −.25), więc część wyjaśnianej przez nie wariancji jest wspólna. Ta część trafia do bloku, który wchodzi wcześniej. Kraha i in. (2012) pokazują, jak rozdzielić R² na części unikalne i wspólne. Gdyby wsparcie weszło przed stresem, dodałoby ΔR² = .095 zamiast .053, a stres – .081 zamiast .123. Pełne porównanie dwóch kolejności z rysunkiem znajdziesz w haśle o regresji hierarchicznej.

Wniosek do pracy: przyrost w kroku 3 opisuj dosłownie jako „wsparcie wyjaśniało dodatkowe 5.3% wariancji ponad stres i zmienne demograficzne”. Przyrost pojedynczej zmiennej w ostatnim kroku równa się kwadratowi jej korelacji semicząstkowej (sr²). To jej unikalny wkład w modelu pełnym. W przykładzie interakcja ma sr² = .019, czyli dokładnie tyle, ile wynosi ΔR² w kroku 4.

Krok 7. Rozłóż interakcję z ostatniego bloku

Istotny przyrost w kroku 4 mówi, że nachylenie stresu zależy od wsparcia. Kierunek pokażą efekty proste, czyli nachylenia stresu przy wybranych poziomach wsparcia. Przy niskim wsparciu (−1 SD) każdy punkt stresu wiązał się ze spadkiem satysfakcji o 0.30 punktu, 95% CI [−0.41, −0.18], t(218) = −5.05, p < .001. Przy średnim wsparciu spadek wynosił 0.20 punktu, 95% CI [−0.29, −0.11]. Przy wysokim wsparciu (+1 SD) nachylenie było bliskie zera, b = −0.10, 95% CI [−0.23, 0.02], t(218) = −1.59, p = .113. Ten wzór pasuje do efektu buforującego (Rysunek 2).

Wykres rozrzutu satysfakcji z życia względem stresu z trzema liniami przewidywanymi: przy niskim wsparciu nachylenie −0.30, przy średnim −0.20, przy wysokim −0.10; przy wysokim wsparciu linia jest najbardziej płaska
Rysunek 2. Przewidywana satysfakcja z życia a stres przy niskim (−1 SD), średnim i wysokim (+1 SD) wsparciu, z 95% CI; szare punkty to osoby badane. Pozostałe zmienne uśredniono. Obliczenia: R, pakiet emmeans (dane symulowane).

Wartości ±1 SD to tylko konwencja. Spiller i in. (2013) zalecają efekty proste przy wartościach moderatora ważnych merytorycznie. Gdy takich wartości nie ma, proponują przedział Johnsona–Neymana. Pełną procedurę opisuje wpis analiza moderacji krok po kroku.

Krok 8. Sprawdź założenia na modelu końcowym

Diagnostykę robisz raz, na modelu z ostatniego kroku. Sprawdź liniowość, stałość wariancji i normalność reszt oraz obserwacje wpływowe (zob. diagnostyka regresji w R). Williams i in. (2013) przypominają, że założenie normalności dotyczy błędów, a nie zmiennych (zob. normalność reszt czy zmiennych). W przykładzie współczynniki VIF w modelu bez iloczynu nie przekroczyły 1.07, więc współliniowość nie stanowi problemu. VIF dla iloczynu i jego składników bywa wysoki bez centrowania, ale to współliniowość techniczna, która nie zmienia testu interakcji (Dalal i Zickar, 2012).

Ile osób potrzebujesz

Moc liczysz dla testu F zmiany w bloku, który odpowiada na hipotezę. Przy N = 226, siedmiu predyktorach i jednym predyktorze w bloku efekt f² = 0.02 zostałby wykryty z mocą tylko .562. Do mocy .80 potrzeba 395 osób przy f² = 0.02 i 159 osób przy f² = 0.05 (rozkład F niecentralny, kod niżej). Interakcje bywają małe, więc planuj próbę pod nie, a nie pod efekty główne. Ogólne reguły omawia wpis ile predyktorów może mieć regresja, a obliczenia ułatwia kalkulator liczebności próby.

Krok 9. Przygotuj tabelę i opis APA

Petrocelli (2003), analizując artykuły z psychologii poradnictwa, opisał typowe problemy w raportowaniu regresji hierarchicznej i sposoby ich uniknięcia. Najprostszy sposób, by ich uniknąć, to podać dla każdego kroku R², ΔR² i test F zmiany, a dla modelu końcowego współczynniki z przedziałami ufności. Tabela 1 łączy obie części w jednym zestawieniu. Inny układ, ze współczynnikami w każdym kroku, pokazuje hasło tabela regresji w APA.

Tabela 1

Regresja hierarchiczna satysfakcji z życia: przyrosty R² w czterech krokach i współczynniki modelu końcowego

Krok i predyktorb [95% CI]SEβsr2p
Panel A. Przyrosty wyjaśnionej wariancji
Krok 1: wiek, płeć, kierunekR2 = .011, ΔR2 = .011F(4, 221) = 0.63.641
Krok 2: stresR2 = .134, ΔR2 = .123F(1, 220) = 33.77< .001
Krok 3: wsparcie społeczneR2 = .187, ΔR2 = .053F(1, 219) = 14.43< .001
Krok 4: stres × wsparcieR2 = .206, ΔR2 = .019F(1, 218) = 5.12.025
Panel B. Model końcowy (krok 4)
Wiek−0.04 [−0.29, 0.20]0.12−0.02.000.713
Płeć (mężczyzna)0.90 [−0.29, 2.09]0.600.19.008.136
Kierunek ścisły (vs humanistyczny)0.55 [−0.80, 1.91]0.690.12.002.422
Kierunek medyczny (vs humanistyczny)0.41 [−1.02, 1.83]0.720.08.001.575
Stres (centrowany)−0.20 [−0.29, −0.11]0.04−0.28.073< .001
Wsparcie społeczne (centrowane)1.07 [0.51, 1.62]0.280.24.052< .001
Stres × wsparcie0.09 [0.01, 0.17]0.040.14.019.025

Uwaga. N = 226 (osoby z kompletem danych). W panelu A test F dla kroku 1 porównuje model z modelem pustym, a dla kroków 2–4 jest testem F zmiany. Model końcowy: R2 = .206, skorygowane R2 = .180, F(7, 218) = 8.06, p < .001. β obliczono po standaryzacji zmiennych ilościowych; dla płci i kierunku β to różnica w odchyleniach standardowych satysfakcji. sr2 – kwadrat korelacji semicząstkowej. Dane symulowane.

Kolumna β wymaga ostrożności przy zmiennych zero-jedynkowych i iloczynach. Kiedy podawać β, a kiedy b, wyjaśnia wpis współczynniki standaryzowane czy niestandaryzowane.

Aby sprawdzić, czy wsparcie społeczne wiąże się z satysfakcją z życia ponad stres i zmienne demograficzne oraz czy osłabia związek stresu z satysfakcją, przeprowadzono czterostopniową regresję hierarchiczną (N = 226 osób z kompletem danych; stres i wsparcie wycentrowano). Wiek, płeć i kierunek studiów wprowadzone w kroku 1 nie wyjaśniały satysfakcji, R² = .011, F(4, 221) = 0.63, p = .641. Stres dodany w kroku 2 zwiększył wyjaśnioną wariancję o 12.3%, ΔR² = .123, F(1, 220) = 33.77, p < .001. Wsparcie społeczne w kroku 3 wyjaśniło dodatkowe 5.3% wariancji, ΔR² = .053, 95% CI [.011, .125], F(1, 219) = 14.43, p < .001, f² = 0.065. Interakcja stresu i wsparcia w kroku 4 dodała 1.9% wariancji, ΔR² = .019, F(1, 218) = 5.12, p = .025, f² = 0.023. Model końcowy wyjaśniał 20.6% wariancji satysfakcji, R² = .206, skorygowane R² = .180, F(7, 218) = 8.06, p < .001. Przy niskim wsparciu (−1 SD) wyższy stres wiązał się z niższą satysfakcją, b = −0.30, 95% CI [−0.41, −0.18], p < .001, a przy wysokim wsparciu (+1 SD) związek był słaby i nieistotny, b = −0.10, 95% CI [−0.23, 0.02], p = .113 (Tabela 1).
Przykład reprodukowalny

Regresja hierarchiczna w R

Kod odtwarza wszystkie liczby z tekstu, tabel i rysunków. Na początku symuluje dane i zapisuje plik CSV do pobrania; ze swoimi danymi zacznij od wczytania pliku (read.csv()) i kroku 1. Bootstrap (2000 prób) trwa kilkanaście sekund. Potrzebne pakiety: car, emmeans i boot.

Cztery kroki, ΔR², bootstrap, efekty proste i moc

Dane wejściowe: 240 osób studiujących: satysfakcja z życia (5–35), wiek, płeć, kierunek studiów, stres (0–40), wsparcie społeczne (1–7, 14 braków); dane symulowane, set.seed(1184).

Co odczytać: komunikat o różnych N, liczebność próby analitycznej, M i SD, korelacje, tabelę kroków (R2, dR2, F_zm, p, f2), bootstrapowe CI przyrostów, test modelu końcowego, współczynniki z CI, β, sr², VIF, nachylenia stresu przy trzech poziomach wsparcia, ΔR² przy odwróconej kolejności bloków i moc testu F zmiany.

R
# B184 – regresja hierarchiczna w czterech krokach: wspólna próba, ΔR², test F zmiany, f², bootstrap,
# interakcja w ostatnim bloku, efekty proste, kolejność bloków, moc dla ΔR² (dane symulowane, set.seed(1184)).
# 240 osób studiujących: satysfakcja z życia (5–35), wiek, płeć, kierunek studiów, stres (0–40),
# wsparcie społeczne (1–7; 14 osób nie wypełniło tej skali).
suppressPackageStartupMessages({ library(car); library(emmeans); library(boot) })
set.seed(1184)
n <- 240
wiek <- round(runif(n, 19, 27))
plec <- factor(sample(c("kobieta", "mężczyzna"), n, TRUE, prob = c(.65, .35)))
kierunek <- factor(sample(c("humanistyczny", "ścisły", "medyczny"), n, TRUE),
                   levels = c("humanistyczny", "ścisły", "medyczny"))
stres <- round(pmin(pmax(rnorm(n, 19, 6.5), 0), 40))
wsparcie <- round(pmin(pmax(5.0 - 0.045 * (stres - 19) + rnorm(n, 0, 1.0), 1), 7), 1)
satysf <- 23 + 0.10 * (wiek - 23) + 0.4 * (plec == "mężczyzna") - 0.6 * (kierunek == "medyczny") -
  0.22 * (stres - 19) + 1.35 * (wsparcie - 5) + 0.09 * (stres - 19) * (wsparcie - 5) + rnorm(n, 0, 4.3)
satysf <- round(pmin(pmax(satysf, 5), 35))
wsparcie[sample(n, 14)] <- NA
dane <- data.frame(id = 1:n, wiek, plec, kierunek, stres, wsparcie, satysf)
write.csv(dane, "../regresja-hierarchiczna-dane-przyklad.csv", row.names = FALSE, na = "")

# Krok 1. Pułapka: modele dopasowane osobno mają różne N, więc nie można ich porównać
m1_zle <- lm(satysf ~ wiek + plec + kierunek, data = dane)
m3_zle <- lm(satysf ~ wiek + plec + kierunek + stres + wsparcie, data = dane)
c(N_krok1 = nobs(m1_zle), N_krok3 = nobs(m3_zle))
tryCatch(anova(m1_zle, m3_zle), error = function(e) conditionMessage(e))

# Krok 2. Jedna próba dla wszystkich kroków + centrowanie predyktorów interakcji (średnia z tej próby)
d <- na.omit(dane)
nrow(d)
d$stres_c <- d$stres - mean(d$stres)
d$wsparcie_c <- d$wsparcie - mean(d$wsparcie)
round(sapply(d[c("satysf", "stres", "wsparcie", "wiek")], function(x) c(M = mean(x), SD = sd(x))), 2)
round(c(r_stres_wsparcie = cor(d$stres, d$wsparcie), r_stres_satysf = cor(d$stres, d$satysf),
        r_wsparcie_satysf = cor(d$wsparcie, d$satysf)), 2)

# Krok 3. Cztery modele zagnieżdżone (bloki ustalone przed analizą)
m1 <- lm(satysf ~ wiek + plec + kierunek, data = d)                       # blok 1: zmienne kontrolne
m2 <- update(m1, . ~ . + stres_c)                                           # blok 2: stres
m3 <- update(m2, . ~ . + wsparcie_c)                                        # blok 3: wsparcie (H1)
m4 <- update(m3, . ~ . + stres_c:wsparcie_c)                                # blok 4: interakcja (H2)
modele <- list(m1, m2, m3, m4)
R2 <- sapply(modele, function(m) summary(m)$r.squared)
R2_adj <- sapply(modele, function(m) summary(m)$adj.r.squared)
porownanie <- anova(m1, m2, m3, m4)                                          # test F zmiany dla kroków 2–4
F1 <- summary(m1)$fstatistic                                                 # krok 1 porównany z modelem pustym
kroki <- data.frame(krok = 1:4, R2 = R2, R2_skor = R2_adj, dR2 = c(R2[1], diff(R2)),
                    F_zm = c(F1[["value"]], porownanie$F[-1]), df1 = c(F1[["numdf"]], porownanie$Df[-1]),
                    df2 = sapply(modele, df.residual),
                    p = c(pf(F1[["value"]], F1[["numdf"]], F1[["dendf"]], lower.tail = FALSE), porownanie$`Pr(>F)`[-1]))
kroki$f2 <- kroki$dR2 / (1 - kroki$R2)                                      # f² dla przyrostu w danym kroku
print(within(kroki, { R2 <- round(R2, 3); R2_skor <- round(R2_skor, 3); dR2 <- round(dR2, 3)
                      F_zm <- round(F_zm, 2); f2 <- round(f2, 3); p <- signif(p, 3) }), row.names = FALSE)

# Krok 4. Bootstrap: 95% CI dla ΔR² w krokach 2–4 (2000 prób, percentylowy)
dR2_boot <- function(dd, i) {
  b <- dd[i, ]
  r <- sapply(list(formula(m1), formula(m2), formula(m3), formula(m4)),
              function(f) summary(lm(f, data = b))$r.squared)
  diff(r)
}
set.seed(2184)
bt <- boot(d, dR2_boot, R = 2000)
round(t(sapply(1:3, function(j) c(krok = j + 1, dR2 = bt$t0[j], boot.ci(bt, type = "perc", index = j)$percent[4:5]))), 4)

# Krok 5. Model końcowy: test całego modelu, b z 95% CI, β (zmienne ilościowe standaryzowane), sr² i VIF
F4 <- summary(m4)$fstatistic
round(F4, 2)
signif(pf(F4[["value"]], F4[["numdf"]], F4[["dendf"]], lower.tail = FALSE), 3)
koef <- cbind(round(cbind(b = coef(m4), confint(m4), SE = coef(summary(m4))[, 2],
                          t = coef(summary(m4))[, 3]), 2), p = signif(coef(summary(m4))[, 4], 3))
koef
dz <- transform(d, satysf = scale(satysf)[, 1], wiek = scale(wiek)[, 1],
                stres_c = scale(stres_c)[, 1], wsparcie_c = scale(wsparcie_c)[, 1])
round(coef(update(m4, data = dz))[-1], 2)                                   # β
round(coef(summary(m4))[-1, 3]^2 * (1 - R2[4]) / df.residual(m4), 3)        # sr² = t²(1 − R²)/df
round(vif(m3), 2)                                                         # VIF bez iloczynu

# Krok 6. Efekty proste: nachylenie stresu przy niskim (−1 SD), średnim i wysokim (+1 SD) wsparciu
sd_w <- sd(d$wsparcie_c)
summary(emtrends(m4, ~ wsparcie_c, var = "stres_c", at = list(wsparcie_c = c(-sd_w, 0, sd_w))), infer = TRUE)

# Krok 7. Kolejność ma znaczenie: wsparcie wprowadzone przed stresem
m2b <- update(m1, . ~ . + wsparcie_c)
round(c(dR2_wsparcie_jako_krok2 = summary(m2b)$r.squared - R2[1], dR2_wsparcie_jako_krok3 = R2[3] - R2[2],
        dR2_stres_jako_krok3 = R2[3] - summary(m2b)$r.squared, dR2_stres_jako_krok2 = R2[2] - R2[1]), 3)

# Krok 8. Moc testu F zmiany (rozkład F niecentralny, λ = f² × N): blok 1 predyktora w modelu z 7 predyktorami
moc <- function(f2, N, m = 1, p = 7, alfa = .05) {
  df2 <- N - p - 1
  pf(qf(1 - alfa, m, df2), m, df2, ncp = f2 * N, lower.tail = FALSE)
}
round(c(moc_f2_02_N226 = moc(.02, 226), moc_f2_15_N226 = moc(.15, 226)), 3)
N <- 20:1000; c(N_80proc_f2_02 = min(N[moc(.02, N) >= .80]), N_80proc_f2_05 = min(N[moc(.05, N) >= .80]))
Wynik w R
N_krok1 N_krok3 
    240     226 
[1] "models were not all fitted to the same size of dataset"
[1] 226
   satysf stres wsparcie  wiek
M   22.43 19.43     5.04 22.91
SD   4.79  6.74     1.06  2.38
 r_stres_wsparcie    r_stres_satysf r_wsparcie_satysf 
            -0.25             -0.35              0.31 
 krok    R2 R2_skor   dR2  F_zm df1 df2        p    f2
    1 0.011  -0.007 0.011  0.63   4 221 6.41e-01 0.011
    2 0.134   0.115 0.123 33.77   1 220 2.18e-08 0.142
    3 0.187   0.165 0.053 14.43   1 219 1.88e-04 0.065
    4 0.206   0.180 0.019  5.12   1 218 2.46e-02 0.023
     krok    dR2              
[1,]    2 0.1231 0.0489 0.2146
[2,]    3 0.0526 0.0110 0.1253
[3,]    4 0.0187 0.0003 0.0693
 value  numdf  dendf 
  8.06   7.00 218.00 
[1] 1.03e-08
                       b 2.5 % 97.5 %   SE     t        p
(Intercept)        22.99 17.39  28.58 2.84  8.10 3.91e-14
wiek               -0.04 -0.29   0.20 0.12 -0.37 7.13e-01
plecmężczyzna       0.90 -0.29   2.09 0.60  1.50 1.36e-01
kierunekścisły      0.55 -0.80   1.91 0.69  0.81 4.22e-01
kierunekmedyczny    0.41 -1.02   1.83 0.72  0.56 5.75e-01
stres_c            -0.20 -0.29  -0.11 0.04 -4.48 1.22e-05
wsparcie_c          1.07  0.51   1.62 0.28  3.80 1.91e-04
stres_c:wsparcie_c  0.09  0.01   0.17 0.04  2.26 2.46e-02
              wiek      plecmężczyzna     kierunekścisły   kierunekmedyczny            stres_c 
             -0.02               0.19               0.12               0.08              -0.28 
        wsparcie_c stres_c:wsparcie_c 
              0.24               0.14 
              wiek      plecmężczyzna     kierunekścisły   kierunekmedyczny            stres_c 
             0.000              0.008              0.002              0.001              0.073 
        wsparcie_c stres_c:wsparcie_c 
             0.052              0.019 
           GVIF Df GVIF^(1/(2*Df))
wiek       1.01  1            1.00
plec       1.00  1            1.00
kierunek   1.01  2            1.00
stres_c    1.07  1            1.03
wsparcie_c 1.07  1            1.03
 wsparcie_c stres_c.trend     SE  df lower.CL upper.CL t.ratio p.value
      -1.06        -0.296 0.0586 218   -0.412  -0.1804  -5.048 <0.0001
       0.00        -0.199 0.0445 218   -0.287  -0.1116  -4.477 <0.0001
       1.06        -0.103 0.0646 218   -0.230   0.0247  -1.589  0.1134

Results are averaged over the levels of: plec, kierunek 
Confidence level used: 0.95 
dR2_wsparcie_jako_krok2 dR2_wsparcie_jako_krok3    dR2_stres_jako_krok3    dR2_stres_jako_krok2 
                  0.095                   0.053                   0.081                   0.123 
moc_f2_02_N226 moc_f2_15_N226 
         0.562          1.000 
N_80proc_f2_02 N_80proc_f2_05 
           395            159 

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3; rysunki 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. car (wersja 3.1.5): Fox, J., & Weisberg, S. (2019). An R companion to applied regression (3rd ed.). Sage. https://www.john-fox.ca/Companion/
  3. 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
  4. boot (wersja 1.3-32): Canty, A., & Ripley, B. (2025). boot: Bootstrap functions [R package]. https://doi.org/10.32614/CRAN.package.boot
  5. ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org

Najczęstsze błędy w regresji hierarchicznej

  • Różne N w kolejnych krokach. Ustal próbę analityczną przed pierwszym modelem.
  • Kolejność bloków dobrana po obejrzeniu wyników. Przestawianie bloków, aż „Twoja” zmienna da istotne ΔR², to forma p-hackingu.
  • Mylenie z metodą krokową. W metodzie krokowej kolejność wybiera algorytm, co zwiększa szansę fałszywej istotności i słabo się replikuje (Thompson, 1995).
  • Interakcja bez efektów głównych w poprzednim kroku. Iloczyn testuje się przy kontroli jego składników.
  • Raport samego modelu końcowego. Bez ΔR² i testu F zmiany nie widać odpowiedzi na hipotezę.
  • „Wsparcie wyjaśnia 5.3% satysfakcji”. Poprawnie: 5.3% ponad stres i demografię.

Jeśli chcesz, żeby ktoś sprawdził plan bloków, kodowanie i opis wyników w Twojej pracy, możesz skorzystać z konsultacji w ramach oferty analizy statystyczne dla studentów. Wyniki musisz jednak rozumieć i umieć obronić samodzielnie.

Najczęstsze pytania

Dlaczego R nie chce porównać modeli w regresji hierarchicznej?

Komunikat „models were not all fitted to the same size of dataset” oznacza, że kolejne modele policzono na różnej liczbie osób, bo zmienne z późniejszych bloków mają braki. Wybierz osoby z kompletem danych przed dopasowaniem pierwszego modelu (np. na.omit() na wszystkich zmiennych z planu) albo zastosuj imputację wielokrotną.

Jaki przyrost R² w regresji hierarchicznej jest duży?

Wielkość przyrostu opisuje f² = ΔR² / (1 − R²pełny). Cohen (1992) przyjął umownie 0.02 jako efekt mały, 0.15 jako średni i 0.35 jako duży. Podaj też przedział ufności ΔR², np. z bootstrapu, bo w małych próbach przyrost jest słabo oszacowany.

Czy zmienne kontrolne zawsze wprowadza się w pierwszym kroku?

Zwykle tak, bo hipoteza brzmi „X wyjaśnia wynik ponad zmienne kontrolne”. Do modelu wprowadzaj jednak tylko zmienne kontrolne uzasadnione teorią albo wcześniejszymi badaniami. Nieistotny pierwszy krok nie jest powodem, by go usuwać.

Jak dodać interakcję w regresji hierarchicznej?

Wprowadź iloczyn predyktorów w ostatnim kroku, po krokach z obiema zmiennymi. Zmienne ciągłe wcześniej wycentruj, żeby współczynniki niższego rzędu dało się interpretować. ΔR² ostatniego kroku to test interakcji, a jej kierunek pokazują efekty proste.

Co napisać, gdy ostatni blok nie zwiększył istotnie R²?

Podaj ΔR², test F zmiany i przedział ufności przyrostu, a potem napisz, że blok nie wyjaśniał istotnej części wariancji ponad wcześniejsze zmienne. Nie usuwaj bloku z tabeli i nie zmieniaj kolejności kroków po fakcie. Model z poprzedniego kroku możesz opisać jako najlepiej uzasadniony.

Powiązane hasła

Przeczytaj też

Nie wiesz, w jakiej kolejności wprowadzić bloki albo jak opisać przyrost R²?

Sprawdzimy plan bloków, przygotowanie danych i tabelę wyników oraz wyjaśnimy je tak, żebyś umiał(a) samodzielnie je 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. Cohen, J. (1992). A power primer. Psychological Bulletin, 112(1), 155–159. https://doi.org/10.1037/0033-2909.112.1.155
  3. Dalal, D. K., & Zickar, M. J. (2012). Some common myths about centering predictor variables in moderated multiple regression and polynomial regression. Organizational Research Methods, 15(3), 339–362. https://doi.org/10.1177/1094428111430540
  4. Graham, J. W. (2009). Missing data analysis: Making it work in the real world. Annual Review of Psychology, 60(1), 549–576. https://doi.org/10.1146/annurev.psych.58.110405.085530
  5. Kraha, A., Turner, H., Nimon, K., Zientek, L. R., & Henson, R. K. (2012). Tools to support interpreting multiple regression in the face of multicollinearity. Frontiers in Psychology, 3, Article 44. https://doi.org/10.3389/fpsyg.2012.00044 ● Otwarty dostęp
  6. Petrocelli, J. V. (2003). Hierarchical multiple regression in counseling research: Common problems and possible remedies. Measurement and Evaluation in Counseling and Development, 36(1), 9–22. https://doi.org/10.1080/07481756.2003.12069076
  7. Selya, A. S., Rose, J. S., Dierker, L. C., Hedeker, D., & Mermelstein, R. J. (2012). A practical guide to calculating Cohen’s f², a measure of local effect size, from PROC MIXED. Frontiers in Psychology, 3, Article 111. https://doi.org/10.3389/fpsyg.2012.00111 ● Otwarty dostęp
  8. Spiller, S. A., Fitzsimons, G. J., Lynch, J. G., Jr., & McClelland, G. H. (2013). Spotlights, floodlights, and the magic number zero: Simple effects tests in moderated regression. Journal of Marketing Research, 50(2), 277–288. https://doi.org/10.1509/jmr.12.0420
  9. Thompson, B. (1995). Stepwise regression and stepwise discriminant analysis need not apply here: A guidelines editorial. Educational and Psychological Measurement, 55(4), 525–534. https://doi.org/10.1177/0013164495055004001
  10. Williams, M. N., Grajales, C. A. G., & Kurkiewicz, D. (2013). Assumptions of multiple regression: Correcting two misconceptions. Practical Assessment, Research, and Evaluation, 18, Article 11. https://doi.org/10.7275/55hn-wk47 ● Otwarty dostęp: pełny tekst

Cytowania BibTeX

@book{aiken1991multiple, author={Aiken, Leona S. and West, Stephen G.}, title={{Multiple regression: Testing and interpreting interactions}}, year={1991}, publisher={Sage}}
@article{cohen1992power, author={Cohen, Jacob}, title={{A power primer}}, journal={Psychological Bulletin}, year={1992}, volume={112}, number={1}, pages={155--159}, doi={10.1037/0033-2909.112.1.155}}
@article{dalal2012some, author={Dalal, Dev K. and Zickar, Michael J.}, title={{Some common myths about centering predictor variables in moderated multiple regression and polynomial regression}}, journal={Organizational Research Methods}, year={2012}, volume={15}, number={3}, pages={339--362}, doi={10.1177/1094428111430540}}
@article{graham2009missing, author={Graham, John W.}, title={{Missing data analysis: Making it work in the real world}}, journal={Annual Review of Psychology}, year={2009}, volume={60}, number={1}, pages={549--576}, doi={10.1146/annurev.psych.58.110405.085530}}
@article{kraha2012tools, author={Kraha, Amanda and Turner, Heather and Nimon, Kim and Zientek, Linda Reichwein and Henson, Robin K.}, title={{Tools to support interpreting multiple regression in the face of multicollinearity}}, journal={Frontiers in Psychology}, year={2012}, volume={3}, eid={44}, doi={10.3389/fpsyg.2012.00044}}
@article{petrocelli2003hierarchical, author={Petrocelli, John V.}, title={{Hierarchical multiple regression in counseling research: Common problems and possible remedies}}, journal={Measurement and Evaluation in Counseling and Development}, year={2003}, volume={36}, number={1}, pages={9--22}, doi={10.1080/07481756.2003.12069076}}
@article{selya2012practical, author={Selya, Arielle S. and Rose, Jennifer S. and Dierker, Lisa C. and Hedeker, Donald and Mermelstein, Robin J.}, title={{A practical guide to calculating Cohen’s f², a measure of local effect size, from PROC MIXED}}, journal={Frontiers in Psychology}, year={2012}, volume={3}, eid={111}, doi={10.3389/fpsyg.2012.00111}}
@article{spiller2013spotlights, author={Spiller, Stephen A. and Fitzsimons, Gavan J. and Lynch, Jr., John G. and McClelland, Gary H.}, title={{Spotlights, floodlights, and the magic number zero: Simple effects tests in moderated regression}}, journal={Journal of Marketing Research}, year={2013}, volume={50}, number={2}, pages={277--288}, doi={10.1509/jmr.12.0420}}
@article{thompson1995stepwise, author={Thompson, Bruce}, title={{Stepwise regression and stepwise discriminant analysis need not apply here: A guidelines editorial}}, journal={Educational and Psychological Measurement}, year={1995}, volume={55}, number={4}, pages={525--534}, doi={10.1177/0013164495055004001}}
@article{williams2013assumptions, author={Williams, Matt N. and Grajales, Carlos A. G. and Kurkiewicz, Dason}, title={{Assumptions of multiple regression: Correcting two misconceptions}}, journal={Practical Assessment, Research, and Evaluation}, year={2013}, volume={18}, eid={11}, doi={10.7275/55hn-wk47}}
R