[英]Is Matlab incorrect for mnrfit?
似乎Matlab給出了多項邏輯回歸的錯誤結果。
在使用Fisher的Iris數據集[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用可能性來解決它似乎很奇怪,這可能會產生錯誤,
警告:最大似然估計沒有收斂。 超出了迭代限制。 您可能需要合並類別以增加觀察計數
通過MLE考慮證明的唯一要求是預期值匹配並且不需要進行可能性評估。
如果不是真正的類,我們可以給出一個僅包含聚合信息的選項,這將是一個很好的功能。
在Mathworks網站上提交了技術錯誤評論。 他們的答復:
你好 [ - - ],
我在撰寫有關'mnrfit'的技術支持案例#01820504時寫的。
非常感謝您的耐心和報告此問題。 這似乎是出乎意料的行為。 它似乎與我們在記錄中存在的現有問題有關,“mnrfit”在某些情況下沒有給出正確的最大似然估計。 由於“mnrfit”函數沒有找到系數的最大似然估計,我們計算了實際的MLE。 當我們使用這些估計時,在這種情況下我們得到所有50個的期望結果。
問題在於,對於我們示例中的特定數據集,可以完美地分離類。 這意味着邏輯函數為了獲得精確的零或一個概率,需要具有無限系數。 “mnrfit”函數執行迭代過程,系數越來越大,但它會在結果出現問題的位置停止。 我們當然同意“mnrfit”可以做得更好。 我們的開發團隊正在努力。
在這個階段,我無法建議一個解決方法,而不是像我的同事一樣編寫自定義實現,而我曾嘗試過。 現在,我將關閉此請求,因為我已將其轉發到我們的記錄中。 但是,如果您對此案有任何其他疑問,請隨時與我聯系。
此致
[----]
MathWorks技術支持部門
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.