Słownik metodologiczny · Modele regresji

Założenie proporcjonalnych szans – jak je sprawdzić w regresji porządkowej?

Regresja porządkowa zakłada, że predyktor tak samo zmienia szanse przy każdym progu skali. Pokazujemy, jak to sprawdzić testem ilorazu wiarygodności i co zrobić przy naruszeniu.

Strona główna / Słownik / Proporcjonalne szanse
W skrócie: Założenie proporcjonalnych szans mówi, że w regresji porządkowej predyktor ma ten sam iloraz szans dla każdego progu skali. Sprawdzisz je testem Branta albo testem ilorazu wiarygodności; przy naruszeniu dopuść osobne nachylenia albo wybierz inny model porządkowy.

Co to jest założenie proporcjonalnych szans?

Założenie proporcjonalnych szans (ang. proportional odds assumption, też założenie równoległych linii) to warunek kumulacyjnego modelu logitowego w regresji porządkowej: predyktor tak samo zmienia szanse przekroczenia każdego progu skali. Dzięki temu jeden iloraz szans opisuje cały wynik, np. odpowiedź na pozycji skali Likerta. McCullagh (1980) uznał model proporcjonalnych szans za jeden z najbardziej użytecznych modeli dla danych porządkowych.

Jak sprawdzić?

Model proporcjonalnych szans można zapisać jako serię regresji logistycznych dla kolejnych podziałów skali, które mają wspólne współczynniki. Brant (1990) zaproponował formalny test oparty na porównaniu osobnych dopasowań tych regresji. Drugi sposób to test ilorazu wiarygodności: model z jednym nachyleniem porównuje się z modelem, w którym każdy próg ma własne nachylenie. Liczba stopni swobody to (liczba progów − 1) × liczba predyktorów.

Przykład

W danych symulowanych 400 osób oceniało, jak często chodzi do lekarza (nigdy, rzadko, czasami, często), a predyktorem był lęk zdrowotny. Model proporcjonalnych szans daje jeden OR = 1.98. Osobne regresje logistyczne dają jednak OR = 1.64 dla progu „rzadko i częściej”, 1.78 dla „czasami i częściej” i 2.48 dla „często”. Test ilorazu wiarygodności potwierdza różnicę: χ²(2) = 9.14, p = .010. Lęk silniej odróżnia osoby chodzące do lekarza często od reszty niż osoby, które nie chodzą wcale, a wspólny OR uśrednia ten wzorzec.

Jak opisać w pracy

Założenie proporcjonalnych szans sprawdzono testem ilorazu wiarygodności, porównując model ze wspólnym nachyleniem z modelem z osobnymi nachyleniami dla progów. Założenie zostało naruszone, χ²(2) = 9.14, p = .010: ilorazy szans dla lęku z osobnych regresji logistycznych rosły od 1.64 dla najniższego do 2.48 dla najwyższego progu.

Na co uważać

  • Patrz na wielkość różnic, nie tylko na p. W dużej próbie test wychwyci różnice bez praktycznego znaczenia, a w małej przeoczy wyraźne.
  • Naruszenie nie przekreśla analizy. Możesz dopuścić osobne nachylenie tylko dla predyktora, który narusza założenie (model częściowych proporcjonalnych szans), wybrać model sekwencyjny lub kategorii przyległych (Bürkner i Vuorre, 2019) albo wielomianową regresję logistyczną, która jednak pomija uporządkowanie kategorii.
  • Nie myl z proporcjonalnymi hazardami. To inne założenie, dotyczące modelu Coxa w analizie przeżycia.

Cały proces, od wyboru modelu po tabelę wyników, opisuje wpis Regresja porządkowa krok po kroku.

Przykład reprodukowalny

Założenie proporcjonalnych szans w R

Kod porównuje wspólny iloraz szans z modelu polr() z ilorazami szans dla kolejnych progów i liczy test ilorazu wiarygodności wobec modelu z osobnymi nachyleniami (dopasowanego przez optim()).

Ilorazy szans dla progów i test równoległości

Dane wejściowe: częstość wizyt u lekarza (nigdy, rzadko, czasami, często) i lęk zdrowotny u 400 osób (dane symulowane, set.seed(183)).

Co odczytać: rozkład kategorii, wspólny OR, OR z osobnych regresji logistycznych, χ²(2) z p i OR z modelu ogólnego.

R
# Założenie proporcjonalnych szans: OR dla kolejnych progów i test równoległości (dane symulowane)
library(MASS)
set.seed(183)
n <- 400
lek <- rnorm(n)                                   # lęk zdrowotny (wynik z)
a <- c(1.5, 0, -1.5); b <- c(0.2, 0.6, 1.1)       # różne nachylenia dla progów
p_ge <- sapply(1:3, function(j) plogis(a[j] + b[j] * lek))   # P(Y >= j + 1)
u <- runif(n)
y <- 1 + (u < p_ge[, 1]) + (u < p_ge[, 2]) + (u < p_ge[, 3])
wizyty <- factor(y, labels = c("nigdy", "rzadko", "czasami", "często"))
table(wizyty)
# 1. Model proporcjonalnych szans
m_po <- polr(wizyty ~ lek, Hess = TRUE)
round(c(OR_wspolny = exp(coef(m_po))), 2)
# 2. OR z osobnych regresji logistycznych dla progów Y >= rzadko, czasami, często
or_progi <- sapply(2:4, function(j) exp(coef(glm(I(y >= j) ~ lek, family = binomial))[2]))
round(setNames(or_progi, c("od_rzadko", "od_czasami", "od_czesto")), 2)
# 3. Model z osobnym nachyleniem dla każdego progu i test ilorazu wiarygodności
nll <- function(th) {
  eta <- sapply(1:3, function(j) th[j] + th[3 + j] * lek)
  pc <- cbind(1, plogis(eta), 0)                  # P(Y >= k), k = 1..5
  pr <- pc[cbind(1:n, y)] - pc[cbind(1:n, y + 1)]
  if (any(pr <= 0)) return(1e10)
  -sum(log(pr))
}
start <- c(m_po$zeta * -1, rep(coef(m_po), 3))
fit <- optim(start, nll, method = "BFGS", control = list(maxit = 1000))
chi2 <- 2 * (as.numeric(-logLik(m_po)) - fit$value)
round(c(chi2 = chi2, df = 2, p = pchisq(chi2, 2, lower.tail = FALSE)), 3)
round(setNames(exp(fit$par[4:6]), c("od_rzadko", "od_czasami", "od_czesto")), 2)  # OR z modelu ogólnego
fit$convergence                                   # 0 = zbieżność
Wynik w R
wizyty
  nigdy  rzadko czasami  często 
     64     141     109      86 
OR_wspolny.lek 
          1.98 
 od_rzadko od_czasami  od_czesto 
      1.64       1.78       2.48 
 chi2    df     p 
9.135 2.000 0.010 
 od_rzadko od_czasami  od_czesto 
      1.63       1.79       2.72 
[1] 0

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats, pakiet MASS). W pracy podaj wersję R, której faktycznie użyto (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. MASS (wersja 7.3-65): Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S (4th ed.). Springer. https://doi.org/10.1007/978-0-387-21706-2

Najczęstsze pytania

Co to jest test równoległości linii w SPSS?

To test ilorazu wiarygodności w procedurze PLUM. Porównuje model ze wspólnymi nachyleniami z modelem, w którym nachylenia różnią się między progami. Istotny wynik wskazuje na naruszenie założenia proporcjonalnych szans.

Czym różni się test Branta od testu ilorazu wiarygodności?

Test Branta porównuje współczynniki z osobnych regresji logistycznych dla kolejnych progów i pokazuje wynik dla każdego predyktora. Test ilorazu wiarygodności porównuje dopasowanie dwóch całych modeli.

Co zrobić, gdy założenie proporcjonalnych szans jest naruszone?

Oceń, czy różnice ilorazów szans są duże. Jeśli tak, dopuść osobne nachylenie dla tego predyktora (model częściowych proporcjonalnych szans) albo użyj modelu sekwencyjnego, kategorii przyległych lub wielomianowego.

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. Brant, R. (1990). Assessing proportionality in the proportional odds model for ordinal logistic regression. Biometrics, 46(4), 1171–1178. https://doi.org/10.2307/2532457
  2. Bürkner, P.-C., & Vuorre, M. (2019). Ordinal regression models in psychology: A tutorial. Advances in Methods and Practices in Psychological Science, 2(1), 77–101. https://doi.org/10.1177/2515245918823199 ● Otwarty dostęp: pełny tekst
  3. McCullagh, P. (1980). Regression models for ordinal data. Journal of the Royal Statistical Society: Series B (Methodological), 42(2), 109–127. https://doi.org/10.1111/j.2517-6161.1980.tb01109.x

Cytowania BibTeX

@article{brant1990assessing, author={Brant, Rollin}, title={{Assessing proportionality in the proportional odds model for ordinal logistic regression}}, journal={Biometrics}, year={1990}, volume={46}, number={4}, pages={1171--1178}, doi={10.2307/2532457}}
@article{burkner2019ordinal, author={Bürkner, Paul-Christian and Vuorre, Matti}, title={{Ordinal regression models in psychology: A tutorial}}, journal={Advances in Methods and Practices in Psychological Science}, year={2019}, volume={2}, number={1}, pages={77--101}, doi={10.1177/2515245918823199}}
@article{mccullagh1980regression, author={McCullagh, Peter}, title={{Regression models for ordinal data}}, journal={Journal of the Royal Statistical Society: Series B (Methodological)}, year={1980}, volume={42}, number={2}, pages={109--127}, doi={10.1111/j.2517-6161.1980.tb01109.x}}
R