Я получаю сообщение об ошибке, когда пытаюсь подогнать свой набор данных к семейству логарифмических c? - PullRequest
0 голосов
/ 08 июля 2020

У меня есть фрейм данных:

               Incidence <- data.frame(Inc. = c(0.4400, 0.5102, 0.2979, 0.2667, 0.0000, 0.0000,
                             0.0200, 0.0213, 0.0000, 0.0238, 0.0256, 0.0000,
                             0.0000, 0.1538, 0.0417, 0.0000, 0.0734, 0.0000,
                             0.0000, 0.0000, 0.1293, 0.0072, 0.0000, 0.0078,
                             0.0000, 0.0000, 0.0000, 0.0068, 0.0000, 0.0000,
                             0.0068), 
                    Habitat = c("Crop", "Crop", "Crop", "Crop", "Edge", "Edge", 
                                "Edge", "Edge", "Edge", "Edge", "Edge", "Edge", 
                                "Edge", "Edge", "Edge", "Oakwood", "Oakwood", 
                                "Oakwood", "Oakwood", "Oakwood", "Oakwood", 
                                "Oakwood", "Oakwood", "Wasteland", "Wasteland", 
                                "Wasteland", "Wasteland", "Wasteland", "Wasteland", 
                                "Wasteland", "Wasteland"), 
                    Season = c("Summer", "Summer", "Summer", "Summer", "Autumn", 
                               "Autumn", "Autumn", "Autumn", "Spring", "Spring", 
                               "Spring", "Spring", "Summer", "Summer", "Summer", 
                               "Autumn", "Autumn", "Autumn", "Autumn", "Spring",
                               "Spring", "Spring", "Spring", "Autumn", "Autumn", 
                               "Autumn", "Autumn", "Spring", "Spring", "Spring", 
                               "Spring"), 
                    Site = c("M1", "M2", "M3", "M4", "L1", "L2", "L3", "L4", 
                             "L1", "L2", "L3", "L4", "L1", "L2", "L3", "Q1", 
                             "Q2", "Q3", "Q4", "Q1", "Q2", "Q3", "Q4", "E1", 
                             "E2", "E3", "E4", "E1", "E2", "E3", "E4"))

Я проверил распределение своих данных с помощью пакета rriskdistribution. Эти результаты показали мне, что мои данные следуют логарифмическому распределению c.

Я попытался создать обобщенную смешанную линейную модель (glmm) с использованием семейства журналов:

     GlM_habitats = lme4::glmer(Inc. ~ Habitat +(1|Season)+(1|Site), data = Incidence, family = Gamma(link = "inverse")) 

Получение следующего результата :

    Error in model.frame.default(data = Incidence, drop.unused.levels = TRUE,  : invalid type (list) for variable 'Inc.'

Я читал, что эта ошибка возникает из-за нулевых значений в моем наборе данных. Как вы можете видеть выше, мой набор данных не имеет нулевого значения. Как я могу решить эту проблему?

Заранее благодарю

1 Ответ

3 голосов
/ 08 июля 2020

С одной стороны, ваша ошибка говорит вам, что Incidence имеет неправильный тип данных. Это неудивительно, поскольку Incidence - это ваш data.frame, и вы, вероятно, хотите сослаться на его столбец с именем Inc.. Поэтому вам нужно изменить свой вызов на

GlM_habitats = lme4::glmer(Inc. ~ Habitat +(1|Season)+(1|Site), data = Incidence, family = Gamma(link = "inverse"))

. Это даст вам другую ошибку:

non-positive values not allowed for the 'Gamma' family

Это говорит о том, что нули не допускаются в моделируемой вами переменной (Inc.) для функции гамма-связи. Гамма-распределение строго положительное. С его помощью нельзя смоделировать нули.

Глядя на ваши данные с «множеством» нулей и другими положительными значениями, я бы предпочел модель с нулевой инфляцией или модель с препятствием.

...