似乎Matlab给出了多项逻辑回归的错误结果。
在使用Fisher的Iris数据集 [link]的示例文档中,它们给出了模型的系数,可以在同一数据集本身上使用它来获得建模的概率。
load fisheriris
sp = categorical(species);
[B,dev,stats] = mnrfit(meas,sp);
PHAT=mnrval(B,meas);
但是,预期值聚合没有一个匹配人口聚合,这是MaxEnt分类的要求(参见幻灯片35 [here],或Eq 14 [here],或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用可能性解决它似乎很奇怪,这可能会产生错误,
通过MLE考虑证明,唯一的要求是预期值匹配,不需要评估。警告:最大似然估计没有收敛。迭代 超出限制。您可能需要合并类别以增加观察值 计数
如果不给出真正的类,我们可以给出一个仅包含聚合信息的选项,这将是一个很好的功能。
答案 0 :(得分:1)
在Mathworks网站中提交了技术错误评论。他们的回答是:
您好[----],
我正在撰写您的技术支持案例#01820504 关于' mnrfit'。
非常感谢您的耐心并报告此问题。出现了 是出乎意料的行为。它似乎与现有有关 我们在记录中发现的问题," mnrfit"不正确 在某些情况下的最大可能性估计自从" mnrfit" 函数没有找到最大似然估计 系数,我们计算了实际的MLE。当我们使用这些 估计,在这种情况下,我们得到了所有50年代的预期结果。
问题是,对于我们示例中的这个特定数据集, 课程可以完美分开。这意味着后勤 函数,为了得到精确的零或一个概率,需要 有无限的系数。 " mnrfit"功能执行 系数越来越大的迭代过程,但它停止了 在结果有你发现的问题的地方。我们 当然同意" mnrfit"可以做得更好。我们的 开发团队正在努力。
在这个阶段,我无法建议除了以外的解决方法 写一个自定义实现作为我的同事,我尝试过。对于 现在,我将关闭此请求,因为我已将其转发给 我们的记录。但是,如果您有任何其他相关问题 这种情况,请不要犹豫与我联系。
此致
[----]
MathWorks技术支持部门