Co to jest kodowanie efektów?
Kodowanie efektów (ang. effect coding, też sum coding lub kodowanie dewiacyjne) to sposób zamiany zmiennej jakościowej na predyktory, w którym grupa odniesienia dostaje kod −1 zamiast 0. Współczynnik każdej zmiennej pokazuje wtedy odchylenie średniej grupy od nieważonej średniej średnich grupowych, a stała – samą tę średnią (Alkharusi, 2012). Hasło dummy coding porównuje oba sposoby dla jednego czynnika, gdzie dają to samo R² i F. W planie czynnikowym wybór kodowania zmienia sens współczynników i testów.
Dlaczego to ważne przy interakcji
Przy kodowaniu zero-jedynkowym współczynnik czynnika A w modelu z interakcją A × B to efekt prosty A na poziomie odniesienia B, a nie efekt główny. Kody efektów sumują się do zera, więc współczynnik A opisuje efekt uśredniony po poziomach B. Od kodowania zależą też testy typu III: hipotezy o efektach głównych testują one tylko przy kodach sumujących się do zera. W R ustawisz je argumentem contrasts = list(A = contr.sum). Schad i in. (2020) wyjaśniają ten i inne kontrasty w modelach liniowych w R.
Przykład
Plan 2 (kontrola, trening) × 2 (wyspany, niewyspany), po 30 osób, wynik testu pamięci (dane symulowane). Średnie w komórkach: kontrola 50.91 i 44.11, trening 57.54 i 46.36.
- Kodowanie zero-jedynkowe: współczynnik treningu = 6.63, czyli różnica tylko u osób wyspanych.
- Kodowanie efektów (kontrola = 1, trening = −1): współczynnik = −2.22, czyli połowa różnicy średnich brzegowych (4.44 pkt); stała 49.73 to średnia średnich.
- Test typu III dla snu: F(1, 116) = 10.69 przy kodach 0/1 (to efekt snu tylko w grupie kontrolnej) i F(1, 116) = 37.37 przy kodach efektów.
Jak opisać w pracy
Na co uważać
- Przy nierównych grupach stała to nieważona średnia średnich, a nie średnia wszystkich osób (Alkharusi, 2012).
- Przy kodach ±1 współczynnik to połowa różnicy między dwoma poziomami. Przy kodach ±0.5 jest równy różnicy. Zawsze podaj schemat kodowania.
- Dopasowanie modelu się nie zmienia. Test interakcji w przykładzie jest taki sam przy obu kodowaniach, a średnie brzegowe z emmeans nie zależą od kodowania.
Kodowanie predyktorów w regresji opisuje wpis Regresja wieloraka krok po kroku, a ANOVA czynnikową – ANOVA krok po kroku.
Kodowanie efektów w R
Kod dopasowuje ten sam model 2 × 2 z kodowaniem zero-jedynkowym i z kodowaniem efektów, a potem porównuje współczynniki i testy typu III z pakietu car.
contr.treatment a contr.sum w modelu z interakcją
R
suppressPackageStartupMessages(library(car))
set.seed(275)
d <- expand.grid(osoba = 1:30, trening = c("kontrola", "trening"), sen = c("wyspany", "niewyspany"))
d$pamiec <- round(50 + 8 * (d$trening == "trening") - 6 * (d$sen == "niewyspany") -
6 * (d$trening == "trening") * (d$sen == "niewyspany") + rnorm(nrow(d), 0, 8), 1)
round(tapply(d$pamiec, list(d$trening, d$sen), mean), 2) # średnie w komórkach
m_dummy <- lm(pamiec ~ trening * sen, data = d) # contr.treatment
m_efekty <- lm(pamiec ~ trening * sen, data = d,
contrasts = list(trening = contr.sum, sen = contr.sum)) # kodowanie efektów (+1/−1)
round(coef(m_dummy), 2)
round(coef(m_efekty), 2)
Anova(m_dummy, type = 3)[c("trening", "sen"), c("F value", "Pr(>F)")] # typ III ze złym kodowaniem
Anova(m_efekty, type = 3)[c("trening", "sen", "trening:sen"), c("F value", "Pr(>F)")] # typ III z kodowaniem efektówWynik w R
wyspany niewyspany
kontrola 50.91 44.11
trening 57.54 46.36
(Intercept) treningtrening
50.91 6.63
senniewyspany treningtrening:senniewyspany
-6.80 -4.38
(Intercept) trening1 sen1 trening1:sen1
49.73 -2.22 4.50 -1.09
F value Pr(>F)
trening 10.162 0.001843 **
sen 10.690 0.001418 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
F value Pr(>F)
trening 9.1152 0.003118 **
sen 37.3699 1.35e-08 ***
trening:sen 2.2176 0.139155
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet car).
- 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/
- 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/
Najczęstsze pytania
Kiedy używać kodowania efektów zamiast dummy coding?
Gdy model ma interakcję czynników, a chcesz interpretować współczynniki lub testy typu III jako efekty główne. Przy jednym czynniku oba kodowania dają to samo dopasowanie.
Jak włączyć kodowanie efektów w R?
Podaj w modelu contrasts = list(czynnik = contr.sum) albo ustaw globalnie options(contrasts = c("contr.sum", "contr.poly")) przed dopasowaniem modelu.
Co oznacza współczynnik przy kodowaniu efektów?
To odchylenie średniej danej grupy od nieważonej średniej średnich grupowych. Przy dwóch poziomach i kodach ±1 jest równy połowie różnicy między nimi.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Regresja wieloraka krok po kroku
Model i hipotezy, przygotowanie danych, założenia i diagnostyka, ΔR², interpretacja b, β i sr², kod R, SPSS i opis APA – na jednym przykładzie.
Czytaj →PoradnikANOVA krok po kroku
Jednoczynnikowa i dwuczynnikowa ANOVA na przykładach: założenia, test Welcha, post hoc, η² i ω², efekty proste, typy sum kwadratów i opis APA.
Czytaj →Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Alkharusi, H. (2012). Categorical variables in regression analysis: A comparison of dummy and effect coding. International Journal of Education, 4(2), 202–210. https://doi.org/10.5296/ije.v4i2.1962 ● Otwarty dostęp
- Schad, D. J., Vasishth, S., Hohenstein, S., & Kliegl, R. (2020). How to capitalize on a priori contrasts in linear (mixed) models: A tutorial. Journal of Memory and Language, 110, Article 104038. https://doi.org/10.1016/j.jml.2019.104038 ● Otwarty dostęp
Cytowania BibTeX
@article{alkharusi2012categorical, author={Alkharusi, Hussain}, title={{Categorical variables in regression analysis: A comparison of dummy and effect coding}}, journal={International Journal of Education}, year={2012}, volume={4}, number={2}, pages={202--210}, doi={10.5296/ije.v4i2.1962}}@article{schad2020capitalize, author={Schad, Daniel J. and Vasishth, Shravan and Hohenstein, Sven and Kliegl, Reinhold}, title={{How to capitalize on a priori contrasts in linear (mixed) models: A tutorial}}, journal={Journal of Memory and Language}, year={2020}, volume={110}, eid={104038}, doi={10.1016/j.jml.2019.104038}}