Получить model.avg, чтобы вернуть верхнюю модель, когда размер поднабора = 1

Я биолог, смотрящий на среду обитания многих видов птиц. Таким образом, у меня есть список глобальных моделей для каждого вида, и я использовал драги на каждой из них. Теперь я хочу использовать model.avg, чтобы получить усредненные коэффициенты для лучших моделей (delta < 2).

Тем не менее, для некоторых видов есть только одна топ-модель - следующая лучшая модель имеет дельту> 2. Это хорошо для меня, но это значит model.avg выдает ошибку. Я хотел бы, чтобы он просто возвращал коэффициенты этой одной топ-модели (так же, как mean(5) возвращается 5).

Я мог бы использовать условие if, чтобы найти такие виды и рассматривать их отдельно, но тогда результат, скажем, get.models, очень отличается от вывода model.avg и поэтому я должен продолжать относиться к ним по-разному, в том смысле, в каком грязный фаф.

Есть ли простой обходной путь, чтобы получить model.avg (или вывод, похожий на model.avg) для работы с одной топовой моделью?

2 ответа

Мой обходной путь:

tmp <- get.models(x, subset = delta < 2)
  if (length(tmp)==1){
    tmp2 <- c(tmp, tmp)
    mod.avg.results <- model.avg(tmp2)
  }  else {mod.avg.results <- model.avg(x, subset = delta < 2)}

(это в llplyтак что х - это каждый вид model.selection объект)

Использование coefTable или же coef как общий интерфейс для компонентных и усредненных моделей. Например:

coefTable(if(nrow(x) == 1) 
     get.models(x, 1)[[1]] 
     else model.avg(x))

где x твой "model.selection" Таблица.

Другие вопросы по тегам