Chapter 13 Ordinale logistische regressie

Ordinale logistische regressie wordt gebruikt wanneer de afhankelijke variabele een ordinaal meetniveau heeft. De standaardvorm van het ordinaal logistische regressiemodel is \(Logit[p(y\le j)]= log [\frac{p(y\le j)}{p (y>j)}] = \alpha j- \beta x, j = 1,2,3,4 etc.\). Ordinale logistische regressie wordt uitgevoerd met de functie polr() uit het package MASS. Het model wordt gespecificeerd op de gebruikelijke manier: y ~ x. Verder moeten twee extra argument worden gebruikt in de functie: method = “logistic” (om een ordinale logistische regressie uit te voeren) en Hess = T (om de standaardfouten te schatten en de juiste output te krijgen).

library(MASS)
modOLR1 <- polr(cut ~ price, data = diamonds, method = "logistic", Hess = T)

summary(modOLR1)
## Call:
## polr(formula = cut ~ price, data = diamonds, Hess = T, method = "logistic")
## 
## Coefficients:
##            Value Std. Error t value
## price -2.786e-05  5.834e-06  -4.776
## 
## Intercepts:
##                   Value      Std. Error t value   
## Fair|Good            -3.5971     0.0027 -1312.1633
## Good|Very Good       -2.1004     0.0189  -111.3952
## Very Good|Premium    -0.7572     0.0183   -41.4826
## Premium|Ideal         0.2956     0.0180    16.4138
## 
## Residual Deviance: 147933.77 
## AIC: 147943.77

Bij ordinaal logistische regressie wordt één helling geschat (onder coefficients) en meerdere intercepten. Er worden echter geen p-waarden gegeven bij de toetsresultaten. Hiervoor hebben we een andere code nodig. In de code worden de geschatte coëfficiënten in een aparte tabel gestopt (ctable), waaraan de p-waarden worden toegevoegd (op basis van de “t value” in de output).

ctable <- coef(summary(modOLR1))
p <- 2*pnorm(abs(ctable[, "t value"]), lower.tail = F)
ctable <- cbind(ctable, "p value" = p)
print(ctable)
##                           Value   Std. Error      t value      p value
## price             -2.786062e-05 5.833607e-06    -4.775882 1.789210e-06
## Fair|Good         -3.597067e+00 2.741326e-03 -1312.163330 0.000000e+00
## Good|Very Good    -2.100416e+00 1.885554e-02  -111.395178 0.000000e+00
## Very Good|Premium -7.572135e-01 1.825377e-02   -41.482574 0.000000e+00
## Premium|Ideal      2.955814e-01 1.800810e-02    16.413803 1.523558e-60

Voor het betrouwbaarheidsinterval kan de functie confint.default() gebruikt worden.

13.1 Proportional odds

Bij ordinaal logistische regressie wordt er uitgegaan van de proportional odds aanname. Deze aanname houdt in dat het effect van een onafhankelijk variabele op de cumulatieve odds (en daarmee de cumulatieve kansen op de categorieën van de afhankelijke variabele) constant is. De aanname van proportional odds kan getoetst worden met de functie brant() uit het gelijknamige brant-package.

library(brant)
brant(modOLR1)
## -------------------------------------------- 
## Test for X2  df  probability 
## -------------------------------------------- 
## Omnibus      423.85  3   0
## price        423.85  3   0
## -------------------------------------------- 
## 
## H0: Parallel Regression Assumption holds

De nulhypothese is dat de hellingen voor de verschillende dichotomisaties gelijk zijn, d.w.z., dat het effect van de onafhankelijke variabele constant is voor de cumulatieve odds. In dit geval hebben we bewijs tegen de nulhypothese (want p<0.05), want betekent dat in dit geval de assumptie van proportional odds geschonden wordt.