【发布时间】:2015-11-26 19:02:54
【问题描述】:
简短说明
我正在尝试在 Matlab 中运行(GLM)回归(使用 fitglm 函数),其中一个回归量是分类变量。但是,我不想添加截距并删除第一级,而是希望包括分类变量的每个级别并排除常数项。
动机
我知道,理论上两种方法的结果都是相同的,但我有两个理由反对用常数估计模型并以不同方式解释虚拟水平系数:
- 较小的问题是我正在运行许多回归作为 使用大数据的不同子集的更大的估计过程 数据集,我的分类变量的可用级别可能 在回归中不一样。最后我想 比较水平的估计系数。它可以解决 一些额外的代码/黑客,但这不是一个优雅的解决方案。
- 更大的问题是数量级 水平系数之间的差异:其中一些 非常小。如果这样的级别被用作基础级别,我就是 担心它可能会导致数值问题/优化 问题。
尝试过的方法
我尝试对 GeneralizedLinearModel 类进行子类化,但不幸的是它被标记为 final。类组合也不起作用,因为我什至无法从 GeneralizedLinearModel 类的父类继承。由于我使用共享的 Matlab 安装,因此无法修改 Matlab 的文件。
我能想到的唯一想法是使用 dummyvar 或类似的东西将我的分类变量变成一组虚拟变量,然后在回归中使用这些虚拟变量。 AFAIK 这就是 Matlab 内部的工作方式,但是通过采用这种方法,我失去了处理分类变量的用户友好性。
附:这个问题也发布在 MatlabCentral this link。
【问题讨论】:
标签: matlab regression glm