Słownik metodologiczny · Statystyka opisowa

Transformacja Boxa–Coxa – jak dobrać przekształcenie skośnej zmiennej

Box–Cox wybiera z danych potęgowe przekształcenie zmiennej zależnej, od odwrotności przez logarytm po pierwiastek. Pokazujemy wzór, wybór λ w R i opis do pracy.

W skrócie: Transformacja Boxa–Coxa przekształca dodatnią zmienną zależną wzorem (yλ − 1)/λ, a λ dobiera metodą największej wiarygodności do reszt modelu. λ = 0 oznacza logarytm, λ = 0.5 pierwiastek. Podaj λ z przedziałem ufności i opisuj wyniki w jednostkach, które da się zinterpretować.

Co to jest transformacja Boxa–Coxa?

Transformacja Boxa–Coxa (ang. Box–Cox transformation) to rodzina potęgowych przekształceń dodatniej zmiennej zależnej z jednym parametrem λ, dobieranym tak, by model liniowy na przekształconych danych miał reszty możliwie bliskie normalnym i o stałej wariancji. Box i Cox (1964) zaproponowali wybór λ metodą największej wiarygodności i rozdzielili wkład normalności, stałości wariancji i addytywności w ten wybór. Stosuje się ją przy prawostronnej skośności czasów, stężeń czy kwot.

Jak liczyć

y(λ) = (yλ − 1) / λ dla λ ≠ 0,   y(λ) = ln y dla λ = 0

λ = 1 oznacza brak zmiany kształtu, λ = 0.5 to w praktyce pierwiastek, λ = 0 to logarytm, a λ = −1 odwrotność. W R funkcja MASS::boxcox() liczy profil wiarygodności dla modelu lm(), więc λ dobiera się do reszt modelu, a nie do surowej zmiennej. Wymaga ona wartości dodatnich.

Przykład

Porównano czas rozwiązania zadania w warunku presji i w grupie kontrolnej, po 50 osób (dane symulowane, od 9.1 do 118.5 s). Najlepsze λ wyniosło 0.36, 95% CI [0.02, 0.71]. Przedział wyklucza λ = 1, czyli dane bez zmian, a obejmuje pierwiastek (λ = 0.5). Po transformacji skośność reszt spadła z 0.75 do 0.08, a test Shapiro–Wilka przestał wskazywać odchylenie od normalności (p = .003 przed, .892 po). Różnica między warunkami pozostała istotna, t(98) = −2.74, p = .007.

Jak opisać w pracy

Ze względu na prawostronną skośność reszt czas rozwiązania zadania przekształcono transformacją Boxa–Coxa (λ = 0.36, 95% CI [0.02, 0.71], estymacja metodą największej wiarygodności). Po transformacji skośność reszt wyniosła 0.08. Czas był dłuższy w warunku presji niż w grupie kontrolnej (Mdn = 52.7 vs 37.5 s), t(98) = −2.74, p = .007.

Na co uważać

  • Przekształcona skala nie ma jednostek. Średnich po transformacji nie da się czytać w sekundach, dlatego opisuj wyniki medianami lub wartościami po transformacji odwrotnej.
  • Zaokrąglij λ do wartości, którą da się zinterpretować, jeśli mieści się w przedziale ufności. Keene (1995) przekonuje, że logarytm ma szczególne zalety i decyzję o nim lepiej podjąć w protokole niż na podstawie danych.
  • Transformacja to nie jedyna droga. Przy skośnych wynikach rozważ też model z innym rozkładem albo sprawdź, czy odchylenie od normalności w ogóle ma znaczenie przy Twojej liczebności.

Jak ocenić rozkład reszt przed decyzją o transformacji, pokazujemy we wpisie jak sprawdzić normalność rozkładu.

Przykład reprodukowalny

Box–Cox w R

Kod wyznacza λ z profilu wiarygodności, przekształca czas i porównuje skośność reszt oraz test Shapiro–Wilka przed transformacją i po niej.

Wybór λ funkcją MASS::boxcox()

Dane wejściowe: wektor czas (s) i czynnik warunek (kontrola, presja), po 50 osób; funkcja skos() liczy skośność (dane symulowane, pełny skrypt w pliku kodu).

Co odczytać: λ z 95% CI, skośność reszt i p testu Shapiro–Wilka przed i po.

R
library(MASS)
bc  <- boxcox(lm(czas ~ warunek), lambda = seq(-2, 2, 0.01), plotit = FALSE)
lam <- bc$x[which.max(bc$y)]
ci  <- range(bc$x[bc$y > max(bc$y) - qchisq(0.95, 1) / 2])   # 95% CI dla lambda
round(c(lambda = lam, CI_lo = ci[1], CI_hi = ci[2]), 2)
czas_bc <- (czas^lam - 1) / lam
round(c(skosnosc_przed = skos(resid(lm(czas ~ warunek))),
        skosnosc_po    = skos(resid(lm(czas_bc ~ warunek)))), 2)
round(c(SW_p_przed = shapiro.test(resid(lm(czas ~ warunek)))$p.value,
        SW_p_po    = shapiro.test(resid(lm(czas_bc ~ warunek)))$p.value), 3)
Wynik w R
lambda  CI_lo  CI_hi
  0.36   0.02   0.71
skosnosc_przed    skosnosc_po
          0.75           0.08
SW_p_przed    SW_p_po
     0.003      0.892 

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 z pakietem MASS.

  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. MASS (wersja 7.3.65): Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S (4th ed.). Springer.

Najczęstsze pytania

Co zrobić, gdy zmienna ma zera lub wartości ujemne przed transformacją Boxa–Coxa?

Klasyczny wzór wymaga wartości dodatnich. Można dodać stałą, ale jej wybór zmienia wynik. Przy zerach i zliczeniach lepiej rozważyć model z odpowiednim rozkładem.

Jak interpretować λ z transformacji Boxa–Coxa?

λ bliskie 1 oznacza, że transformacja jest zbędna, 0.5 to pierwiastek, 0 to logarytm, a −1 odwrotność. Jeśli przedział ufności obejmuje taką wartość, użyj jej.

Czy Box–Cox przekształca predyktory, czy zmienną zależną?

Klasycznie zmienną zależną, a λ dobiera się do reszt modelu z predyktorami. Do predyktorów stosuje się czasem osobne przekształcenia potęgowe.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Box, G. E. P., & Cox, D. R. (1964). An analysis of transformations. Journal of the Royal Statistical Society: Series B (Methodological), 26(2), 211–243. https://doi.org/10.1111/j.2517-6161.1964.tb00553.x
  2. Keene, O. N. (1995). The log transformation is special. Statistics in Medicine, 14(8), 811–819. https://doi.org/10.1002/sim.4780140810

Cytowania BibTeX

@article{box1964analysis, author={Box, George E. P. and Cox, David R.}, title={{An analysis of transformations}}, journal={Journal of the Royal Statistical Society: Series B (Methodological)}, year={1964}, volume={26}, number={2}, pages={211--243}, doi={10.1111/j.2517-6161.1964.tb00553.x}}
@article{keene1995log, author={Keene, Oliver N.}, title={{The log transformation is special}}, journal={Statistics in Medicine}, year={1995}, volume={14}, number={8}, pages={811--819}, doi={10.1002/sim.4780140810}}
R