在多元回归中摆脱一个巨大的分类因素

机器算法验证 r 多重回归 分类数据 多类
2022-03-30 23:02:15

我有很多案例的大回归问题,但自变量相对较少。其中之一是具有数千个级别的分类因子。稳健的回归永远运行。在某些情况下,大量虚拟变量变得过于稀疏,甚至无法使用“正常”lm 进行计算。

通常有意义的是以某种方式计算每个因素水平的平均值,然后相应地调整因变量,并在没有大因素的情况下进行回归。我的一位同事可以记得有一个两个字母的 R 函数可以自动执行此操作,但他不记得两个字母的组合。

任何帮助将不胜感激。

1个回答

我认为lme4这非常适合。将您巨大的分类因素视为实际的随机效应。我不会进入理论定义。或者,使用sparse.model.matrix()fromMatrix构建设计框架,然后将其传递到glmnet()fromglmnet包中。lme4自然会构建稀疏设计矩阵,因此您无需在sparse.model.matrix()进入之前使用。)

如果您真的想执行“每个级别的平均值”技巧,那么请务必计算每个观察值的平均值,不包括其自身,并在总体平均值的每个因子级别包含一些额外的观察值。然后将此派生变量用作模型中的特征,而不是分类变量。如果因子是唯一的特征,那么这个结果将与lme4或相同glmnet(假设您解决了要添加的平均观测数)。

有一些博客文章称其为“每个级别的平均值”技巧impact coding同样根据我的经验,如果有一个强大的密集特征,您可能希望在该特征上拟合一个简单的模型,并根据巨大的分类因子而不是纯响应来影响残差编码。

如上所述,这是更实用的建议。其他人可能会提出一些更有力的理论建议。