Получить 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"
Таблица.