glm.nb со ссылкой на sqrt - PullRequest
4 голосов
/ 18 мая 2011

Я пытаюсь установить модель Negbin со ссылкой на sqrt. К сожалению, похоже, что я должен указать начальные значения. Кто-нибудь знаком с настройкой начальных значений при запуске команды glm.nb (пакет MASS)?

Когда я не использую начальные значения, я получаю сообщение об ошибке:

Не найдено действительного набора коэффициентов: укажите начальные значения

Глядя на ?glm.nb, представляется возможным установить начальные значения, к сожалению, я абсолютно не знаю, как это сделать. Некоторая дополнительная информация: 1.При вычислении регрессии с помощью стандартной ссылки журнала, регрессия может быть оценена. 2. Невозможно установить начальное значение для алгоритма на произвольное значение, например,

glm.nb(<model>,link=sqrt, start=1)

не работает!

Ответы [ 2 ]

7 голосов
/ 18 мая 2011

Поиск подходящих начальных значений может быть затруднен для достаточно сложных задач. Однако для установки начальных значений (документация которых невелика, но существует) вам следует научиться читать сообщения об ошибках. Вот копия вашей неудачной попытки с использованием start=1 со встроенным набором данных:

>quine.nb1 <- glm.nb(Days ~ Sex + Age + Eth + Lrn, data = quine, 
                    link=sqrt, start=1)
Error in glm.fitter(x = X, y = Y, w = w, start = start, etastart = etastart,  : 
  length of 'start' should equal 7 and correspond to initial coefs for 
  c("(Intercept)", "SexM", "AgeF1", "AgeF2", "AgeF3", "EthN", "LrnSL", )

Он точно сообщает вам, чего он ожидает: вектор значений для каждого оцениваемого коэффициента.

quine.nb1 <- glm.nb(Days ~ Sex + Age + Eth + Lrn, data = quine, 
                    link=sqrt, start=rep(1,7))

работает, потому что я дал вектор длины 7. Возможно, вам придется поиграться с фактическими значениями, чтобы получить модель, которая всегда предсказывает положительные значения. Вероятно, алгоритм по умолчанию для генерации начальных значений в glm.nb где-то дает отрицательный прогноз, и ссылка sqrt не может этого допустить (в отличие от log). Если у вас возникли проблемы с поиском действительных начальных значений вручную, вы можете попробовать запустить более простую модель и расширить оценки по ней на 0 для других параметров, чтобы получить хорошее начальное местоположение.

РЕДАКТИРОВАТЬ: создание модели

Предположим, вы не можете найти действительные начальные значения для вашей сложной модели. Затем начните с простого, например

> nb0 <- glm.nb(Days ~ Sex, data=quine, link=sqrt)
> coef(nb0)
(Intercept)        SexM 
  3.9019226   0.3353578 

Теперь давайте добавим следующую переменную, используя предыдущие начальные значения, добавив 0 оценок для эффекта новой переменной (в этом случае Age имеет четыре уровня, поэтому необходимо 3 коэффициента):

> nb1 <- glm.nb(Days ~ Sex+Age, data=quine, link=sqrt, start=c(coef(nb0), 0,0,0))
> coef(nb1)
(Intercept)        SexM       AgeF1       AgeF2       AgeF3 
  3.9127405  -0.1155013  -0.5551010   0.7475166   0.5933048 

Обычно вы хотите продолжать добавлять 0, а не, скажем, 100, потому что коэффициент 0 означает, что новая переменная не имеет никакого эффекта - это именно то, что предполагает более простая модель, которую вы только что установили.

1 голос
/ 05 апреля 2019

Я получил аналогичную ошибку при выполнении регрессии RR с использованием бинома ссылки на журнал, как показано ниже

adjrep <-glm(reptest ~ momagecat + paritycat + marstatcat + dept,
             family = binomial(link = "log"),
             data = hcm1)

> Error: no valid set of coefficients has been found: please supply
> starting values

После выполнения инструкций по построению модели я пришел к следующему коду и получил коэффициенты для каждой из приведенных ниже переменных.

rep3 <-glm (reptest ~ momagecat + paritycat + marstatcat + dept,
            family = binomial(link = "log"),
            data = hcm1,
            start=c(coef(rep1),0,0,0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...