Prace dyplomowe · SPSS

Regresja hierarchiczna w SPSS – bloki i zmiana R²

Jak ustawić bloki predyktorów przyciskiem Next w oknie Linear Regression, gdzie zaznaczyć R squared change, jak czytać Model Summary z ΔR² i testem F zmiany, czym tabela ANOVA różni się od testu przyrostu i jak czytać Coefficients w kolejnych modelach – ze składnią, zapisem APA i plikiem .sav do ćwiczeń.

Strona główna / Blog / Regresja hierarchiczna w SPSS
W skrócie: Regresję hierarchiczną w SPSS ustawisz w jednym oknie Analyze → Regression → Linear: każdy blok predyktorów dodajesz przyciskiem Next z metodą Enter. W Statistics zaznacz R squared change – dopiero wtedy tabela Model Summary pokaże przyrost R² (ΔR²) i test F zmiany z df1, df2 i p dla każdego bloku. Wkład bloku opisujesz tym testem, a nie wynikiem z tabeli ANOVA, która testuje cały model. Wszystkie bloki w jednym poleceniu liczą się na tych samych osobach, bo SPSS usuwa wiersze z brakiem w którejkolwiek zmiennej modelu.

Regresja hierarchiczna w SPSS: co tu znajdziesz

Regresja hierarchiczna sprawdza, czy kolejna grupa predyktorów wyjaśnia zmienną zależną ponad to, co wyjaśniły zmienne wprowadzone wcześniej. Jak zaplanować bloki, dlaczego ich kolejność zmienia wnioski i jak policzyć to samo w R, opisuje poradnik regresja hierarchiczna krok po kroku. Zastosowanie przy nowej skali omawia wpis trafność przyrostowa nowej skali. Tutaj zajmujemy się tylko SPSS: tym, jak zbudować bloki w oknie, które opcje zaznaczyć i co przepisać z wydruku.

Zakładamy, że znasz zwykłą regresję w SPSS z wpisu korelacja i regresja w SPSS. Wykresy reszt i diagnostyka przypadków działają tu tak samo, więc ich nie powtarzamy. Ścieżki menu, opcje i składnię sprawdziliśmy w dokumentacji IBM SPSS Statistics 32 (IBM Corp., b.d.-a, b.d.-c). Polskie nazwy podajemy według polskiej dokumentacji (IBM Corp., b.d.-b), ale w interfejsie mogą brzmieć inaczej. Części nagłówków kolumn dokumentacja nie potwierdza – odtwarzamy je z typowego wydruku. Ogólne zasady czytania wydruku zebraliśmy we wpisie jak czytać wyniki z SPSS.

Przykład i pliki do pobrania

230 osób studiujących (dane symulowane) wypełniło skalę zaangażowania w studia 1–7 (zaang, zmienna zależna). Podały też płeć (plec: 0 = kobieta, 1 = mężczyzna), wiek (wiek) i liczbę godzin pracy zarobkowej w tygodniu (praca). Wypełniły również skalę poczucia skuteczności w nauce 10–40 (skut) i skalę motywacji wewnętrznej 1–7 (motyw). Pytanie badawcze brzmi: czy poczucie skuteczności i motywacja wyjaśniają zaangażowanie ponad cechy demograficzne i pracę zarobkową?

Plan bloków ustalamy przed analizą. Blok 1 to płeć i wiek, czyli zmienne kontrolne (czy w ogóle je dodawać, rozważa wpis czy kontrolować wiek i płeć). Blok 2 to praca zarobkowa, a blok 3 – oba predyktory psychologiczne razem. Pięć osób nie podało godzin pracy, a dziewięć nie wypełniło skali motywacji. Dane pobierzesz jako plik SPSS .sav (z etykietami zmiennych i wartości) albo plik CSV.

Przygotowanie danych

Wszystkie predyktory muszą być liczbowe. Dokumentacja IBM przypomina, że zmienne jakościowe trzeba przekodować na zmienne zero-jedynkowe (IBM Corp., b.d.-a). Płeć ma już kody 0 i 1. Zmienną o trzech lub więcej kategoriach zamień na kilka zmiennych 0–1 i wprowadź je razem, w jednym bloku (zob. dummy coding). Etykiety, braki danych zdefiniowane przez użytkownika i liczenie wyniku skali opisuje wpis przygotowanie danych w SPSS.

Braki danych. Wszystkie bloki muszą być liczone na tych samych osobach, inaczej ΔR² miesza wkład zmiennych ze zmianą próby. W SPSS dzieje się to samo, jeśli wszystkie bloki ustawisz w jednym oknie regresji. Polecenie REGRESSION domyślnie obejmuje wszystkie zmienne z bloków i usuwa wiersze z brakiem w którejkolwiek z nich (IBM Corp., b.d.-c). W przykładzie każdy model, także pierwszy, opiera się więc na 216 osobach. Model 1 policzony w osobnym oknie objąłby 230 osób. Gdy braków jest dużo, rozważ imputację wielokrotną (zob. braki danych w ankiecie).

Krok 1. Bloki w oknie Linear Regression

  1. Wybierz Analyze → Regression → Linear (w polskiej dokumentacji: Analiza → Regresja → Liniowa). Przenieś zaang do pola Dependent.
  2. Blok 1. Przenieś plec i wiek do Independent(s). Metodę zostaw na Enter (Wprowadź), czyli wszystkie zmienne bloku w jednym kroku.
  3. Blok 2. Kliknij Next (Dalej), żeby otworzyć drugi blok (IBM Corp., b.d.-a, b.d.-b), i przenieś do niego praca.
  4. Blok 3. Jeszcze raz kliknij Next i przenieś skut oraz motyw. Każdy blok może mieć własną metodę, dlatego sprawdź, czy przy każdym zostało Enter (IBM Corp., b.d.-a).
  5. Statistics. Zostaw Estimates i Model fit. Koniecznie zaznacz R squared change (Zmiana R²), bo bez tej opcji wydruk nie pokaże przyrostu R² ani jego testu. Dodaj Part and partial correlations i Collinearity diagnostics. Opcja Descriptives doda liczbę ważnych obserwacji, średnie, odchylenia standardowe i macierz korelacji.
  6. Kliknij Paste (Wklej) zamiast OK, a potem uruchom polecenie z okna składni.

Metod Stepwise, Forward i Backward nie używaj w żadnym bloku. Program sam wybiera wtedy zmienne, a wartości istotności w wydruku są na ogół nieprawidłowe (IBM Corp., b.d.-a; zob. metoda krokowa).

Składnia do wklejenia

Polecenie zbudowaliśmy według opisu REGRESSION w Command Syntax Reference (IBM Corp., b.d.-c). Każdy blok to osobna podkomenda /METHOD=ENTER, a każda kolejna dokłada zmienne do równania z poprzedniego kroku. Słowo CHANGE odpowiada opcji R squared change. ZPP daje korelacje zerowego rzędu, cząstkowe i semicząstkowe. STATISTICS musi stać przed DEPENDENT. Składni nie uruchamialiśmy w SPSS. Liczby na tej stronie pochodzą z R.

* Regresja hierarchiczna: trzy bloki metodą Enter, zmiana R² i VIF.
REGRESSION
  /MISSING=LISTWISE
  /STATISTICS=COEFF OUTS R ANOVA CHANGE ZPP COLLIN TOL
  /DEPENDENT=zaang
  /METHOD=ENTER plec wiek
  /METHOD=ENTER praca
  /METHOD=ENTER skut motyw.

Krok 2. Model Summary: tu jest odpowiedź na pytanie

Z opcją R squared change tabela Model Summary ma jeden wiersz na każdy blok i dodatkową część ze zmianą R², jej testem F i prawdopodobieństwem (IBM Corp., b.d.-c). Nagłówki tej części odtworzyliśmy z typowego wydruku.

Tabela 1. Model Summary z Change Statistics. Liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS.

Tabela Model Summary w układzie SPSS dla trzech bloków regresji hierarchicznej ze zmianą R²
ModelRR SquareAdjusted R SquareStd. Error of the EstimateChange Statistics
R Square ChangeF Changedf1df2Sig. F Change
1.067.004−.005.976.004.4802213.620
2.383.146.134.906.14235.2211212.000
3.591.349.334.794.20332.7552210.000

Każdy wiersz to kolejny model, czyli stan równania po dodaniu danego bloku. Czytaj je po kolei:

  • Model 1: płeć i wiek wyjaśniały 0.4% wariancji zaangażowania, F(2, 213) = 0.48, p = .620. Skorygowane R² jest ujemne, bo kara za dwa predyktory przewyższa ich wkład (zob. R² skorygowany).
  • Model 2: praca zarobkowa dodała 14.2 punktu procentowego, ΔR² = .142, F(1, 212) = 35.22, p < .001.
  • Model 3: poczucie skuteczności i motywacja dodały razem kolejne 20.3%, ΔR² = .203, F(2, 210) = 32.76, p < .001. To odpowiedź na pytanie badawcze. df1 = 2, bo blok ma dwie zmienne; df2 to stopnie swobody reszty modelu 3.

Istotność nie mówi, czy przyrost jest duży. Policz f² Cohena dla bloku: ΔR² / (1 − R² modelu pełnego) = .203 / .651 = 0.31. To lokalna wielkość efektu bloku w kontekście całego modelu (Selya i in., 2012). Według umownych progów Cohena (1992) to efekt między średnim (0.15) a dużym (0.35). SPSS tej miary nie podaje.

Krok 3. Tabela ANOVA to nie test przyrostu

Tabela ANOVA testuje każdy model jako całość, czyli porównuje go z modelem bez predyktorów.

Tabela 2. ANOVA dla trzech modeli. Liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS.

Tabela ANOVA w układzie SPSS dla modeli 1–3
ModelSum of SquaresdfMean SquareFSig.
1Regression0.91320.456.480.620
Residual202.7822130.952
Total203.695215
2Regression29.80339.93412.111.000
Residual173.8922120.820
Total203.695215
3Regression71.150514.23022.546.000
Residual132.5442100.631
Total203.695215

Najczęstszy błąd to opisanie bloku 3 wynikiem F(5, 210) = 22.55 z tej tabeli. Ten test mówi tylko, że model 3 wyjaśnia cokolwiek, co wynikałoby już z samej pracy zarobkowej. Przyrost opisuje część Change Statistics z tabeli 1, a z tabeli ANOVA bierzesz tylko test modelu końcowego. Wiersz Total jest wszędzie taki sam (215 = 216 − 1), co potwierdza wspólną próbę. Sig. = .000 zapisz jako p < .001 (zob. wartość p).

Krok 4. Coefficients w kolejnych blokach

Tabela Coefficients pokazuje osobny zestaw współczynników dla każdego modelu. Kolumny korelacji pochodzą z opcji Part and partial correlations, a tolerancja i VIF z Collinearity diagnostics (IBM Corp., b.d.-a). Wiersze stałej (Constant) pominęliśmy.

Tabela 3. Coefficients dla modeli 1–3. Liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS.

Tabela Coefficients w układzie SPSS z korelacjami i statystykami współliniowości dla trzech modeli
ModelUnstandardized CoefficientsStandardized CoefficientstSig.CorrelationsCollinearity Statistics
BStd. ErrorBetaZero-orderPartialPartToleranceVIF
1plec−.121.138−.060−.878.381−.062−.060−.060.9961.004
wiek.012.031.026.375.708.030.026.026.9961.004
2plec−.143.128−.071−1.115.266−.062−.076−.071.9951.005
wiek.003.029.007.110.912.030.008.007.9931.007
praca−.033.006−.377−5.935.000−.376−.377−.377.9971.003
3plec−.091.113−.045−.804.422−.062−.055−.045.9911.009
wiek.031.026.0681.212.227.030.083.067.9731.028
praca−.020.005−.225−3.830.000−.376−.256−.213.8951.118
skut.037.013.1782.826.005.388.191.157.7781.286
motyw.316.055.3705.717.000.516.367.318.7401.351

Które współczynniki raportować? Hipotezę o bloku opisuje ΔR². Przy pojedynczych predyktorach podaj b, β, t i p z modelu końcowego. Różnicę między B i Beta omawia wpis współczynniki standaryzowane czy niestandaryzowane.

Część Part to most do ΔR². Kolumna Part zawiera korelację semicząstkową. Dokumentacja IBM łączy ją wprost ze zmianą R² po dodaniu zmiennej (IBM Corp., b.d.-a). Gdy blok ma jedną zmienną, jej kwadrat równa się przyrostowi: dla pracy w modelu 2 (−.377)² = .142. Uwaga: polska dokumentacja tłumaczy zarówno Part, jak i Partial jako „korelacja częściowa” (IBM Corp., b.d.-b). Kolumna Partial to inna miara – korelacja cząstkowa.

Rysunek 1 pokazuje kolumnę Beta z trzech modeli. To wykres z R, nie zrzut ekranu z SPSS.

Wykres współczynników standaryzowanych beta z 95% przedziałami ufności dla pięciu predyktorów w modelach 1–3: beta płci i wieku leżą blisko zera we wszystkich modelach, beta pracy zarobkowej spada z −0.38 w modelu 2 do −0.23 w modelu 3, a poczucie skuteczności (0.18) i motywacja wewnętrzna (0.37) mają dodatnie beta w modelu 3
Rysunek 1. Współczynniki β z 95% przedziałami ufności w kolejnych modelach regresji hierarchicznej (N = 216), narysowane w R (nie jest to zrzut ani grafika z SPSS). Przedziały dla β to przedziały dla B przeliczone przez SD predyktora / SD zmiennej zależnej. Obliczenia: R (dane symulowane).

Płeć i wiek nie mają znaczenia w żadnym modelu. β pracy zarobkowej słabnie z −.38 w modelu 2 do −.23 w modelu 3, bo osoby pracujące więcej miały też niższą motywację (r = −.30) i niższe poczucie skuteczności (r = −.20). Na danych z jednego pomiaru to opis współwystępowania, a nie dowód mediacji. Mediację testuje się osobno (zob. mediacja i moderacja w SPSS z PROCESS).

VIF wynosi najwyżej 1.35, więc predyktory nie powielają się w niepokojącym stopniu. Sztywnych progów VIF nie stosuj mechanicznie (O’Brien, 2007; zob. wysoki VIF – co zrobić). Domyślnie SPSS drukuje też tabelę Excluded Variables (opcja OUTS). Pokazuje ona, jaki współczynnik miałyby zmienne z późniejszych bloków, gdyby weszły jako następne (IBM Corp., b.d.-c). Przy planowanych blokach nic z niej nie przepisujesz.

Zapis wyników w stylu APA

Petrocelli (2003) w przeglądzie artykułów z regresją hierarchiczną wskazał typowe problemy w jej użyciu. W tekście podaj plan bloków, wspólne N, ΔR² z testem F dla każdego kroku i współczynniki z modelu końcowego. Tabelę przygotuj według wzoru tabeli regresji w APA, z wierszami ΔR² pod każdym krokiem. Zdania do innych analiz złożysz w generatorze opisu wyników APA.

Przeprowadzono hierarchiczną regresję liniową zaangażowania w studia (N = 216; osoby z brakami danych wykluczono ze wszystkich kroków). W kroku 1 wprowadzono płeć i wiek, w kroku 2 – liczbę godzin pracy zarobkowej, a w kroku 3 – poczucie skuteczności w nauce i motywację wewnętrzną. Płeć i wiek nie wyjaśniały zaangażowania, R² = .004, F(2, 213) = 0.48, p = .620. Praca zarobkowa zwiększyła odsetek wyjaśnionej wariancji o 14.2 punktu procentowego, ΔR² = .142, ΔF(1, 212) = 35.22, p < .001. Poczucie skuteczności i motywacja wyjaśniały dodatkowe 20.3% wariancji ponad zmienne z kroków 1–2, ΔR² = .203, ΔF(2, 210) = 32.76, p < .001, f² = 0.31. Model końcowy wyjaśniał 34.9% wariancji, R² = .349, skorygowane R² = .334, F(5, 210) = 22.55, p < .001. W modelu końcowym wyższe zaangażowanie wiązało się z wyższą motywacją wewnętrzną, b = 0.316, β = .37, t(210) = 5.72, p < .001, wyższym poczuciem skuteczności, b = 0.037, β = .18, t(210) = 2.83, p = .005, i mniejszą liczbą godzin pracy, b = −0.020, β = −.23, t(210) = −3.83, p < .001. Wartości VIF nie przekraczały 1.35.

Jeśli nie wiesz, czy Twoje pytanie wymaga regresji hierarchicznej, czy innej analizy, sprawdź kreator doboru testu.

Przykład reprodukowalny

Te same liczby w R

SPSS nie był używany przy przygotowaniu tej strony. Liczby z tabel 1–3 policzyliśmy w R tymi samymi metodami, których używa SPSS: jedna próba bez braków we wszystkich zmiennych modelu (jak MISSING=LISTWISE), metoda najmniejszych kwadratów dla każdego bloku, test F zmiany z resztą modelu z danego kroku, β jako b × SDx / SDy, korelacje cząstkowe i semicząstkowe z wartości t oraz tolerancja i VIF z pakietu car. Uwaga: funkcja anova(m1, m2, m3) dla trzech modeli naraz dzieli przez resztę największego modelu, więc dla kroku 2 daje inne F niż SPSS – porównuj modele parami. Uruchom przepisy po kolei z folderu, w którym zapiszesz pliki danych. Przepis 1 tworzy plik CSV i plik .sav (pakiet haven).

1. Dane: CSV i plik SPSS .sav z etykietami

Dane wejściowe: 230 osób studiujących (dane symulowane, set.seed(3091)): płeć, wiek, godziny pracy zarobkowej, poczucie skuteczności, motywacja i zaangażowanie; braki w pracy (5) i motywacji (9).

Co odczytać: podsumowanie zmiennych, liczebność płci, M, SD i liczbę ważnych odpowiedzi oraz liczbę osób z kompletem danych (216).

R
# B309 – dane przykładowe: zaangażowanie w studia a płeć, wiek, praca zarobkowa, poczucie skuteczności i motywacja
# 230 osób studiujących (dane symulowane, set.seed(3091)); plik CSV i plik SPSS .sav z etykietami zmiennych i wartości
suppressPackageStartupMessages(library(haven))
set.seed(3091)
n <- 230
plec     <- rbinom(n, 1, 0.38)                                               # 0 = kobieta, 1 = mężczyzna
wiek     <- pmin(19 + round(rgamma(n, shape = 2.2, rate = 0.75)), 30)          # wiek w latach
praca    <- ifelse(runif(n) < 0.4, 0, round(pmin(rgamma(n, shape = 3, rate = 0.17), 40)))  # godziny pracy tygodniowo
skut     <- round(pmin(pmax(28 - 0.08 * praca + rnorm(n, 0, 5), 10), 40))       # poczucie skuteczności (10–40)
motyw    <- round(pmin(pmax(1.6 + 0.09 * skut - 0.025 * praca + rnorm(n, 0, 1), 1), 7), 1)  # motywacja wewnętrzna (1–7)
zaang    <- round(pmin(pmax(1.0 - 0.10 * plec + 0.03 * wiek - 0.022 * praca + 0.045 * skut + 0.30 * motyw +
                           rnorm(n, 0, 0.72), 1), 7), 1)                       # zaangażowanie w studia (1–7)
praca[sample(n, 5)] <- NA                                                      # braki: nie podano godzin pracy
motyw[sample(which(!is.na(praca)), 9)] <- NA                                   # braki: nie wypełniono skali motywacji
dane <- data.frame(id = 1:n, plec, wiek, praca, skut, motyw, zaang)
write.csv(dane, "../regresja-hierarchiczna-spss-dane.csv", row.names = FALSE, na = "")

sav <- dane
sav$plec <- labelled(sav$plec, c("kobieta" = 0, "mężczyzna" = 1), label = "Płeć (0 = kobieta, 1 = mężczyzna)")
attr(sav$id, "label")    <- "Numer osoby"
attr(sav$wiek, "label")  <- "Wiek (lata)"
attr(sav$praca, "label") <- "Praca zarobkowa – godziny tygodniowo"
attr(sav$skut, "label")  <- "Poczucie skuteczności w nauce (10–40)"
attr(sav$motyw, "label") <- "Motywacja wewnętrzna (1–7)"
attr(sav$zaang, "label") <- "Zaangażowanie w studia (1–7)"
write_sav(sav, "../regresja-hierarchiczna-spss-dane.sav")

summary(dane[, -1])
table(plec = dane$plec)
round(sapply(dane[, -1], function(x) c(M = mean(x, na.rm = TRUE), SD = sd(x, na.rm = TRUE), n = sum(!is.na(x)))), 2)
sum(complete.cases(dane))
Wynik w R
      plec             wiek        praca           skut           motyw           zaang      
 Min.   :0.0000   Min.   :19   Min.   : 0.0   Min.   :14.00   Min.   :1.000   Min.   :1.100  
 1st Qu.:0.0000   1st Qu.:20   1st Qu.: 0.0   1st Qu.:23.00   1st Qu.:3.000   1st Qu.:3.025  
 Median :0.0000   Median :21   Median : 7.0   Median :27.00   Median :3.700   Median :3.800  
 Mean   :0.3609   Mean   :22   Mean   :10.2   Mean   :26.67   Mean   :3.724   Mean   :3.744  
 3rd Qu.:1.0000   3rd Qu.:23   3rd Qu.:17.0   3rd Qu.:30.00   3rd Qu.:4.500   3rd Qu.:4.400  
 Max.   :1.0000   Max.   :30   Max.   :40.0   Max.   :40.00   Max.   :6.700   Max.   :6.700  
                               NA's   :5                      NA's   :9                      
plec
  0   1 
147  83 
     plec   wiek  praca   skut  motyw  zaang
M    0.36  22.00  10.20  26.67   3.72   3.74
SD   0.48   2.14  10.97   4.73   1.13   0.96
n  230.00 230.00 225.00 230.00 221.00 230.00
[1] 216

2. Regresja w trzech blokach: Model Summary, ANOVA i Coefficients

Dane wejściowe: plik CSV z przepisu 1; modele zaang ~ plec + wiek, + praca, + skut + motyw (pakiet car).

Co odczytać: N = 216, dla każdego modelu R, R², skorygowane R², błąd oszacowania, ΔR², F zmiany z df i p; tabele ANOVA; B, SE, t, p, Beta, korelacje, tolerancję i VIF; kontrolę sr² = ΔR² i f² bloku 3.

R
# Linear Regression w trzech blokach (Enter, Next): wspólna próba – braki usuwane wierszami ze wszystkich zmiennych
suppressPackageStartupMessages(library(car))
dane <- read.csv("../regresja-hierarchiczna-spss-dane.csv")
d <- na.omit(dane)                                   # jak MISSING=LISTWISE dla wszystkich zmiennych z METHOD
nrow(d)
bloki <- list(c("plec", "wiek"), "praca", c("skut", "motyw"))
modele <- lapply(seq_along(bloki), function(k)
  lm(reformulate(unlist(bloki[1:k]), "zaang"), data = d))
# Model Summary z Change Statistics: R, R Square, Adjusted R Square, Std. Error, R² change, F change, df1, df2, Sig. F change
r2 <- sapply(modele, function(m) summary(m)$r.squared)
podsum <- t(sapply(seq_along(modele), function(k) {
  s <- summary(modele[[k]]); r2_przed <- if (k == 1) 0 else r2[k - 1]
  df1 <- length(bloki[[k]]); df2 <- modele[[k]]$df.residual
  f_ch <- ((r2[k] - r2_przed) / df1) / ((1 - r2[k]) / df2)
  c(R = sqrt(r2[k]), R2 = r2[k], R2_adj = s$adj.r.squared, SE = s$sigma, dR2 = r2[k] - r2_przed,
    F_ch = f_ch, df1 = df1, df2 = df2, p_ch = pf(f_ch, df1, df2, lower.tail = FALSE))
}))
print(round(podsum, 3))
signif(podsum[, "p_ch"], 3)
# Test F zmiany funkcją anova() – parami, jak w SPSS (mianownik: reszta modelu z danego kroku)
anova(modele[[1]], modele[[2]])
anova(modele[[2]], modele[[3]])
# Uwaga: anova(m1, m2, m3) dzieli przez resztę największego modelu, więc F dla kroku 2 wychodzi inne niż w SPSS
round(anova(modele[[1]], modele[[2]], modele[[3]])$F, 3)
# ANOVA każdego modelu: Regression, Residual, Total
for (m in modele) {
  s <- summary(m); ss_res <- sum(resid(m)^2); ss_tot <- sum((d$zaang - mean(d$zaang))^2)
  print(round(c(SS_reg = ss_tot - ss_res, SS_res = ss_res, SS_tot = ss_tot, df1 = unname(s$fstatistic[2]),
                df2 = unname(s$fstatistic[3]), MS_reg = (ss_tot - ss_res) / s$fstatistic[[2]],
                MS_res = ss_res / s$fstatistic[[3]], F = unname(s$fstatistic[1]),
                p = pf(s$fstatistic[1], s$fstatistic[2], s$fstatistic[3], lower.tail = FALSE)), 3))
}
# Coefficients dla każdego modelu: B, Std. Error, Beta, t, Sig., korelacje (Zero-order, Partial, Part), Tolerance, VIF
sd_y <- sd(d$zaang)
for (k in seq_along(modele)) {
  m <- modele[[k]]; x <- unlist(bloki[1:k]); s <- summary(m)
  beta <- coef(m)[x] * sapply(d[x], sd) / sd_y
  tw <- s$coefficients[x, "t value"]
  zero <- cor(d[x], d$zaang)[, 1]                                   # korelacja zerowego rzędu
  partial <- tw / sqrt(tw^2 + m$df.residual)                        # korelacja cząstkowa
  part <- tw * sqrt((1 - s$r.squared) / m$df.residual)              # korelacja semicząstkowa (part)
  v <- if (length(x) > 1) vif(m) else setNames(1, x)
  cat("Model", k, "\n")
  print(round(cbind(s$coefficients[, 1:3], p = s$coefficients[, 4], Beta = c(NA, beta),
                    Zero = c(NA, zero), Partial = c(NA, partial), Part = c(NA, part), Tol = c(NA, 1 / v), VIF = c(NA, v)), 3))
}
signif(summary(modele[[3]])$coefficients[, 4], 3)
# Kontrola: przyrost w bloku z jedną zmienną = kwadrat jej korelacji semicząstkowej w tym modelu
s2 <- summary(modele[[2]])
round(c(dR2_blok2 = r2[2] - r2[1], part2_praca = (s2$coefficients["praca", "t value"])^2 * (1 - r2[2]) / modele[[2]]$df.residual), 4)
# f² dla bloku 3 (Cohen): ΔR² / (1 − R² modelu pełnego)
round(c(f2_blok3 = (r2[3] - r2[2]) / (1 - r2[3])), 3)
# Gdyby każdy model liczyć na wszystkich dostępnych danych (bez wspólnej próby): inne N w kroku 1
m1_all <- lm(zaang ~ plec + wiek, data = dane)
c(N_krok1_osobno = nobs(m1_all), N_wspolne = nrow(d))
# Korelacje zerowego rzędu w próbie analitycznej (do opisu)
round(cor(d[, c("zaang", "plec", "wiek", "praca", "skut", "motyw")]), 2)
Wynik w R
[1] 216
         R    R2 R2_adj    SE   dR2   F_ch df1 df2 p_ch
[1,] 0.067 0.004 -0.005 0.976 0.004  0.480   2 213 0.62
[2,] 0.383 0.146  0.134 0.906 0.142 35.221   1 212 0.00
[3,] 0.591 0.349  0.334 0.794 0.203 32.755   2 210 0.00
[1] 6.20e-01 1.19e-08 4.16e-13
Analysis of Variance Table

Model 1: zaang ~ plec + wiek
Model 2: zaang ~ plec + wiek + praca
  Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
1    213 202.78                                  
2    212 173.89  1     28.89 35.221 1.187e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Analysis of Variance Table

Model 1: zaang ~ plec + wiek + praca
Model 2: zaang ~ plec + wiek + praca + skut + motyw
  Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
1    212 173.89                                  
2    210 132.54  2    41.348 32.755 4.155e-13 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
[1]     NA 45.772 32.755
 SS_reg  SS_res  SS_tot     df1     df2  MS_reg  MS_res       F p.value 
  0.913 202.782 203.695   2.000 213.000   0.456   0.952   0.480   0.620 
 SS_reg  SS_res  SS_tot     df1     df2  MS_reg  MS_res       F p.value 
 29.803 173.892 203.695   3.000 212.000   9.934   0.820  12.111   0.000 
 SS_reg  SS_res  SS_tot     df1     df2  MS_reg  MS_res       F p.value 
 71.150 132.544 203.695   5.000 210.000  14.230   0.631  22.546   0.000 
Model 1 
            Estimate Std. Error t value     p   Beta   Zero Partial   Part   Tol   VIF
(Intercept)    3.514      0.692   5.079 0.000     NA     NA      NA     NA    NA    NA
plec          -0.121      0.138  -0.878 0.381 -0.060 -0.062  -0.060 -0.060 0.996 1.004
wiek           0.012      0.031   0.375 0.708  0.026  0.030   0.026  0.026 0.996 1.004
Model 2 
            Estimate Std. Error t value     p   Beta   Zero Partial   Part   Tol   VIF
(Intercept)    4.047      0.648   6.241 0.000     NA     NA      NA     NA    NA    NA
plec          -0.143      0.128  -1.115 0.266 -0.071 -0.062  -0.076 -0.071 0.995 1.005
wiek           0.003      0.029   0.110 0.912  0.007  0.030   0.008  0.007 0.993 1.007
praca         -0.033      0.006  -5.935 0.000 -0.377 -0.376  -0.377 -0.377 0.997 1.003
Model 3 
            Estimate Std. Error t value     p   Beta   Zero Partial   Part   Tol   VIF
(Intercept)    1.130      0.703   1.606 0.110     NA     NA      NA     NA    NA    NA
plec          -0.091      0.113  -0.804 0.422 -0.045 -0.062  -0.055 -0.045 0.991 1.009
wiek           0.031      0.026   1.212 0.227  0.068  0.030   0.083  0.067 0.973 1.028
praca         -0.020      0.005  -3.830 0.000 -0.225 -0.376  -0.256 -0.213 0.895 1.118
skut           0.037      0.013   2.826 0.005  0.178  0.388   0.191  0.157 0.778 1.286
motyw          0.316      0.055   5.717 0.000  0.370  0.516   0.367  0.318 0.740 1.351
(Intercept)        plec        wiek       praca        skut       motyw 
   1.10e-01    4.22e-01    2.27e-01    1.69e-04    5.17e-03    3.70e-08 
  dR2_blok2 part2_praca 
     0.1418      0.1418 
f2_blok3 
   0.312 
N_krok1_osobno      N_wspolne 
           230            216 
      zaang  plec  wiek praca  skut motyw
zaang  1.00 -0.06  0.03 -0.38  0.39  0.52
plec  -0.06  1.00 -0.07 -0.03 -0.03 -0.03
wiek   0.03 -0.07  1.00 -0.05 -0.11 -0.09
praca -0.38 -0.03 -0.05  1.00 -0.20 -0.30
skut   0.39 -0.03 -0.11 -0.20  1.00  0.46
motyw  0.52 -0.03 -0.09 -0.30  0.46  1.00

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3; rysunek przygotowano w pakiecie ggplot2. Składni SPSS nie uruchamialiśmy. W pracy podaj wersję programu, którego faktycznie użyłeś.

  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. haven (wersja 2.5.5): Wickham, H., Miller, E., & Smith, D. (2025). haven: Import and export 'SPSS', 'Stata' and 'SAS' files [R package]. https://doi.org/10.32614/CRAN.package.haven
  4. 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 w SPSS

  • Brak zaznaczonej opcji R squared change. Bez niej musisz odejmować R² ręcznie i nie masz testu przyrostu.
  • Każdy blok w osobnym oknie. Modele liczone na różnych osobach dają przyrosty, których nie da się porównać. Wszystkie bloki ustaw w jednym oknie przyciskiem Next.
  • Test z tabeli ANOVA zamiast Sig. F Change przy opisie bloku dodanego jako ostatni.
  • Stepwise w którymś bloku albo kolejność bloków ustalona po obejrzeniu wyników.
  • Zmienna zero-jedynkowa z jednej zmiennej kategorialnej rozdzielona między bloki. Wszystkie kody jednej zmiennej wprowadzaj razem.
  • Współczynniki z modelu 1 opisane jak wynik końcowy. Współczynnik zmiennej zmienia się po dodaniu kolejnych bloków, jak praca zarobkowa w przykładzie.

Z serii o SPSS zob. też regresja logistyczna w SPSS i ANOVA w SPSS. Jeśli chcesz, żeby ktoś sprawdził plan bloków i opis wyników w Twojej pracy, zajrzyj do oferty analizy statystyczne dla studentów.

Najczęstsze pytania

Jak ustawić bloki predyktorów w oknie Linear Regression w SPSS?

Wybierz Analyze → Regression → Linear, ustaw zmienną zależną i przenieś predyktory pierwszego bloku do Independent(s) z metodą Enter. Kliknij Next i dodaj drugi blok, potem kolejne. W Statistics zaznacz R squared change. W składni każdy blok to osobna podkomenda /METHOD=ENTER.

Gdzie w SPSS jest zmiana R²?

W oknie Linear Regression kliknij Statistics i zaznacz R squared change (w składni słowo CHANGE w /STATISTICS). Zmiana R², jej test F i istotność pojawią się w tabeli Model Summary, w osobnej części dla każdego modelu.

Co raportować z regresji hierarchicznej: Sig. z tabeli ANOVA czy Sig. F Change?

Wkład bloku opisujesz przyrostem: ΔR² oraz F zmiany z df1 i df2 i jego p z części Change Statistics w Model Summary. Tabela ANOVA testuje każdy model jako całość, więc z niej bierzesz tylko test modelu końcowego. W przykładzie blok 3 ma ΔF(2, 210) = 32.76, a cały model 3 – F(5, 210) = 22.55.

Dlaczego w regresji hierarchicznej w SPSS N jest mniejsze niż liczba osób w pliku?

Polecenie REGRESSION domyślnie usuwa każdy wiersz z brakiem w którejkolwiek zmiennej wymienionej w blokach. Dlatego wszystkie modele, także pierwszy, liczą się na tych samych osobach. W przykładzie z 230 osób zostało 216. To pożądane, bo przyrosty R² porównujesz na jednej próbie.

Które współczynniki podać z tabeli Coefficients?

Przy pojedynczych predyktorach podaj b, β, t i p z modelu końcowego. Współczynniki z wcześniejszych modeli możesz pokazać w tabeli, by zilustrować, jak zmieniają się po dodaniu bloków. Hipotezę o bloku opisuje ΔR², a nie pojedyncze β.

Powiązane hasła

Przeczytaj też

Masz regresję hierarchiczną w pracy i nie wiesz, jak opisać bloki?

Sprawdzimy plan bloków, ustawienia w SPSS i wydruk, a potem wyjaśnimy wyniki tak, żebyś umiał(a) samodzielnie je opisać i obronić.

Oferta dla studentówWyceń analizę

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Cohen, J. (1992). A power primer. Psychological Bulletin, 112(1), 155–159. https://doi.org/10.1037/0033-2909.112.1.155
  2. IBM Corp. (b.d.-a). Linear Regression Variable Selection Methods; Linear Regression Statistics. IBM SPSS Statistics 32.0.0 documentation. https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=regression-linear-variable-selection-methods ● Otwarty dostęp
  3. IBM Corp. (b.d.-b). Regresja liniowa: Metody wyboru zmiennych; Regresja liniowa: Statystyki. Dokumentacja IBM SPSS Statistics 32.0.0. https://www.ibm.com/docs/pl/spss-statistics/32.0.0?topic=regression-linear-variable-selection-methods ● Otwarty dostęp
  4. IBM Corp. (b.d.-c). REGRESSION: Overview; VARIABLES, METHOD, MISSING and STATISTICS subcommands. IBM SPSS Statistics 32.0.0 Command Syntax Reference. https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=regression-overview-command ● Otwarty dostęp
  5. O’Brien, R. M. (2007). A caution regarding rules of thumb for variance inflation factors. Quality & Quantity, 41(5), 673–690. https://doi.org/10.1007/s11135-006-9018-6
  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

Cytowania BibTeX

@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}}
@misc{ibmnd32regresjabloki, author={{IBM Corp.}}, title={{Linear Regression Variable Selection Methods; Linear Regression Statistics}}, howpublished={IBM SPSS Statistics 32.0.0 documentation}, year={b.d.-a}, publisher={IBM}, url={https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=regression-linear-variable-selection-methods}}
@misc{ibmnd32regresjapl, author={{IBM Corp.}}, title={{Regresja liniowa: Metody wyboru zmiennych; Regresja liniowa: Statystyki}}, howpublished={Dokumentacja IBM SPSS Statistics 32.0.0}, year={b.d.-b}, publisher={IBM}, url={https://www.ibm.com/docs/pl/spss-statistics/32.0.0?topic=regression-linear-variable-selection-methods}}
@misc{ibmnd32regressionsyntax, author={{IBM Corp.}}, title={{REGRESSION: Overview; VARIABLES, METHOD, MISSING and STATISTICS subcommands}}, howpublished={IBM SPSS Statistics 32.0.0 Command Syntax Reference}, year={b.d.-c}, publisher={IBM}, url={https://www.ibm.com/docs/en/spss-statistics/32.0.0?topic=regression-overview-command}}
@article{obrien2007caution, author={O’Brien, Robert M.}, title={{A caution regarding rules of thumb for variance inflation factors}}, journal={Quality \& Quantity}, year={2007}, volume={41}, number={5}, pages={673--690}, doi={10.1007/s11135-006-9018-6}}
@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}}
R