#r #glm #tweedie
Вопрос:
Я хочу подогнать твидовый GlM к переменной отклика, но с параметром дисперсии (phi), равным 1 для всех записей в моих данных. Таким образом, все параметры оцениваются с использованием оценки максимального правдоподобия, за исключением phi.
Спасибо.
Комментарии:
1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Вы можете сделать это, используя map
аргумент в glmmTMB
.
Пример настройки:
library(glmmTMB) library(tweedie) nobs lt;- 2000; mu lt;- 4; phi lt;- 2; p lt;- 1.7 set.seed(101) y lt;- rtweedie(nobs, mu=mu, phi=phi, power=p)
Подходит для неограниченной модели:
twm lt;- glmmTMB(y ~ 1, family=tweedie(), data = NULL) sigma(twm) ## 2.0188, close to the true value of 2
( sigma()
является общим методом доступа для параметра дисперсии; его определение варьируется в зависимости от семейства, см. ?sigma.glmmTMB
)
Ограниченный:
twm2 lt;- update(twm, map = list(betad=factor(NA)), start = list(betad = 0)) sigma(twm2) ## 1
Объяснение:
map
задает наборы параметров, которые должны быть зафиксированы на их начальных значениях (еслиNA
), или наборы параметров, которые должны быть ограничены, чтобы быть равными друг другу (т. е. Иметь общий уровень факторов): см.glmmTMB
. В этом случае параметр дисперсии представляет собой одно значение (оно могло бы иметь длину gt; 1, еслиdispformula
бы было указаноgt;), поэтому мы делаем его коэффициентом длины 1, содержащимNA
.start
задает начальные значения (которые являются значениями,map
используемыми для фиксированных параметров). Параметр дисперсии устанавливается в логарифмической шкале, поэтому мы устанавливаем начальное значение равным 0 (exp(0) = 1). В этом случае нам действительно не нужно указывать значение, так как по умолчанию все равно 0, но так будет понятнее.
Комментарии:
1. Большое спасибо, Бен, за ваш ответ, он так полезен.