在执行线性回归时,GLMnet 显然标准化了因变量 () 向量在运行回归之前具有单位方差,然后对得到的截距和系数进行非标准化。我假设标准化是通过划分每个由标准差向量。
如果我使用预先标准化的方式运行 glmnet如何取消标准化结果方程?
(请注意,我目前正在预先标准化的 x 变量上运行我的程序/GLMnet,因此我不必担心反转 GLMnet 也执行的 x 变量标准化。)
我认为我可以通过将每个系数和截距乘以标准差来简单地取消标准化向量。这不起作用- “非标准化”方程与我使用相同的非标准化运行 glmnet 时得到的结果不匹配. 乘以标准偏差的唯一时间是当我使用lambda=0运行 glmnet 时。(这有效地将程序作为普通的最小二乘拟合运行。)
我正在用另一种语言重新创建 glmnet 作为练习。当我在预标准化上运行我的程序和 glmnet 时,我得到相同的结果。我没有得到相同的结果没有预先标准化。
我关于标准化的信息来自glmnet vignette:
“请注意,对于“family=gaussian”,glmnet 在计算其 lambda 序列之前将 y 标准化为具有单位方差(然后对结果系数进行非标准化);如果您希望使用其他软件重现/比较结果,最好先提供标准化的 y (使用“1/N”方差公式)。”