Выполните перекрестную проверку и регрессию лучших подмножеств на смешанных моделях - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь выполнить перекрестную проверку как часть регрессии лучших подмножеств на смешанных моделях, но пока безуспешно. Я ищу помощь со следующим кодом или что-то лучше.

Я нашел следующий рабочий код, использующий пакет nlme для генерации подгонки каждой возможной модели из предопределенной модели, которая затем рассчитывает и сортирует подогнанные модели по BIC.

library(nlme)
fm <- lme(distance ~age*Sex, random = ~ 1|Subject,data=Orthodont,method='ML')
terms <- terms(fm) #store the response and fixed effects
todrop <-  1:length(attr(terms,'term.labels')) #Count # of fixed effects
subs <- unlist(sapply(todrop,function(p) 
  combn(todrop,p,simplify=F)),recursive =F) #Creates list of all combinations of fixed terms
fm.subList <- lapply(subs[-length(subs)],function(s,...){ #Fits each possible model
  newf<- formula(drop.terms(terms(fm),s,keep.response = TRUE)) 
  update(fm,newf)
}) 
names(fm.subList) <- sapply(fm.subList, function(x) paste('fm',attr( 
  terms(x),'term.labels'),sep='.')) 
sort(sapply(fm.subList, BIC))

Код был найден здесь: http://r.789695.n4.nabble.com/best-subset-selection-on-random-effects-model-td4382936.html

Тем не менее, я хотел бы выбрать лучшую модель с перекрестной проверкой вместо BIC. Я пытался использовать cvFit из пакета cvTools, но хотя я знаю, как использовать его отдельно от приведенного выше кода, я не могу понять, как объединить его с приведенным выше кодом.

Буду признателен за любую помощь в том, как объединить оба.

Также, как примечание, я также попробовал пакет leaps и regsubsets в сочетании с перекрестной проверкой из «Введение в статистическое обучение с приложениями в R» (находится здесь: http://www -bcf.usc. edu / ~ gareth / ISL / ), но не смог понять, как использовать смешанные модели в сочетании с этим кодом (начиная со стр. 249). Если я что-то пропускаю, я тоже открыт для предложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...