Я хотел бы запустить каждую переменную в наборе данных как одномерную модель glmer с использованием пакета lme4 в R. Я хотел бы подготовить данные с помощью пакетов dplyr / tidyr и организовать результаты каждой модели с помощью пакета broom (т.е. (взгляд (глмер ...). Я был бы очень признателен за помощь, которая застряла в этой структуре. Я не так хорош в R, но смог создать набор данных, который выдает ошибку и имеет ту же структуру, что и данные, которые я ' m используя:
library(lme4)
library(dplyr)
library(tidyr)
library(broom)
Bird<-c(rep(c(0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0),10))
Stop<-c(rep(seq(1,10), 20))
Count<-c(rep(c(rep(c(1,2), each=10)), each=10))
Route<-c(rep(seq(1,10), each=20))
X1<-rnorm(200, 50, 10)
X2<-rnorm(200, 10, 1)
X3<-c(rep(c(0),200))#trouble maker variable
Data<-data.frame(cbind(Bird, Stop, Count, Route, X1, X2, X3))
Data%>%
gather(Variable, Value, 5:7)%>%
group_by(Variable)%>%
do(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=., family=binomial)))
Последняя переменная вызывает ошибку, поэтому нет вывода. Я бы хотел, чтобы в выходных данных выводились значения NA, если это произойдет, или просто пропустить эту переменную. Я пробовал использовать 'try', чтобы обойти переменную создателя проблем:
do(try(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=., family=binomial))))
что он делает, но по-прежнему вывод не создается, потому что он не может принудить "try-error" к data.frame. К сожалению, нет функции tryharder. Я пробовал некоторые операторы if, которые имеют смысл для меня, но не для компьютера. Я уверен, что делаю это неправильно, но если я, например, использую:
try(glance(glmer(Bird~Value+Stop+(1+Stop|Route/Count), data=., family=binomial)))->mod
if(is.data.frame(mod)){do(mod)}
Я получаю ошибки за пределами допуска. Большое спасибо за любой вклад, который вы можете предоставить!