Co to jest regresja gamma?
Regresja gamma (ang. gamma regression, gamma GLM) to uogólniony model liniowy dla wyniku ciągłego, dodatniego i prawostronnie skośnego: czasu wykonania zadania, długości pobytu w szpitalu, kosztów czy stężeń. Rozkład gamma był jednym z przykładów, na których Nelder i Wedderburn (1972) zilustrowali uogólnione modele liniowe. W modelu gamma odchylenie standardowe rośnie proporcjonalnie do średniej, więc współczynnik zmienności jest stały. Rosnący rozrzut przy wyższych wynikach to dla tego modelu cecha danych, a nie naruszenie homoskedastyczności.
Jak interpretować
Najczęściej stosuje się logarytmiczną funkcję łączącą: ln μ = b0 + b1x. Wtedy exp(b) to iloraz średnich arytmetycznych. Wartość 0.80 oznacza średnią mniejszą o 20%. Alternatywą jest transformacja logarytmiczna wyniku i zwykła regresja, ale exp(b) to wtedy iloraz średnich geometrycznych. Manning i Mullahy (2001) pokazali w symulacjach, że żadne z tych podejść nie wygrywa zawsze. Przy skośności i heteroskedastyczności zły wybór może obciążyć wynik albo obniżyć precyzję, dlatego autorzy podają algorytm wyboru.
Przykład
W symulowanych danych 160 osób rozwiązywało zadanie z podpowiedzią albo bez niej (czas: M = 84.2 s, SD = 59.8, zakres 8.6–353.0). W regresji gamma z łączem logarytmicznym i stażem jako kowariantą podpowiedź skracała średni czas o 23.8%: iloraz średnich = 0.762, 95% CI [0.613, 0.946], t(157) = −2.47, p = .015. Staż nie miał istotnego związku z czasem (0.974, p = .143). Regresja na ln(czas) dała iloraz średnich geometrycznych 0.737.
Jak opisać w pracy
Na co uważać
- Tylko wartości dodatnie. Przy wielu zerach (np. koszty osób, które nie korzystały z usług) potrzebny jest model dwuczęściowy, podobny do modelu hurdle.
- Ustaw łącze. W R
family = Gammabez argumentu używa funkcji odwrotnej (1/μ), trudnej w interpretacji. WpiszGamma(link = "log"). - Sprawdź reszty modelu, a nie rozkład surowych wyników (zob. Normalność reszt czy zmiennych).
Regresja gamma w R
Kod dopasowuje regresję gamma z logarytmiczną funkcją łączącą (glm(..., family = Gamma(link = "log"))), przelicza współczynniki na ilorazy średnich z 95% CI i porównuje je z regresją na ln(czas).
Czas rozwiązania zadania: regresja gamma i regresja na logarytmie
R
set.seed(291)
n <- 160
warunek <- factor(rep(c("standard", "podpowiedz"), each = n / 2), levels = c("standard", "podpowiedz"))
staz <- round(runif(n, 0, 10), 1) # lata doświadczenia (dane symulowane)
mu <- exp(log(120) - 0.25 * (warunek == "podpowiedz") - 0.04 * staz)
czas <- round(rgamma(n, shape = 2, rate = 2 / mu), 1) # czas rozwiązania zadania (s), skośny
round(c(M = mean(czas), SD = sd(czas), min = min(czas), max = max(czas)), 1)
m_g <- glm(czas ~ warunek + staz, family = Gamma(link = "log"))
round(summary(m_g)$coefficients, 3)
df.residual(m_g) # df dla testów t
round(summary(m_g)$dispersion, 3) # fi; 1/fi ~ parametr kształtu
round(exp(cbind(IR = coef(m_g), confint.default(m_g))), 3) # ilorazy średnich z 95% CI (Wald)
round(100 * (1 - exp(coef(m_g)["warunekpodpowiedz"])), 1) # o ile % krótszy średni czas
m_log <- lm(log(czas) ~ warunek + staz) # dla porównania: MNK na ln(czas)
round(exp(coef(m_log)), 3) # ilorazy średnich geometrycznychWynik w R
M SD min max
84.2 59.8 8.6 353.0
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.705 0.129 36.413 0.000
warunekpodpowiedz -0.272 0.110 -2.468 0.015
staz -0.026 0.018 -1.472 0.143
[1] 157
[1] 0.486
IR 2.5 % 97.5 %
(Intercept) 110.481 85.764 142.321
warunekpodpowiedz 0.762 0.613 0.946
staz 0.974 0.940 1.009
warunekpodpowiedz
23.8
(Intercept) warunekpodpowiedz staz
88.088 0.737 0.975 Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats). W pracy podaj wersję R, której faktycznie użyto (sessionInfo()).
- 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/
Najczęstsze pytania
Kiedy wybrać regresję gamma zamiast regresji liniowej?
Gdy wynik jest dodatni, prawostronnie skośny, a jego rozrzut rośnie wraz ze średnią, np. czasy reakcji, długość hospitalizacji albo koszty. Regresja liniowa może wtedy przewidywać wartości ujemne.
Czy regresja gamma działa, gdy w danych są zera?
Nie, rozkład gamma dotyczy tylko wartości dodatnich. Przy wielu zerach użyj modelu dwuczęściowego: osobno szansa wartości dodatniej i osobno jej wielkość.
Jak interpretować exp(b) w regresji gamma z łączem logarytmicznym?
Jako iloraz średnich arytmetycznych: exp(b) = 0.80 oznacza średnią mniejszą o 20% przy wzroście predyktora o jednostkę lub w porównywanej grupie.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Normalność reszt czy zmiennych?
Dlaczego w regresji i ANOVA sprawdzasz reszty, a nie surową zmienną: przykład w R z dwugarbnym rozkładem, wykres Q-Q reszt i wpływ liczebności próby.
Czytaj →PoradnikDiagnostyka regresji w R
Reszty studentyzowane, dźwignia, Cook i DFBETAS, VIF, maskowanie heteroskedastyczności, HC3 i analiza wrażliwości – z danymi i kodem R.
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)
- Manning, W. G., & Mullahy, J. (2001). Estimating log models: To transform or not to transform? Journal of Health Economics, 20(4), 461–494. https://doi.org/10.1016/s0167-6296(01)00086-8 ● Otwarty dostęp: pełny tekst
- Nelder, J. A., & Wedderburn, R. W. M. (1972). Generalized linear models. Journal of the Royal Statistical Society: Series A (General), 135(3), 370–384. https://doi.org/10.2307/2344614
Cytowania BibTeX
@article{manning2001estimating, author={Manning, Willard G. and Mullahy, John}, title={{Estimating log models: To transform or not to transform?}}, journal={Journal of Health Economics}, year={2001}, volume={20}, number={4}, pages={461--494}, doi={10.1016/s0167-6296(01)00086-8}}@article{nelder1972generalized, author={Nelder, J. A. and Wedderburn, R. W. M.}, title={{Generalized linear models}}, journal={Journal of the Royal Statistical Society: Series A (General)}, year={1972}, volume={135}, number={3}, pages={370--384}, doi={10.2307/2344614}}