Prace dyplomowe · SPSS

ANCOVA w SPSS krok po kroku

Jak w SPSS porównać grupy po uwzględnieniu pomiaru wyjściowego: GLM Univariate z kowariantą, sprawdzenie jednorodności nachyleń modelem z interakcją, tabela Tests of Between-Subjects Effects z η² cząstkowym, średnie skorygowane z EMMEANS, składnia GLM do wklejenia i opis APA – na przykładzie badania przed i po z grupą kontrolną i z plikiem .sav do pobrania.

Strona główna / Blog / ANCOVA w SPSS
W skrócie: W SPSS ANCOVA uruchomisz przez Analyze → General Linear Model → Univariate: wynik po interwencji jako zmienną zależną, grupę w polu Fixed Factor(s), pomiar wyjściowy w polu Covariate(s). Najpierw sprawdź jednorodność nachyleń modelem z interakcją grupa*pre (Model → Custom), potem uruchom model bez interakcji i raportuj wiersz grupy z η² cząstkowym oraz średnie skorygowane z EM Means – nie średnie surowe ani testy z przycisku Post Hoc.

Do czego służy ANCOVA w SPSS

Analiza kowariancji (ANCOVA) porównuje średnie grup po uwzględnieniu zmiennej ilościowej, która wiąże się z wynikiem. W pracach dyplomowych najczęściej jest to badanie przed i po z grupą kontrolną: wynik po interwencji to zmienna zależna, grupa to czynnik, a pomiar wyjściowy to kowarianta. Dlaczego w takim schemacie ANCOVA zwykle wygrywa z analizą zmian i ANOVA mieszaną, wyjaśnia wpis ANCOVA w badaniu przed i po. Kiedy ANCOVA prowadzi na manowce przy grupach nierandomizowanych, opisuje wpis paradoks Lorda. Tutaj zajmujemy się tylko SPSS: oknami, składnią i tym, co przepisać z wydruku.

W SPSS ANCOVA to procedura GLM Univariate z kowariantą. Ścieżki menu, nazwy okien i opcji sprawdziliśmy w dokumentacji IBM SPSS Statistics 31 (IBM, b.d.; IBM Corp., b.d.-a, b.d.-b) i podajemy je po angielsku. Polska dokumentacja podaje ścieżkę Analizuj → Ogólny model liniowy → Jednoczynnikowy, a kowarianty nazywa „współzmiennymi” (IBM Corp., b.d.-a). Etykiety w polskim interfejsie programu mogą brzmieć inaczej. Ogólne zasady czytania wydruku są we wpisie jak czytać wyniki z SPSS. Ten wpis to trzecia część serii o SPSS – wcześniej były m.in. ANOVA jednoczynnikowa w SPSS (część 1) i ANOVA z powtarzanymi pomiarami i mieszana w SPSS (część 2).

Przykład i pliki do pobrania

Wszystkie liczby pochodzą z jednego zbioru symulowanego. 80 osób studiujących wylosowano do dwóch wersji ćwiczeń ze statystyki: z cotygodniowymi quizami (n = 40) albo standardowych, czyli grupy kontrolnej (n = 40). Przed kursem i po nim wszyscy rozwiązali test wiedzy (0–40 pkt). Czy grupa z quizami ma po kursie wyższy wynik niż osoby, które zaczynały z tego samego poziomu?

Pobierz plik .sav z etykietami zmiennych i wartości albo ten sam zbiór w pliku CSV. Format SPSS opisuje hasło plik .sav.

Przygotowanie danych

Jeden wiersz to jedna osoba. Pomiar przed (pre) i po (post) to dwie osobne kolumny, a grupa ma kody 1 (quizy) i 2 (kontrolna) z etykietami wartości. Czynnik jest jakościowy, a zmienna zależna i kowarianta – ilościowe, jak wymaga dokumentacja procedury (IBM, b.d.). Etykiety i braki danych ustawisz według wpisu przygotowanie danych w SPSS.

Kowarianta musi być zmierzona przed interwencją. Zmienna zmierzona po interwencji może sama zależeć od przydziału do grupy i wtedy korekta zniekształca efekt (Miller i Chapman, 2001).

  1. Analyze → General Linear Model → Univariate (IBM Corp., b.d.-a).
  2. Okno główne. Jako zmienną zależną wybierz post, grupa przenieś do pola Fixed Factor(s), a pre do pola Covariate(s) (IBM Corp., b.d.-a).
  3. Model. Domyślny model pełny zawiera efekty główne czynników i kowariant, ale nie ich interakcje (IBM, b.d.). Do sprawdzenia nachyleń wybierz Custom i zbuduj model grupa, pre, grupa*pre. Typ sum kwadratów zostaw Type III – to ustawienie domyślne.
  4. Options. Zaznacz Descriptive statistics, Estimates of effect size (η² cząstkowe), Parameter estimates i Homogeneity tests (IBM, b.d.).
  5. EM Means. Przenieś grupa na listę Display Means For, zaznacz Compare main effects i korektę Bonferroni. Te średnie są skorygowane o kowarianty (IBM, b.d.).

Przycisku Post Hoc w ANCOVA nie używaj. Według dokumentacji testy post hoc w GLM porównują średnie nieskorygowane (IBM, b.d.), czyli pomijają kowariantę.

Wyniki pokazujemy w tabelach o układzie tabel wynikowych SPSS. Liczby policzono w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS. Dokumentacja IBM nie wypisuje nazw kolumn wydruku, więc nagłówki i stopki tabel odtworzyliśmy z typowego wydruku SPSS. Pogrubiono liczby, które trafią do pracy.

Krok 1: jednorodność nachyleń regresji

ANCOVA zakłada, że związek pretestu z posttestem jest w obu grupach taki sam (równoległe linie regresji). Sprawdzasz to modelem z interakcją grupa × kowarianta. W oknie Model wybierasz Custom, a w składni piszesz /DESIGN=grupa pre grupa*pre. Dokumentacja dopuszcza łączenie czynnika z kowariantą tylko gwiazdką (IBM Corp., b.d.-b).

Tests of Between-Subjects Effects, model z interakcją grupa * pre (zmienna zależna: post) – liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS
SourceType III Sum of SquaresdfMean SquareFSig.Partial Eta Squared
Corrected Model2292.3523764.11744.519.000.637
Intercept101.6641101.6645.923.017.072
grupa2.69212.692.157.693.002
pre2184.58412184.584127.279.000.626
grupa * pre32.725132.7251.907.171.024
Error1304.4487617.164
Total39892.00080
Corrected Total3596.80079

W tej tabeli patrzysz tylko na wiersz grupa * pre: F(1, 76) = 1.91, p = .171. Nachylenia nie różnią się istotnie (w R: 1.01 w grupie z quizami i 0.79 w kontrolnej). Wiersza grupa w tym modelu nie interpretuj. Przy interakcji w modelu porównuje on grupy dla pretestu równego zero, którego nikt nie uzyskał. Stąd absurdalne p = .693.

Nieistotna interakcja nie dowodzi równości nachyleń – test ma zwykle małą moc. Gdy interakcja jest wyraźna, efekt grupy zależy od poziomu wyjściowego i jedna liczba go nie opisze. Zostaw wtedy interakcję, wycentruj pretest i opisz efekt dla kilku wartości wyjściowych (zob. proste nachylenia). W naszym przykładzie usuwamy interakcję i wracamy do modelu bez niej.

Krok 2: właściwa ANCOVA

Model główny zawiera kowariantę i grupę bez interakcji. W oknie Model wróć do domyślnego ustawienia albo zostaw w Custom tylko grupa i pre.

Descriptive Statistics (zmienna zależna: post) – liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS
grupaMeanStd. DeviationN
quizy22.436.44140
kontrolna20.186.93940
Total21.306.74880

To średnie surowe. Grupa z quizami ma po kursie o 2.25 pkt więcej, ale zaczynała nieco niżej: średni pretest 18.93 (SD = 5.41) wobec 19.75 (SD = 6.47). Korelacja pre–post wynosi r = .76. Średnie pretestu policzysz osobno, np. w Descriptives, bo tabela GLM opisuje tylko zmienną zależną.

Test Levene’a z opcji Homogeneity tests nie wykazał różnic wariancji: F(1, 78) = 0.52, p = .473. Dokumentacja nie opisuje, czy w modelu z kowariantą SPSS liczy go na resztach. Odtworzyliśmy go na resztach modelu ANCOVA. Na surowych wynikach po kursie wniosek jest ten sam (p = .376).

Tests of Between-Subjects Effects, ANCOVA (zmienna zależna: post) – liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS
SourceType III Sum of SquaresdfMean SquareFSig.Partial Eta Squared
Corrected Model2259.62721129.81465.059.000.628
Intercept122.2611122.2617.040.010.084
pre2158.37712158.377124.288.000.617
grupa176.4661176.46610.162.002.117
Error1337.1737717.366
Total39892.00080
Corrected Total3596.80079

Pod tabelą typowy wydruk podaje R² = .628 (skorygowane .619). Wiersz grupa to efekt kursu przy wyrównanym preteście: F(1, 77) = 10.16, p = .002, η²p = .12. Wiersz pre pokazuje, że pretest silnie przewiduje posttest. Nie jest to hipoteza, ale warto go podać. Wierszy Intercept, Total i Corrected Model zwykle nie raportujesz. Typ III oznacza, że każdy efekt jest skorygowany o pozostałe (IBM, b.d.), więc kolejność pre i grupa nie zmienia wyników.

Parameter Estimates (zmienna zależna: post) – liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS
ParameterBStd. ErrortSig.95% Confidence IntervalPartial Eta Squared
Lower BoundUpper Bound
Intercept2.7551.6961.624.108−.6226.131.033
pre.882.07911.148.000.7241.040.617
[grupa=1]2.978.9343.188.0021.1184.838.117
[grupa=2]0a......

Ostatnia kategoria czynnika jest kategorią odniesienia. Jej parametr ma wartość 0 ze stopką „a. This parameter is set to zero because it is redundant” (treść stopki odtworzona z typowego wydruku). Dlatego [grupa=1] = 2.98 to przewaga grupy z quizami nad kontrolną przy tym samym preteście. Współczynnik pre = 0.88 mówi, że każdy punkt więcej na starcie to średnio 0.88 pkt więcej po kursie. Przy dwóch grupach t² = 3.188² = 10.16, czyli to samo F co w wierszu grupa wyżej.

Średnie skorygowane: EMMEANS

Średnie brzegowe (ang. estimated marginal means) to średnie przewidywane przez model, a nie obserwowane. Searle i in. (1980) zaproponowali tę nazwę zamiast „średnich najmniejszych kwadratów”. W ANCOVA SPSS liczy je przy kowariancie ustalonej na jej średniej. W składni zapiszesz to jawnie: /EMMEANS=TABLES(grupa) WITH(pre=MEAN) COMPARE ADJ(BONFERRONI) (IBM Corp., b.d.-b).

Estimates (EM Means, grupa; zmienna zależna: post) – liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS
grupaMeanStd. Error95% Confidence Interval
Lower BoundUpper Bound
quizy22.789a.66021.47524.102
kontrolna19.811a.66018.49821.125

Stopka „a” informuje, przy jakiej wartości kowarianty liczono średnie, tu pre = 19.34 (treść stopki odtworzona z typowego wydruku). Różnica surowa wynosiła 2.25 pkt, a skorygowana 2.98 pkt. Korekta zwiększyła różnicę, bo grupa z quizami zaczynała niżej.

Pairwise Comparisons (EM Means, korekta Bonferroni) – liczby policzone w R tymi samymi metodami co SPSS; układ tabeli jak w SPSS (para raz)
(I) grupa(J) grupaMean Difference (I-J)Std. ErrorSig.95% Confidence Interval for Difference
Lower BoundUpper Bound
quizykontrolna2.978*.934.0021.1184.838

Przy dwóch grupach korekta Bonferroniego niczego nie zmienia, a wynik pokrywa się z [grupa=1]. Przy trzech i więcej grupach ta tabela jest właściwym zamiennikiem testów post hoc. Pokazuje różnice średnich skorygowanych z przedziałami ufności. Rysunek 1 pokazuje, skąd biorą się te liczby.

Wykres rozrzutu wyniku po kursie względem wyniku przed kursem dla 80 osób w dwóch grupach z dwiema równoległymi liniami regresji; na pionowej linii średniego pretestu 19.34 zaznaczono średnie skorygowane: 22.79 w grupie z quizami i 19.81 w grupie kontrolnej
Rysunek 1. Wynik testu po kursie względem wyniku przed kursem. Linie to model ANCOVA ze wspólnym nachyleniem 0.88. Pionowy odstęp między nimi (2.98 pkt) to efekt grupy, a romby to średnie skorygowane przy średnim preteście. To nie jest wykres z SPSS. Obliczenia i rysunek: R (dane symulowane).

Wielkość efektu i zysk z kowarianty

Opcja Estimates of effect size daje η² cząstkowe (IBM, b.d.). W ANCOVA to odsetek wariancji wyjaśnionej przez grupę po odjęciu wariancji związanej z pretestem. Richardson (2011) przypomina, że η² cząstkowe i zwykłe łatwo pomylić, więc nazwij miarę dokładnie. Dokumentacja składni zaznacza też, że η² cząstkowe przeszacowuje rzeczywistą wielkość efektu (IBM Corp., b.d.-b). Najczytelniejszą miarą jest skorygowana różnica w punktach testu z 95% przedziałem ufności. Wersję standaryzowaną opisuje wpis ANCOVA w badaniu przed i po.

Ile dała kowarianta? Ta sama ANOVA bez pretestu daje F(1, 78) = 2.26, p = .137, η²p = .03. Pretest wyjaśnił dużą część różnic indywidualnych, więc błąd spadł z 3496 do 1337, a przedział dla efektu się zawęził. Van Breukelen (2006) pokazał, że w badaniach randomizowanych ANCOVA ma większą moc niż analiza zmian. Analizę główną zapisz jednak w planie przed zebraniem danych. Wybór „tej, która wyszła istotna” to błąd, nie zaleta.

Zapis wyników w stylu APA

Podaj sprawdzenie nachyleń, wynik ANCOVA z η² cząstkowym, średnie skorygowane z przedziałami ufności i skorygowaną różnicę. Wzór do dostosowania:

Wynik testu wiedzy po kursie porównano między grupami za pomocą analizy kowariancji (ANCOVA) z wynikiem przed kursem jako kowariantą. Nachylenia regresji wyniku po kursie na wynik przed kursem nie różniły się istotnie między grupami, F(1, 76) = 1.91, p = .171, dlatego interakcję usunięto z modelu. Wynik przed kursem był silnym predyktorem wyniku po kursie, b = 0.88, 95% CI [0.72, 1.04], F(1, 77) = 124.29, p < .001. Po uwzględnieniu wyniku wyjściowego osoby z grupy z quizami uzyskały wyższy wynik po kursie (Mskor = 22.79, 95% CI [21.48, 24.10]) niż osoby z grupy kontrolnej (Mskor = 19.81, 95% CI [18.50, 21.13]), F(1, 77) = 10.16, p = .002, η²p = .12. Skorygowana różnica wyniosła 2.98 pkt, 95% CI [1.12, 4.84]. Średnie skorygowane obliczono przy średnim wyniku przed kursem (19.34).

W tabeli wyników pokaż obok siebie średnie surowe przed i po oraz średnie skorygowane (zob. tabela ANOVA w APA). Zdania do innych analiz przygotuje generator opisu wyników APA.

Przykład reprodukowalny

Składnia SPSS i kod R

Przepis 1 to składnia do wklejenia w edytorze składni SPSS. Napisaliśmy ją według wykresu składni GLM i opisu podkomend DESIGN, PRINT i EMMEANS w Command Syntax Reference (IBM Corp., b.d.-b), ale nie uruchamialiśmy jej w SPSS. Przepis 2 w R tworzy pliki do pobrania i liczy wszystkie liczby z tabel: sumy kwadratów typu III, η² cząstkowe, test Levene’a, oszacowania parametrów i średnie skorygowane (pakiety car i emmeans).

1. Składnia SPSS: GLM z kowariantą (WITH), DESIGN i EMMEANS

Dane wejściowe: plik ancova-spss-dane.sav otwarty w SPSS (post, pre, grupa).

Co odczytać: w pierwszym poleceniu wiersz grupa * pre tabeli Tests of Between-Subjects Effects; w drugim tabele Descriptive Statistics, test Levene’a, Tests of Between-Subjects Effects, Parameter Estimates, Estimates i Pairwise Comparisons.

SPSS
* Składnia zgodna z opisem GLM: Univariate w Command Syntax Reference; nie była uruchamiana w SPSS.
* Krok 1. Jednorodność nachyleń: model z interakcją grupa*pre.
GLM post BY grupa WITH pre
  /METHOD=SSTYPE(3)
  /PRINT=ETASQ
  /DESIGN=grupa pre grupa*pre.

* Krok 2. ANCOVA bez interakcji ze średnimi skorygowanymi przy średniej kowarianty.
GLM post BY grupa WITH pre
  /METHOD=SSTYPE(3)
  /EMMEANS=TABLES(grupa) WITH(pre=MEAN) COMPARE ADJ(BONFERRONI)
  /PRINT=DESCRIPTIVE ETASQ HOMOGENEITY PARAMETER
  /DESIGN=pre grupa.

2. Te same liczby w R i pliki .sav oraz CSV

Dane wejściowe: 80 osób, dwie grupy po 40, pretest i posttest (dane symulowane, set.seed(3093)); pakiety haven, car i emmeans.

Co odczytać: statystyki opisowe, tabelę modelu z interakcją i nachylenia w grupach, tabelę ANCOVA z R², testy Levene’a, oszacowania parametrów, średnie skorygowane z porównaniem par i ANOVA bez kowarianty.

R
# B308 – ANCOVA w SPSS: liczby do tabel w układzie GLM Univariate
# Dane symulowane, set.seed(3093): test wiedzy ze statystyki (0–40 pkt) przed i po kursie,
# 80 osób losowo przydzielonych do zajęć z quizami (n = 40) albo zajęć standardowych (n = 40).
# Metody jak w GLM Univariate w SPSS: sumy kwadratów typu III, model jednorodności nachyleń
# z interakcją grupa*pre, cząstkowe eta kwadrat, średnie skorygowane (EMMEANS) przy średniej
# kowarianty i porównanie par z korektą Bonferroniego, oszacowania parametrów z ostatnią
# kategorią grupy jako odniesieniem.
suppressPackageStartupMessages({ library(haven); library(car); library(emmeans) })
set.seed(3093)
n <- 40
pre <- round(pmin(40, pmax(0, rnorm(2 * n, 20, 6))))
grupa <- rep(1:2, each = n)                       # 1 = quizy, 2 = kontrolna
post <- round(pmin(40, pmax(0, 5 + 0.75 * pre + 3 * (grupa == 1) + rnorm(2 * n, 0, 3.6))))
dane <- data.frame(id = 1:(2 * n), grupa = grupa, pre = pre, post = post)

# Krok 1. Plik .sav z etykietami zmiennych i wartości – i ten sam zbiór w CSV
sav <- dane
sav$id <- labelled(sav$id, label = "Numer osoby")
sav$grupa <- labelled(sav$grupa, labels = c("quizy" = 1, "kontrolna" = 2), label = "Grupa")
sav$pre <- labelled(sav$pre, label = "Test wiedzy przed kursem (0–40)")
sav$post <- labelled(sav$post, label = "Test wiedzy po kursie (0–40)")
write_sav(sav, "../ancova-spss-dane.sav")
write.csv(dane, "../ancova-spss-dane.csv", row.names = FALSE, fileEncoding = "UTF-8")

gr <- factor(dane$grupa, levels = 1:2, labels = c("quizy", "kontrolna"))
d <- data.frame(gr = gr, pre = dane$pre, post = dane$post)

# Krok 2. Statystyki opisowe (opcja Descriptive statistics) i średnie pretestu
opis <- rbind(data.frame(grupa = levels(gr), M_post = tapply(d$post, gr, mean), SD_post = tapply(d$post, gr, sd),
                         N = as.vector(table(gr)), M_pre = tapply(d$pre, gr, mean), SD_pre = tapply(d$pre, gr, sd)),
              data.frame(grupa = "Total", M_post = mean(d$post), SD_post = sd(d$post), N = nrow(d),
                         M_pre = mean(d$pre), SD_pre = sd(d$pre)))
print(opis, digits = 4, row.names = FALSE)
cat("korelacja pre–post:", round(cor(d$pre, d$post), 3), "\n")

# Tabela Tests of Between-Subjects Effects z typu III: Corrected Model, Intercept, efekty, Error, Total
tabela_spss <- function(m) {
  a <- Anova(m, type = 3)
  SSE <- a["Residuals", "Sum Sq"]; dfe <- a["Residuals", "Df"]
  SSm <- sum((fitted(m) - mean(d$post))^2); dfm <- length(coef(m)) - 1
  wiersz <- function(nazwa, SS, df) data.frame(Source = nazwa, SS = SS, df = df, MS = SS / df,
    F = (SS / df) / (SSE / dfe), Sig = pf((SS / df) / (SSE / dfe), df, dfe, lower.tail = FALSE), eta2p = SS / (SS + SSE))
  efekty <- setdiff(rownames(a), "Residuals")
  out <- rbind(wiersz("Corrected Model", SSm, dfm),
               do.call(rbind, lapply(efekty, function(e) wiersz(e, a[e, "Sum Sq"], a[e, "Df"]))),
               data.frame(Source = "Error", SS = SSE, df = dfe, MS = SSE / dfe, F = NA, Sig = NA, eta2p = NA),
               data.frame(Source = "Total", SS = sum(d$post^2), df = nrow(d), MS = NA, F = NA, Sig = NA, eta2p = NA),
               data.frame(Source = "Corrected Total", SS = sum((d$post - mean(d$post))^2), df = nrow(d) - 1,
                          MS = NA, F = NA, Sig = NA, eta2p = NA))
  print(out, digits = 6, row.names = FALSE)
  s <- summary(m); cat(sprintf("R Squared = %.3f (Adjusted R Squared = %.3f)\n", s$r.squared, s$adj.r.squared))
  invisible(out)
}

# Krok 3. Jednorodność nachyleń: model grupa, pre, grupa*pre (Model → Custom)
m_int <- lm(post ~ gr + pre + gr:pre, data = d, contrasts = list(gr = "contr.sum"))
t_int <- tabela_spss(m_int)
nach <- sapply(split(d, d$gr), function(z) coef(lm(post ~ pre, data = z))[["pre"]])
round(nach, 3)

# Krok 4. Właściwa ANCOVA: grupa i pre bez interakcji
m <- lm(post ~ gr + pre, data = d, contrasts = list(gr = "contr.sum"))
t_anc <- tabela_spss(m)
# Levene (opcja Homogeneity tests): na wartościach bezwzględnych reszt modelu ANCOVA, od średniej,
# a dla porównania na surowych wynikach po kursie
leveneTest(abs(resid(m)) ~ gr, center = mean)
leveneTest(post ~ gr, center = mean)

# Krok 5. Parameter Estimates: SPSS ustawia ostatnią kategorię czynnika (kontrolna) jako odniesienie
m_par <- lm(post ~ pre + relevel(gr, ref = "kontrolna"), data = d)
pe <- cbind(summary(m_par)$coefficients, confint(m_par))
pe <- cbind(pe, eta2p = pe[, "t value"]^2 / (pe[, "t value"]^2 + df.residual(m_par)))
print(round(pe, 3))

# Krok 6. EMMEANS: średnie skorygowane przy średniej kowarianty (WITH(pre=MEAN)) i porównanie par
cat("średnia pre:", round(mean(d$pre), 4), "\n")
em <- emmeans(m, ~ gr, at = list(pre = mean(d$pre)))
print(summary(em), digits = 5)
print(summary(pairs(em, adjust = "bonferroni"), infer = TRUE), digits = 5)
# Univariate Tests z EMMEANS ... COMPARE: przy dwóch grupach F = t² i to samo p co wiersz grupa
print(test(pairs(em), joint = TRUE))

# Krok 7. Dla porównania: ANOVA tylko na wynikach po kursie (bez kowarianty)
m0 <- lm(post ~ gr, data = d, contrasts = list(gr = "contr.sum"))
a0 <- Anova(m0, type = 3)
print(a0)
cat(sprintf("eta2p grupa bez kowarianty = %.3f; różnica surowa = %.3f\n",
            a0["gr", "Sum Sq"] / (a0["gr", "Sum Sq"] + a0["Residuals", "Sum Sq"]), diff(rev(tapply(d$post, gr, mean)))))

Wynik:

     grupa M_post SD_post  N M_pre SD_pre
     quizy  22.43   6.441 40 18.93  5.413
 kontrolna  20.18   6.939 40 19.75  6.468
     Total  21.30   6.748 80 19.34  5.941
korelacja pre–post: 0.761 
          Source          SS df         MS         F         Sig     eta2p
 Corrected Model  2292.35246  3  764.11749  44.51918 1.03111e-16 0.6373311
     (Intercept)   101.66436  1  101.66436   5.92319 1.72915e-02 0.0723018
              gr     2.69179  1    2.69179   0.15683 6.93202e-01 0.0020593
             pre  2184.58417  1 2184.58417 127.27871 6.63640e-18 0.6261291
          gr:pre    32.72546  1   32.72546   1.90666 1.71382e-01 0.0244736
           Error  1304.44754 76   17.16378        NA          NA        NA
           Total 39892.00000 80         NA        NA          NA        NA
 Corrected Total  3596.80000 79         NA        NA          NA        NA
R Squared = 0.637 (Adjusted R Squared = 0.623)
    quizy kontrolna 
    1.012     0.791 
          Source        SS df        MS         F         Sig     eta2p
 Corrected Model  2259.627  2 1129.8135  65.05937 2.85394e-17 0.6282326
     (Intercept)   122.261  1  122.2607   7.04028 9.67648e-03 0.0837727
              gr   176.466  1  176.4662  10.16166 2.07304e-03 0.1165840
             pre  2158.377  1 2158.3770 124.28835 9.80642e-18 0.6174642
           Error  1337.173 77   17.3659        NA          NA        NA
           Total 39892.000 80        NA        NA          NA        NA
 Corrected Total  3596.800 79        NA        NA          NA        NA
R Squared = 0.628 (Adjusted R Squared = 0.619)
Levene's Test for Homogeneity of Variance (center = mean)
      Df F value Pr(>F)
group  1  0.5205 0.4728
      78               
Levene's Test for Homogeneity of Variance (center = mean)
      Df F value Pr(>F)
group  1  0.7919 0.3763
      78               
                                    Estimate Std. Error t value Pr(>|t|)  2.5 % 97.5 % eta2p
(Intercept)                            2.755      1.696   1.624    0.108 -0.622  6.131 0.033
pre                                    0.882      0.079  11.148    0.000  0.724  1.040 0.617
relevel(gr, ref = "kontrolna")quizy    2.978      0.934   3.188    0.002  1.118  4.838 0.117
średnia pre: 19.3375 
 gr        emmean      SE df lower.CL upper.CL
 quizy     22.789 0.65971 77   21.475   24.102
 kontrolna 19.811 0.65971 77   18.498   21.125

Confidence level used: 0.95 
 contrast          estimate      SE df lower.CL upper.CL t.ratio p.value
 quizy - kontrolna   2.9777 0.93411 77   1.1176   4.8377   3.188  0.0021

Confidence level used: 0.95 
 df1 df2 F.ratio p.value
   1  77  10.162  0.0021

Anova Table (Type III tests)

Response: post
            Sum Sq Df  F value Pr(>F)    
(Intercept)  36295  1 809.8942 <2e-16 ***
gr             101  1   2.2593 0.1369    
Residuals     3496 78                    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
eta2p grupa bez kowarianty = 0.028; różnica surowa = 2.250

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3; rysunek wykonano w pakiecie ggplot2. Składni SPSS nie uruchamiano. W pracy podaj wersję SPSS lub R, której 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. 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. 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
  5. ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org

Typowe błędy

  • Pretest jako drugi czynnik albo w polu Random Factor(s). Kowarianta trafia do pola Covariate(s).
  • Brak sprawdzenia nachyleń albo interpretacja wiersza grupa z modelu z interakcją.
  • Interakcja grupa * pre zostawiona w modelu głównym bez opisu efektu dla różnych poziomów pretestu.
  • Testy z przycisku Post Hoc zamiast porównań w EM Means. Te pierwsze pomijają kowariantę.
  • Średnie surowe w opisie efektu. Wynik ANCOVA dotyczy średnich skorygowanych.
  • Kowarianta zmierzona po interwencji albo ANCOVA, która ma „wyrównać” grupy nierandomizowane (Miller i Chapman, 2001; zob. paradoks Lorda).
  • „Sig. = .000” przepisane dosłownie. Pisz p < .001.

Gdy pomiarów jest więcej niż dwa, zobacz ANOVA mieszaną w SPSS. Gdy masz dwa czynniki bez kowarianty – ANOVA dwuczynnikową w SPSS. Analizę dobierzesz w kreatorze doboru testu, a o regresji do średniej w badaniach przed i po przeczytasz w słowniku.

Najczęstsze pytania

Jak sprawdzić w SPSS założenie jednorodności nachyleń regresji?

W oknie Model wybierz Custom i zbuduj model z trzema członami: grupa, pre i grupa*pre (w składni /DESIGN=grupa pre grupa*pre). Odczytaj tylko wiersz interakcji w tabeli Tests of Between-Subjects Effects; w przykładzie F(1, 76) = 1.91, p = .171. Domyślny model pełny tej interakcji nie zawiera, bo nie łączy czynników z kowariantami (IBM, b.d.).

Dlaczego średnie z EM Means różnią się od średnich w Descriptive Statistics?

Descriptive Statistics podaje średnie obserwowane, a EM Means – średnie przewidywane przez model przy kowariancie ustalonej na jej średniej, czyli skorygowane (IBM Corp., b.d.-b). Jeśli grupy zaczynały z różnego poziomu, korekta przesuwa średnie: w przykładzie różnica surowa wynosi 2.25 pkt, a skorygowana 2.98 pkt.

Czy w ANCOVA w SPSS można użyć testów post hoc?

Przycisk Post Hoc w GLM porównuje średnie nieskorygowane, więc pomija kowariantę (IBM, b.d.). Porównania średnich skorygowanych uzyskasz w oknie EM Means: przenieś czynnik na listę Display Means For, zaznacz Compare main effects i korektę Bonferroni albo Sidak.

Który wiersz tabeli Tests of Between-Subjects Effects przepisać do pracy?

Wiersz czynnika grupy z modelu bez interakcji: F, df efektu i df błędu (wiersz Error), p i Partial Eta Squared, np. F(1, 77) = 10.16, p = .002, η²p = .12. Warto dodać wiersz kowarianty. Wierszy Intercept, Total i Corrected Model zwykle nie raportujesz.

Co zrobić, gdy interakcja grupy z kowariantą jest istotna?

Wtedy efekt grupy zależy od wyniku wyjściowego i jedna średnia skorygowana go nie opisze. Zostaw interakcję w modelu, wycentruj kowariantę i opisz różnicę grup dla kilku wartości wyjściowych, np. przez /EMMEANS=TABLES(grupa) WITH(pre=…) z różnymi wartościami (IBM Corp., b.d.-b). Pamiętaj, że test interakcji ma zwykle małą moc.

Powiązane hasła

Przeczytaj też

Masz badanie przed i po i nie wiesz, jak opisać ANCOVA z SPSS?

Sprawdzimy model, założenie jednorodności nachyleń, średnie skorygowane i opis 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. IBM Corp. (b.d.-a). GLM Univariate Analysis. IBM SPSS Statistics 31.0.0 documentation. https://www.ibm.com/docs/en/SSLVMB_31.0.0/statistics_mainhelp_ddita/spss/base/idh_glmu.html ● Otwarty dostęp
  2. IBM Corp. (b.d.-b). GLM: Univariate (Command Syntax Reference). IBM SPSS Statistics 31.0.0 documentation. https://www.ibm.com/docs/en/SSLVMB_31.0.0/statistics_reference_project_ddita/spss/advanced/syn_glm_univariate.html ● Otwarty dostęp
  3. IBM. (b.d.). IBM SPSS Statistics Base 31. Pobrano 1 listopada 2026 z https://www.ibm.com/docs/en/SSLVMB_31.0.0/pdf/IBM_SPSS_Statistics_Base.pdf ● Otwarty dostęp
  4. Miller, G. A., & Chapman, J. P. (2001). Misunderstanding analysis of covariance. Journal of Abnormal Psychology, 110(1), 40–48. https://doi.org/10.1037/0021-843X.110.1.40
  5. Richardson, J. T. E. (2011). Eta squared and partial eta squared as measures of effect size in educational research. Educational Research Review, 6(2), 135–147. https://doi.org/10.1016/j.edurev.2010.12.001
  6. Searle, S. R., Speed, F. M., & Milliken, G. A. (1980). Population marginal means in the linear model: An alternative to least squares means. The American Statistician, 34(4), 216–221. https://doi.org/10.1080/00031305.1980.10483031
  7. Van Breukelen, G. J. P. (2006). ANCOVA versus change from baseline had more power in randomized studies and more bias in nonrandomized studies. Journal of Clinical Epidemiology, 59(9), 920–925. https://doi.org/10.1016/j.jclinepi.2006.02.007

Cytowania BibTeX

@misc{ibmndglmunivariate31, author={{IBM Corp.}}, title={{GLM Univariate Analysis}}, howpublished={IBM SPSS Statistics 31.0.0 documentation}, year={b.d.-a}, publisher={IBM}, url={https://www.ibm.com/docs/en/SSLVMB_31.0.0/statistics_mainhelp_ddita/spss/base/idh_glmu.html}}
@misc{ibmndglmunivariatesyntax31, author={{IBM Corp.}}, title={{GLM: Univariate (Command Syntax Reference)}}, howpublished={IBM SPSS Statistics 31.0.0 documentation}, year={b.d.-b}, publisher={IBM}, url={https://www.ibm.com/docs/en/SSLVMB_31.0.0/statistics_reference_project_ddita/spss/advanced/syn_glm_univariate.html}}
@misc{ibmspssbase31, author={{IBM}}, title={{IBM SPSS Statistics Base 31}}, url={https://www.ibm.com/docs/en/SSLVMB_31.0.0/pdf/IBM_SPSS_Statistics_Base.pdf}}
@article{miller2001misunderstanding, author={Miller, Gregory A. and Chapman, Jean P.}, title={{Misunderstanding analysis of covariance}}, journal={Journal of Abnormal Psychology}, year={2001}, volume={110}, number={1}, pages={40--48}, doi={10.1037/0021-843x.110.1.40}}
@article{richardson2011eta, author={Richardson, John T. E.}, title={{Eta squared and partial eta squared as measures of effect size in educational research}}, journal={Educational Research Review}, year={2011}, volume={6}, number={2}, pages={135--147}, doi={10.1016/j.edurev.2010.12.001}}
@article{searle1980population, author={Searle, S. R. and Speed, F. M. and Milliken, G. A.}, title={{Population marginal means in the linear model: An alternative to least squares means}}, journal={The American Statistician}, year={1980}, volume={34}, number={4}, pages={216--221}, doi={10.1080/00031305.1980.10483031}}
@article{vanbreukelen2006ancova, author={Van Breukelen, Gerard J. P.}, title={{ANCOVA versus change from baseline had more power in randomized studies and more bias in nonrandomized studies}}, journal={Journal of Clinical Epidemiology}, year={2006}, volume={59}, number={9}, pages={920--925}, doi={10.1016/j.jclinepi.2006.02.007}}
R