A lineáris regresszió igen hasznos és sokoldalú, de nem minden esetben van normális eloszlású mintánk, sőt nem minden esetben dolgozunk folytonos adatokkal.
Diszkrét adatok esetén a negatív binomiális regressziót használhatjuk. A név kicsit félrevezető, mert a függő változó igazából pozitív értékeket vesz fel.
Használata R-be nagyon hasonló a lineáris regresszióhoz. Nézzünk meg egy példát:
library(MASS)
model <- glm.nb(y ~ x, data = d)
Vicces módon a lineáris regressziónál bemutatott példát itt is használhatjuk, mert a génekben található mutációk száma csak egész lehet. Most nincs szükség az adatok transzformálására sem.
genes <- read.table("genes.tsv")
genes.log <- log(genes+1)
nb.model <- glm.nb(snps ~ length, data = genes)
lin.model <- lm(snps ~ length, data = genes.log)
A glm.nb() fügvény futtatásánál kapunk néhány figyelmeztető üzenetet, de ezzel most nem törődünk. Valószínű az adat nem teljesen tiszta, vagy túl sok olyan gén van, amiben a mutációk száma nulla.
Tehát van egy lineáris és egy negatív binomiális modellünk. Melyik a jobb? Amelyiknél a reziduálisok négyzetösszege kisebb:
sum(lin.model$residuals**2)
[1] 34722.41
sum(nb.model$residuals**2)
[1] 28060.83
Mint látjuk, a negatív binomiális modell jobban illeszkedik az adatokra.
Mire használhatjuk még a negatív binomiális regressziót? Genomi töréspontok meghatározására. Ebben az esetben a töréspontok várható számát becsülték meg egy regressziós modellel, majd vizsgálták, mikor találnak az elvártnál magasabb értékeket. Hasonló logika húzódik meg a rákot okozó gének keresésében is. A különbség, hogy a várható értéket a szinoním mutációk alapján határozták meg, és nézték, hogy az aminosav cserével járó mutációk száma szignifikánsan eltér-e vagy sem.
Használhatjuk még RNA-seq-ben a változó expressziót mutató gének felderítésére, és így vissza is kanyarodunk az RNA-seq sorozatunkhoz. A kvantifikálás során ugyanis egy egész értékekkel feltöltött mátrixot kapunk. Az egy génre (vagy transzkriptre) jutó szekvenciák száma az összes mintára nézve, negatív binomiális eloszlást fog követni. A regresszió segítségével meghatározhatjuk a szórást, a szórás segítségével pedig eldönthetjük, hogy a változás, amit látunk csupán zaj, vagy valódi expressziós különbség. A helyzet természetesen bonyolultabb, mert a különböző minták szekvenálása során eltérő mennyiségű readet kapunk, de a mögötte álló logikán ez mit sem változtat.
A negatív binomiális regressziónak van egy gyenge pontja, amiről még nem beszéltünk. Ezek pedig a "túl sok nulla". Nem tudom egészen pontosan megfogalmazni, mit jelent a túl sok, de azt tudom, hogy emiatt ez a fajta modell nem használható egysejtes RNS szekvenálások feldolgozásához. Ilyen esetben a "zero-inflated negative binomial regression"-t használják, aminek nem tudom, mi a magyar megfelelője.
Akit részletesebben érdekel a téma, annak ezt a könyvet ajánlom. Nem egyszerű olvasmány, de gyakorlatilag a teljes koncepciót levezeti.