«Ошибка в model.matrix.formula(форма, данные) : данные должны быть data.frame» при выполнении GAM (пакет mgcv) в R

#r #nested #gam #mgcv

Вопрос:

Прошу дружелюбную душу, которая знает, как исправить эту ошибку, или которая понимает, почему это появляется.

Не совсем уверен, что произошло, но эта ошибка появляется каждый раз, когда я пытаюсь выполнить игру со случайными эффектами ( bs="re" с mgcv пакетом). Это странно, так как проявляется не только в новых моделях, но даже в моделях, которые ранее работали (несколько раз). Я убедился, что в данных нет NA, научных данных или случайных формул. Кроме того, я не использую формат даты, чтобы избежать ошибок, который ранее работал как есть.

Я также попытался преобразовать данные в фрейм данных с помощью as.data.frame(x) , но произошла та же ошибка.

Я немного поиграл с формулой, и оказалось, что каждый раз, когда присутствуют случайные эффекты bs="re" , либо 2 из них (Сайт, штат), либо только один из них (Сайт), возникает ошибка. Если я полностью исключу их из формулы, это сработает идеально.

Я думаю, что это может быть:

  1. Некоторая несовместимость с другим пакетом, который я, возможно, установил, но пытался решить эту проблему безрезультатно. Удалены все последние установленные пакеты, и ошибка сохранялась.
  2. Другим может быть любое обновление mgcv пакета?

Обновление: Он работает в программном обеспечении R, но не в R studio.

У кого-нибудь есть идеи о том, как это исправить или почему это появляется

Следующая модель ранее работала, но больше не работала, каждый раз выдавая мне упомянутую ошибку

gam_2a <- gam(Total_Items ~ s(DayI0, k=14) s(Site, State, bs="re"), offset(log(EffortDayC)),data = x,family=poisson(link="log"),method = "REML")

Описание переменных:

Total_Items = Количество предметов мусора, найденных за одно событие;

DayI0 = Количество дней с момента первой очистки (числовое значение);

Сайт = Место отбора проб (Сайты находятся в пределах штатов);

Состояние = Состояние выборки;

EffortDayC = Усилие(Длина пляжа, количество добровольцев, продолжительность выборки)*День (интервал выборки);

Вывод str(x) ниже:

введите описание изображения здесь

И заголовок данных, чтобы понять немного лучше:
введите описание изображения здесь
введите описание изображения здесь

Комментарии:

1. Было бы лучше, если бы вы могли создать воспроизводимый пример, чтобы люди могли диагностировать его сами. Также не публикуйте фотографии кода/вывода. Система предназначена для отображения и форматирования фактического кода/вывода.

Ответ №1:

Разобрались! пакет agricolae вызывал некоторую несовместимость с mgcv пакетом.