Słownik metodologiczny · Modele regresji

Regresja beta – jak modelować odsetki i proporcje z przedziału (0, 1)?

Regresja beta modeluje zmienną ciągłą z przedziału (0, 1), np. odsetek poprawnych odpowiedzi. Pokazujemy łącze logit, parametr precyzji φ, co zrobić z zerami i jedynkami, przykład w R (mgcv) i opis do pracy.

Strona główna / Słownik / Regresja beta
W skrócie: Regresja beta to model dla zmiennej ciągłej z przedziału (0, 1), np. odsetka czy proporcji. Średnią łączy z predyktorami funkcja logit, a parametr precyzji φ opisuje rozrzut, który maleje przy średnich bliskich 0 i 1.

Co to jest regresja beta?

Regresja beta (ang. beta regression) to model dla zmiennej ciągłej z przedziału (0, 1), np. odsetka poprawnych odpowiedzi, udziału czasu czy wskaźnika pokrycia. Ferrari i Cribari-Neto (2004) zapisali rozkład beta przez średnią μ i parametr precyzji φ. Wariancja wynosi μ(1 − μ)/(1 + φ), więc rozrzut maleje, gdy średnia zbliża się do 0 lub 1. Zwykła regresja liniowa pomija tę heteroskedastyczność i może przewidywać wartości spoza przedziału.

Jak interpretować

Średnią łączy się z predyktorami najczęściej funkcją łączącą logit: logit(μ) = b₀ + b₁x, jak w regresji logistycznej. Wtedy exp(b) to iloraz szans dla średniej proporcji (Ferrari i Cribari-Neto, 2004). Większe φ oznacza mniejszy rozrzut wokół średniej. Smithson i Verkuilen (2006) pokazali, że precyzję można modelować własnymi predyktorami (podmodel z łączem logarytmicznym), co wprost opisuje heteroskedastyczność. Podobnie regresja gamma dobiera rozkład do wyników dodatnich bez górnej granicy.

Zera i jedynki

Rozkład beta nie obejmuje wartości dokładnie 0 i 1. Smithson i Verkuilen (2006) zaproponowali przekształcenie y′ = [y(n − 1) + 0.5]/n, które przy n = 200 zamienia 0 na 0.0025, a 1 na 0.9975. Przy wielu zerach lub jedynkach lepsze są modele, które opisują je osobno.

Przykład

W symulowanych danych 200 studentów odsetek poprawnych odpowiedzi w teście zależał od tygodniowej liczby godzin ćwiczeń (0–10). W regresji beta z łączem logit współczynnik godzin wyniósł b = 0.248, SE = 0.012, z = 21.19, p < .001. Każda godzina mnożyła szanse średniego odsetka przez 1.28, a precyzja wyniosła φ = 19.81. Przewidywany odsetek rósł z 27.4% przy 0 godzin do 56.6% przy 5 i 81.8% przy 10 godzinach.

Jak opisać w pracy

Odsetek poprawnych odpowiedzi analizowano regresją beta z łączem logit. Liczba godzin ćwiczeń wiązała się z wyższym odsetkiem, b = 0.248, SE = 0.012, z = 21.19, p < .001; każda godzina zwiększała szanse średniego odsetka 1.28 raza (φ = 19.81).

Na co uważać

  • Odsetek z liczby prób to nie wynik ciągły. Gdy znasz liczbę sukcesów i prób (np. 7 z 10 zadań), użyj modelu dwumianowego, jak we wpisie Jak porównać odsetki w dwóch grupach.
  • Automatyczne przycinanie. Rodzina betar() w mgcv przesuwa 0 i 1 o bardzo małą wartość, co może zniekształcić wynik. Przekształć je jawnie i opisz to w metodzie.
  • Nieliniowość. W gam() możesz dodać splajn, np. s(godziny), opisany we wpisie Nieliniowe zależności – splajny i modele GAM.
Przykład reprodukowalny

Regresja beta w R

Pakiet betareg nie jest potrzebny: kod dopasowuje regresję beta funkcją gam() z pakietu mgcv i rodziną betar(), a na końcu pokazuje przekształcenie Smithsona i Verkuilena.

Odsetek poprawnych odpowiedzi a liczba godzin ćwiczeń

Dane wejściowe: odsetek poprawnych odpowiedzi w teście i tygodniowa liczba godzin ćwiczeń (0–10) u 200 studentów (dane symulowane, set.seed(3421)).

Co odczytać: współczynniki na skali logit z SE, z i p, iloraz szans dla godzin i precyzję φ, przewidywane odsetki dla 0, 5 i 10 godzin oraz wartości 0, 0.5 i 1 po przekształceniu.

R
suppressPackageStartupMessages(library(mgcv))
set.seed(3421)
n <- 200
godziny <- round(runif(n, 0, 10), 1)                 # godziny ćwiczeń tygodniowo
mu  <- plogis(-1 + 0.25 * godziny)                   # średni odsetek poprawnych odpowiedzi
wynik <- rbeta(n, mu * 20, (1 - mu) * 20)            # rozkład beta, precyzja phi = 20
m <- gam(wynik ~ godziny, family = betar(link = "logit"))
round(summary(m)$p.table, 3)
round(c(OR = exp(coef(m)[["godziny"]]),
        phi = m$family$getTheta(TRUE)), 2)           # iloraz szans dla średniej i precyzja
round(predict(m, data.frame(godziny = c(0, 5, 10)), type = "response"), 3)
sv <- function(y, n = length(y)) (y * (n - 1) + 0.5) / n   # Smithson i Verkuilen (2006)
round(sv(c(0, 0.5, 1), n = 200), 4)
Wynik w R
            Estimate Std. Error z value Pr(>|z|)
(Intercept)   -0.974      0.064 -15.268        0
godziny        0.248      0.012  21.192        0
   OR   phi 
 1.28 19.81 
    1     2     3 
0.274 0.566 0.818 
[1] 0.0025 0.5000 0.9975
[1] 0.115 0.936

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet mgcv). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  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. mgcv (wersja 1.9-4): Wood, S. N. (2011). Fast stable restricted maximum likelihood and marginal likelihood estimation of semiparametric generalized linear models. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 73(1), 3–36. https://doi.org/10.1111/j.1467-9868.2010.00749.x

Najczęstsze pytania

Kiedy wybrać regresję beta zamiast regresji logistycznej?

Gdy wynik jest ciągłym odsetkiem bez znanej liczby prób, np. udziałem czasu albo wskaźnikiem pokrycia. Gdy znasz liczbę sukcesów i prób, właściwszy jest model dwumianowy, czyli regresja logistyczna.

Co oznacza parametr precyzji φ w regresji beta?

Opisuje rozrzut wyników wokół średniej: wariancja wynosi μ(1 − μ)/(1 + φ). Im większe φ, tym wyniki leżą bliżej przewidywanej średniej.

Jak policzyć regresję beta w R bez pakietu betareg?

Użyj mgcv::gam(y ~ x, family = betar(link = "logit")). Współczynniki są na skali logit, a precyzję φ zwraca m$family$getTheta(TRUE).

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. Ferrari, S., & Cribari-Neto, F. (2004). Beta regression for modelling rates and proportions. Journal of Applied Statistics, 31(7), 799–815. https://doi.org/10.1080/0266476042000214501
  2. Smithson, M., & Verkuilen, J. (2006). A better lemon squeezer? Maximum-likelihood regression with beta-distributed dependent variables. Psychological Methods, 11(1), 54–71. https://doi.org/10.1037/1082-989x.11.1.54

Cytowania BibTeX

@article{ferrari2004beta, author={Ferrari, Silvia and Cribari-Neto, Francisco}, title={{Beta regression for modelling rates and proportions}}, journal={Journal of Applied Statistics}, year={2004}, volume={31}, number={7}, pages={799--815}, doi={10.1080/0266476042000214501}}
@article{smithson2006better, author={Smithson, Michael and Verkuilen, Jay}, title={{A better lemon squeezer? Maximum-likelihood regression with beta-distributed dependent variables}}, journal={Psychological Methods}, year={2006}, volume={11}, number={1}, pages={54--71}, doi={10.1037/1082-989x.11.1.54}}
R