Модели без накачки в кусочном СЭМ - PullRequest
0 голосов
/ 05 мая 2020

Я анализирую наблюдения пчел в ходе полевого эксперимента и хочу применить СЭМ. Кусочный sem (psem) кажется наиболее подходящим. Моя проблема в том, что мои данные сильно занижены из-за множества наблюдений с нулевым количеством пчел. До сих пор я работал с glmmTMB и nbinom2-distribution в анализе, которые работали очень хорошо. К сожалению, glmmTMB и nbinom2 не реализованы в psem, и теперь я не знаю, могу ли и как применить psem к своим данным.

Посредством кусочного семана я хочу исследовать влияние обработки (то есть цветочной полосы, живой изгороди…) на обилие цветов (которое я хочу преобразовать в логарифмическую форму из-за сильно различающихся подсчетов) и богатство видов растений и, наконец, численность пчел с учетом месяца и года. Таким образом, я хочу количественно оценить вклад переменных растительности и прямые эффекты обработок и надеюсь найти указание на то, отличаются ли обработки также и по другим свойствам, кроме только обилия цветов и разнообразия видов растений.

Псем-модели включают несколько фиктивных переменных для лечения (FF, H C, HI) и месяцев наблюдения. w_b_abu указывает на численность пчел, pl_abu - на обилие цветов (pl_abu_ln = log-преобразовано) и pl_sr - на богатство видов растений.

Мой код следующий:

w_b_abu_sem <- psem(
  glmer(w_b_abu  ~ FF + HC + HI + pl_abu_ln + pl_sr + april + may + june + july + august + september + years + (1|site), dat_treat_habitat, family = "poisson"),
  lmer(pl_abu_ln  ~ FF + HC + HI + april + may + june + july + august + september  + years +  (1|site),  dat_treat_habitat),
  glmer(pl_sr  ~ FF + HC + HI + pl_abu_ln + april + may + june + july + august + september  + years + >  (1|site), dat_treat_habitat, family = "poisson"),
  dat_treat_habitat)

Однако этот SEM не удается сходиться с «Модель не удалось сходиться с max | grad | = ...» (из-за подмоделей 1 и 3). В любом случае, распределение ошибок Пуассона не соответствует данным. В предыдущем анализе я использовал «nbinom2», который работал намного лучше, но не реализован в psem. Подмодель 1 сильно раздута нулем (проверена с помощью Дхармы).

У меня вопрос, есть ли возможность включить в psem модели с нулевым накачиванием и nbinom2-distribution.

Если нет, есть ли у вас другие идеи как я могу применить псевдоним к моим данным? У меня возникла идея преобразовать переменные, чтобы сделать их нормально распределенными. Было бы это подходящим? И если да, то какой способ преобразования был бы лучше всего?

Чтобы опробовать псевдоним, я масштабировал ответы так, чтобы они были «нормально распределены» (на самом деле это не так). Эта версия psem работает, но я боюсь, что она нарушает несколько статистических предположений:

w_b_abu_sem <- psem(
  lmer(w_b_abu_scaled  ~ FF + HC + HI + pl_abu_ln + pl_sr_scaled + april + may + june + july + august + september + years + (1|site), dat_treat_habitat),
  lmer(pl_abu_ln  ~ FF + HC + HI + april + may + june + july + august + september  + years +  (1|site), dat_treat_habitat),
  lmer(pl_sr_scaled  ~ FF + HC + HI + pl_abu_ln + april + may + june + july + august + september  + years + (1|site), dat_treat_habitat),
  dat_treat_habitat)

Это заголовок моей таблицы данных:

  w_b_abu pl_abu pl_abu_ln pl_sr FF HC HI april may june july august september years
1       0    730  6.593045     2  0  1  0     1   0    0    0      0         0     0
2       3     51  3.931826     4  0  1  0     1   0    0    0      0         0     0
3       3     41  3.713572     3  0  1  0     1   0    0    0      0         0     0
4       0     43  3.761200     4  0  1  0     1   0    0    0      0         0     0
5       4    126  4.836282     3  0  1  0     0   1    0    0      0         0     0
6       0      0  0.000000     0  0  1  0     0   0    1    0      0         0     0

Я был бы очень признателен за помощь - спасибо очень заранее! Я впервые задаю здесь вопрос и надеюсь, что ничего не пропущу. При необходимости я могу загрузить полный набор данных.

1 Ответ

0 голосов
/ 08 мая 2020

Получил запущенную модель без glmmTMB. Это работает так (без нулевой инфляции):

w_b_abu_sem <- psem( glmer.nb(w_b_abu ~ FF + HC + HI + pl_abu_ln + pl_sr + april + may + june + july + august + september + years + (1|site), dat_treat_habitat, control=glmerControl(optimizer="bobyqa"), nAGQ=0), lmer(pl_abu_ln ~ FF + HC + HI + april + may + june + july + august + september + years + (1|site), dat_treat_habitat), glmer(pl_sr ~ FF + HC + HI + pl_abu_ln + april + may + june + july + august + september + years + (1|site), dat_treat_habitat, family = "poisson", control=glmerControl(optimizer="bobyqa"), nAGQ=0), dat_treat_habitat)

...