如何使用 glmnet 的每折叠观察值预先计算 foldid

How to precompute foldid with even observations per fold for glmnet

根据glmnet vignette,一个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.glmnetfoldid 通过上述方法预先计算时(在我自己的数据集上;n< 30), 并想尝试 foldid 观察分布更均匀。有人可以建议一种方法(代码)来做到这一点吗?

没关系。在 glmnet manual.

中找到了答案
(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 

所有的折叠都有相同的观察次数。