Как предварительно вычислить foldid с четными наблюдениями за раз для glmnet

Согласно виньету glmnet, foldid можно настроить следующим образом:

foldid=sample(1:10,size=length(y),replace=TRUE)

Однако, если вы посмотрите на количество наблюдений в каждой из складок:

> table(foldid)
foldid
 1  2  3  4  5  6  7  8  9 10 
10 12  8  7 12 12  8  7 14 10 

Распределение не очень равномерное. Я получаю огромные вариации в cvm/lambda.min каждый раз, когда запускаю cv.glmnet с foldid, предварительно вычисленным описанным выше методом (на моих собственных наборах данных; n‹30), и хочу попробовать foldid с более равномерным распределением наблюдений. Может ли кто-нибудь предложить способ (код) сделать это?


person fumikos    schedule 30.07.2015    source источник


Ответы (1)


Не берите в голову. Ответ найден в руководстве по glmnet.

(n = 100)
> foldid=sample(rep(seq(10),length=n))
> table(foldid)
foldid
 1  2  3  4  5  6  7  8  9 10 
10 10 10 10 10 10 10 10 10 10 

Все складки имеют одинаковое количество наблюдений.

person fumikos    schedule 30.07.2015
comment
FWIW, cvTools также предоставляет некоторые функции для создания складок. - person Sycorax; 31.07.2015
comment
Примите свой собственный ответ через 2 дня, если это был правильный ответ на ваш вопрос. - person gideon; 31.07.2015