簡體   English   中英

Matlab對mnrfit不正確嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM