Оценка гладких пофакторных взаимодействий в отрицательных биномиальных GAM - PullRequest
0 голосов
/ 06 мая 2020

Одна из полезных функций пакета mgcv в R - возможность подгонять отдельные сглаживания для разных уровней фактора с помощью аргумента s(,by). После этого часто возникает следующий вопрос: нужен ли термин «взаимодействие» или достаточно простой аддитивной модели с одним сглаживанием для всех уровней. Однако мне до сих пор неясно, как лучше всего это проверить, особенно при использовании расширенных семейств с автоматической c оценкой параметра дисперсии (например, family = nb() или family = tw()), и иногда получаю странные результаты. Надеюсь, это простое представление, основанное на наборе данных, который я недавно проанализировал, поможет проиллюстрировать, где я запутался.

# Construct a simple dataset

library(mgcv);library(ggplot2);library(dplyr)

data = data.frame(
N   =c(10,9,9,14,0,0,0,0,1,6,0,0,0,4,1,0,0,5,2,0,0,0,11,6,6,1,0,2,1,0,0,2,0,0,0,1,0,0,0,9,0,0,0,5),
d   =c(0.7,0,0,0,9.1,5,9.4,18.5,36.5,1,3.7,9,18,0.8,1.9,8.9,18.4,0.1,3.5,8.9,18.7,38.5,1.1,0.2,0.1,0,17.2,1.5,3.9,13.7,33.7,0.2,3.3,7.9,19,0.8,2.9,8.3,18,0.9,3.2,5.5,17,0.9),
loc =as.factor(c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2))
 )

Данные состоят из количества животных (N) как функции расстояния (d) из двух мест ( ло c). График показывает, что численность резко возрастает на меньших расстояниях.

ggplot(data,aes(x=d,y=N,colour=loc))+geom_point()

Данные выглядят немного странно, но симуляции показывают, что, хотя модель Пуассона сильно диспергирована, GAM соответствуют отрицательной биномиальной ошибке распространение имеют приемлемые остаточные свойства. Первоначально я хотел бы проверить гипотезу о том, что численность меняется по-разному с расстоянием от каждого места, поэтому я подбираю модель с сглаженным по факторам членом. Обычно я бы использовал метод «двойного штрафа» с select=T для эффективного удаления неважных терминов:

m = gam(N ~ s(d,by=loc) + loc,family = nb(),data=data,method='REML',select=T)
summary(m)
Family: Negative Binomial(3.988) 
Link function: log 

Formula:
N ~ s(d, by = loc) + loc

Parametric coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -0.9677     0.7263  -1.332    0.183  
loc2         -2.9670     1.6949  -1.751    0.080 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
             edf Ref.df Chi.sq  p-value    
s(d):loc1 2.1981      9  24.23 3.19e-06 ***
s(d):loc2 0.9286      9  11.08  0.00055 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.684   Deviance explained = 82.4%
-REML = 60.086  Scale est. = 1         n = 44

Однако, хотя это говорит мне, что N значительно увеличивается с d, он не сообщает мне, улучшает ли соответствие модели включение другого сглаживания для каждого уровня loc.

Тест отношения правдоподобия

Одним из вариантов было бы использовать вероятность Ratio Test или AI C для сравнения вложенных моделей с термином 'by=' и без него:

m1 = update(m,,method='ML',select=F)
m2 = update(m1,~.-s(d,by=loc)+s(d))
anova(m1,m2,test='Chisq')
Analysis of Deviance Table

Model 1: N ~ s(d, by = loc) + loc
Model 2: N ~ loc + s(d)
  Resid. Df Resid. Dev       Df Deviance Pr(>Chi)
1    37.866     27.113                           
2    38.675     27.423 -0.80826 -0.30984    0.492

Это указывает на то, что термин «взаимодействие» не добавляет много, а AI C в целом соглашается

AIC(m1,m2)

         df      AIC
m1 6.702825 118.0077
m2 5.841031 116.2276

Однако, поскольку я подбираю модели с использованием функции nb() (тета неизвестна), они имеют разные тета-параметры в их распределениях ошибок. Следовательно, можно ли их считать действительно вложенными моделями для целей теста отношения правдоподобия? p-значение, потому что более простая модель также имеет более низкое остаточное отклонение.

m3 = update(m2,,family = negbin(theta = m1$family$getTheta(TRUE)))
anova(m1,m3,test='Chisq')
Analysis of Deviance Table

Model 1: N ~ s(d, by = loc) + loc
Model 2: N ~ loc + s(d)
  Resid. Df Resid. Dev       Df Deviance Pr(>Chi)
1    37.866     27.113                           
2    38.699     27.088 -0.83225  0.02493   

Этот пример - всего лишь один вид, взятый из гораздо большего набора данных. В других случаях верно обратное: сравнение m1 и m2 (оба подходят с использованием функции nb()) с использованием теста отношения правдоподобия приводит к неоцениваемому значению p, которое можно исправить, переустановив m2 на параметр тета из m1. Мы можем показать это, подставив счетчики другого вида и снова запустив предыдущий код.

data$y = c(22,2,11,14,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,3,8,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,7)

Упорядоченные факторы

Еще один подход - преобразовать loc к заказанному коэффициенту и проверьте, отличается ли сглаживание для loc = 2 от контрольного уровня loc = 1. Однако это дает совершенно другую интерпретацию (т.е. сглаживание для местоположения 2 значительно отличается от местоположения 1):

m4 = update(m,data = mutate(data,loc = factor(loc,ordered=T)))
summary(m4)
Family: Negative Binomial(0.439) 
Link function: log 

Formula:
N ~ s(d, by = loc) + loc

Parametric coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)   -1.527      1.104  -1.383   0.1667  
loc.L         -3.773      1.561  -2.417   0.0157 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
             edf Ref.df Chi.sq p-value  
s(d):loc2 0.8777      9  5.367  0.0134 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.106   Deviance explained = 35.5%
-REML = 75.897  Scale est. = 1         n = 44

Хотя я отмечаю, что объясненное отклонение в этом случае намного ниже, чем в оригинальная модель ...

ВОПРОСЫ

Итак, мои вопросы к списку тройные:

  1. Что люди считают наиболее подходящий способ оценки значимости фактора с помощью переменной сглаживания?
  2. Можно ли надежно сравнить две модели с использованием nb() (или других автоматизированных семейств) с разными параметрами дисперсии, используя LRT?
  3. Почему в последнем случае более сложная модель может также иметь более высокое остаточное отклонение и как вы интерпретируете результат LRT? Можем ли мы просто сделать вывод, что более простая модель предпочтительна с p = 1, потому что она также имеет меньшее отклонение?

Любые подсказки, полученные с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...