R语言nnet包的multinom()函数拟合的是多分类逻辑回归还是泊松回归?
nnet::multinom()的实际拟合逻辑 multinom()的底层实现是无隐藏层的单输出层神经网络,输出层采用softmax激活函数,通过最小化负对数似然完成参数估计,本质上和标准多分类逻辑回归是完全等价的模型。
文档提到的两种响应变量输入格式,对应同一种模型的两类数据输入场景:
- 响应变量为因子时:每一行输入对应单个独立观测的类别归属,似然计算采用单样本分类分布形式,就是大家常用的多分类逻辑回归的输入场景
- 响应变量为K列计数矩阵时:每一行输入对应同一协变量组合下,K个类别的汇总观测计数,似然计算采用多项分布形式,和单样本输入的似然本质完全等价,只是为列联表类汇总数据提供了更便捷的输入方式,并不是专门为计数 outcome 建模设计的独立模型。
统计学术语上的混淆来自于“多分类对数线性模型”和“多分类逻辑回归”本身就是同一模型的不同视角表述:前者是从列联表期望计数的对数线性假设出发推导得到的模型形式,后者是从类别归属的条件概率建模出发推导得到的模型形式,二者的参数存在一一对应的映射关系,并不是两种不同的模型。
拟合系数的实际含义
默认情况下,multinom()输出的系数完全可以按照标准多分类逻辑回归的规则解读,不需要采用对数线性模型的对数期望计数视角:
- 模型会自动选择因子的第一个水平(或计数矩阵的第一列)作为参考类别,每个非参考类别会对应一组独立的系数
- 对于非参考类别j的协变量x对应的系数$\beta_{j,x}$,含义为:协变量x每增加1个单位,观测属于类别j相对于属于参考类别的对数优势比提升$\beta_{j,x}$,和二分类逻辑回归的系数解读逻辑完全一致
- 仅当你是在处理列联表数据、需要对不同单元格的期望计数做推断时,才需要将系数转换为对数期望计数的变化量,这一视角在常规的个体水平类别响应建模场景下几乎不会用到。
nnet包官方文档相关描述:
通过神经网络拟合多分类对数线性模型(multinomial log-linear models)
响应变量应为因子或K列矩阵,矩阵的每一列会被解读为K个类别各自的计数
内容的提问来源于stack exchange,提问作者AJV
相关产品推荐
相关产品推荐

