1

我已经通过glmnet. 我正在从最小 lambda 中提取系数,它给了我期望的结果。但是,我有一个具有九个唯一值的因子变量,并glmnet为此生成一个系数,这对于二进制变量是预期的,但不是因子...

library(glmnet)
coef(model.obj, s = 'lambda.min')

#output:
TraumaticInj  2.912419e-02
Toxin         .           
OthInj        4.065266e-03
CurrentSTDYN  7.601812e-01
GeoDiv        1.372628e-02 #this is a factor variable w/ 9 options...

所以我的问题:

1)我应该如何解释来自因子变量的单个系数glmnet

2)有没有一种方法可以提取变量不同因子的系数?

4

2 回答 2

1

glmnet 不处理因子变量。您必须使用例如模型将它们转换为假人。矩阵。因此,您看到的结果是 glmnet 将您的因子变量视为单个实变量。

于 2015-02-18T07:23:26.643 回答
0

做不到,b/c glmnet 不处理因子变量。这在这里几乎得到了回答:glmnet 的标准化参数如何处理虚拟变量?

@R_User 在答案中的评论特别有见地:

@DTRM - 通常,不会标准化分类变量以保留估计回归量的可解释性。然而,正如 Tibshirani 在这里指出的那样:statweb.stanford.edu/~tibs/lasso/fulltext.pdf,“套索方法需要回归量的初始标准化,因此惩罚方案对所有回归量都是公平的。对于分类回归量,一个人用虚拟变量对回归器进行编码,然后对虚拟变量进行标准化”——因此,虽然这会导致连续变量和分类变量之间的任意缩放,但它是为了平等惩罚处理而完成的。– R_User 2013 年 12 月 6 日 1:20

于 2014-08-13T12:39:34.440 回答