Документ О'Хара та Коце (Методи екології та еволюції 1: 118–122) не є гарною відправною точкою для обговорення. Моє найбільш серйозне занепокоєння - це твердження в пункті 4 резюме:
Ми виявили, що перетворення виконувались погано, за винятком. . .. Квазі-пуассонівські та негативні біноміальні моделі ... [показали] невелику зміщення.
λθλ
λ
Наступний код R ілюструє точку:
x <- rnbinom(10000, 0.5, mu=2)
## NB: Above, this 'mu' was our lambda. Confusing, is'nt it?
log(mean(x+1))
[1] 1.09631
log(2+1) ## Check that this is about right
[1] 1.098612
mean(log(x+1))
[1] 0.7317908
Або спробуйте
log(mean(x+.5))
[1] 0.9135269
mean(log(x+.5))
[1] 0.3270837
Шкала, за якою оцінюються параметри, має велике значення!
λ
Зауважте, що стандартна діагностика працює краще за шкалою журналу (x + c). Вибір c може не мати великого значення; часто 0,5 або 1,0 мають сенс. Також є кращою відправною точкою для дослідження трансформацій Box-Cox або варіанту Yeo-Johnson Box-Cox. [Єо, І. та Джонсон, Р. (2000)]. Далі див. Сторінку довідки щодо powerTransform () в автомобільному пакеті R. Пакет R Gamlss дає можливість встановити негативні біноміальні типи I (загальна різноманітність) або II, або інші розподіли, що моделюють дисперсію, а також середнє значення, за допомогою ланок перетворення потужності 0 (= log, тобто посилання на журнал) або більше . Підходи можуть не завжди сходитися.
Приклад:
Дані про смерть проти базових ушкоджень призначені для ураганів Атлантичного океану, які дійшли до материка США. Дані доступні (ім'я hurricNamed ) з недавнього випуску пакету DAAG для R. На сторінці довідки щодо даних є деталі.
Графік порівнює пристосовану лінію, отриману з використанням міцної лінійної моделі пристосування, з кривою, отриманою шляхом перетворення від'ємного біноміального пристосування з посиланням на журнал на шкалу журналу (кількість + 1), що використовується для осі у на графіку. (Зверніть увагу, що ви повинні використовувати щось схоже на шкалу журналу (count + c), з позитивною c, щоб показати точки і приталену "лінію" від негативної біноміальної підгонки на тому ж графіку.) Зауважте, велике зміщення, яке є очевидно для негативного біноміального прилягання в масштабі журналу. Надійна лінійна модель набагато менш упереджена в цьому масштабі, якщо припускати негативний біноміальний розподіл для підрахунків. Лінійна модель придатна була б неупередженою при класичних припущеннях нормальної теорії. Я виявив ухил дивовижним, коли вперше створив те, що по суті був вищевказаним графіком! Крива краще відповідатиме даним, але різниця знаходиться в межах звичайних стандартів статистичної мінливості. Надійна лінійна модель відповідає поганій роботі для підрахунку в нижньому кінці шкали.
Примітка --- Дослідження з даними РНК-Seq: Порівняння двох стилів моделі було цікавим для аналізу даних підрахунку експериментів з експресією генів. У наступному документі порівнюється використання надійної лінійної моделі, що працює з журналом (count + 1), із використанням негативних біноміальних припадків (як у краю пакета Bioconductor ). Більшість підрахунків у застосуванні RNA-Seq, яке в першу чергу мається на увазі, є досить великими, що належним чином зважена логічна лінійна модель дуже добре працює.
Закон, CW, Chen, Y, Shi, W, Smyth, GK (2014). Voom: точні ваги розблокують інструменти аналізу лінійних моделей для підрахунку зчитування РНК-послідовності. Геологія Біологія 15, R29. http://genomebiology.com/2014/15/2/R29
NB також нещодавній документ:
Schurch NJ, Schofield P, Gierliński M, Cole C, Sherstnev A, Singh V, Wrobel N, Gharbi K, Simpson GG, Owen-Hughes T, Blaxter M, Barton GJ (2016). Скільки біологічних повторів потрібно в експерименті з послідовності РНК та який інструмент диференціальної експресії слід використовувати? РНК
http://www.rnajournal.org/cgi/doi/10.1261/rna.053959.115
Цікаво, що лінійна модель підходить з використанням пакету limma (наприклад, edgeR , з групи WEHI) витримується надзвичайно добре (у сенсі показування мало доказів упередженості) щодо результатів з багатьма повторами, оскільки кількість повторень становить зменшено.
R код для наведеного вище графіка:
library(latticeExtra, quietly=TRUE)
hurricNamed <- DAAG::hurricNamed
ytxt <- c(0, 1, 3, 10, 30, 100, 300, 1000)
xtxt <- c(1,10, 100, 1000, 10000, 100000, 1000000 )
funy <- function(y)log(y+1)
gph <- xyplot(funy(deaths) ~ log(BaseDam2014), groups= mf, data=hurricNamed,
scales=list(y=list(at=funy(ytxt), labels=paste(ytxt)),
x=list(at=log(xtxt), labels=paste(xtxt))),
xlab = "Base Damage (millions of 2014 US$); log transformed scale",
ylab="Deaths; log transformed; offset=1",
auto.key=list(columns=2),
par.settings=simpleTheme(col=c("red","blue"), pch=16))
gph2 <- gph + layer(panel.text(x[c(13,84)], y[c(13,84)],
labels=hurricNamed[c(13,84), "Name"], pos=3,
col="gray30", cex=0.8),
panel.text(x[c(13,84)], y[c(13,84)],
labels=hurricNamed[c(13,84), "Year"], pos=1,
col="gray30", cex=0.8))
ab <- coef(MASS::rlm(funy(deaths) ~ log(BaseDam2014), data=hurricNamed))
gph3 <- gph2+layer(panel.abline(ab[1], b=ab[2], col="gray30", alpha=0.4))
## 100 points that are evenly spread on a log(BaseDam2014) scale
x <- with(hurricNamed, pretty(log(BaseDam2014),100))
df <- data.frame(BaseDam2014=exp(x[x>0]))
hurr.nb <- MASS::glm.nb(deaths~log(BaseDam2014), data=hurricNamed[-c(13,84),])
df[,'hatnb'] <- funy(predict(hurr.nb, newdata=df, type='response'))
gph3 + latticeExtra::layer(data=df,
panel.lines(log(BaseDam2014), hatnb, lwd=2, lty=2,
alpha=0.5, col="gray30"))