Matlab 对于 mnrfit 是不正确的



似乎 Matlab 为多项式逻辑回归给出了不正确的结果。

在使用 Fisher 鸢尾花数据集 [link] 的示例文档中,他们给出了模型的系数,这些系数可用于同一数据集本身以获得建模的概率。

load fisheriris
sp = categorical(species);
[B,dev,stats] = mnrfit(meas,sp);
PHAT=mnrval(B,meas);

但是,没有一个期望值聚合与总体聚合匹配,这是MaxEnt分类器的要求(参见幻灯片35[此处],或方程14[此处],或Agresti"分类数据分析"第298页等)。

例如

>> sum(PHAT)
>>   49.9828   49.8715   50.1456

应全部等于 50(总体值),其他聚合也是如此

如果参数

B=[36.9450   42.6378
   12.2641    2.4653
   14.4401    6.6809
  -30.5885   -9.4294
  -39.3232  -18.2862]

而不是使用所有聚合的足够统计信息匹配。

此外,Matlab 用可能性解决它似乎很奇怪,这可能会产生错误,

警告:最大似然估计未收敛。迭 代 超出限制。您可能需要合并类别以增加观察到的 计数

通过多语教育考虑证明的唯一要求是期望值匹配,不需要可能性评估。

这将是一个很好的功能,如果给出的不是真正的类,我们可以提供一个选项来仅包含聚合信息。

在Mathworks网站中提交了技术错误审查。他们的回答是:

你好 [----],

我写的是参考您的技术支持案例#01820504 关于"MNRFIT"。

非常感谢您的耐心等待并报告此问题。这似乎 是意外行为。它似乎与现有的 我们在记录中遇到的问题,即"mnrfit"没有给出正确的信息 在某些情况下的最大似然估计。自"mnrfit"以来 函数未找到 系数,我们计算了实际的MLE。当我们使用这些时 估计,在这种情况下,我们得到了所有 50 秒的预期结果。

问题是,对于我们示例中的这个特定数据集, 类可以完美地分开。这意味着物流 函数,为了获得精确的零或一个概率,需要 有无限的系数。"mnrfit"功能执行 系数变大的迭代过程,但它停止了 在结果具有您发现的问题的点。我们 当然同意"MNRFIT"可以做得更好。我们 开发团队正在研究它。

在此阶段,我无法提出除以下解决方法 编写一个自定义实现,就像我和我的同事尝试过的那样。为 现在,我将关闭此请求,因为我已经将其转发到 我们的记录。但是,如果您有任何其他与以下相关的问题 这种情况,请不要犹豫,与我联系。

真诚地
[----]
数学工程技术支持部

最新更新