rosali <- function(dat=NULL,items=NULL,group=NULL) { nbitems <- length(items) items2 <- items # Un seul groupe if (length(group)!=1) { stop('Only one variable can be used for the group option') } # Recoder groupe en 0/1 dat[,group] <- as.factor(dat[,group]) if (!(all(names(levels(dat[,group]))==c("0","1")))) { levels(dat[,group]) <- c("0","1") } dat[,group] <- as.numeric(dat[,group])-1 model_a <- pcm(df=dat,items=items,group = group,dif.items = items) model_b <- pcm(df=dat,items=items,group = group,dif.items = NULL) ltest <- lmtest::lrtest(model_a,model_b) difit <- c() if (ltest$`Pr(>Chisq)`[2]<0.05) { model_c <- model_b a <- sapply(1:nbitems,function(x) lmtest::lrtest(model_c,pcm(df=dat,items=items,group = group,dif.items = c(difit,x)))$`Pr(>Chisq)`[2]) k <- 0 while (min(a)<0.05/(nbitems-k)) { difit <- c(difit,which.min(a)) model_c <- pcm(df=dat,items=items,group = group,dif.items = difit) a <- sapply(1:nbitems,function(x) ifelse(!(x%in%difit),lmtest::lrtest(model_c,pcm(df=dat,items=items,group = group,dif.items = c(difit,x)))$`Pr(>Chisq)`[2],1)) } } return(difit) }