2016-03-07 194 views
3

似乎Matlab給多項邏輯迴歸的結果不正確。mnrfit的Matlab不正確?

在他們使用Fisher's Iris數據集 [link]的示例文檔中,他們給出了可用於相同數據集本身以獲取建模概率的模型係數。

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

然而,沒有預期值聚集體的相匹配的人口聚集體爲最大墒分類器的要求(見幻燈片35 [here],或等式14 [here],或Agresti「分類數據分析」 PG 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考慮證明,是預期值匹配,並且不需要可能性的評估。

這將是一個很好的功能,如果不是真正的類給出,我們可以給出一個選項,只包括聚合信息。

回答

1

在Mathworks網站中提交了技術錯誤評論。他們的答覆:

你好[----],

我在寫作參考你的技術支持案例#01820504 關於 'mnrfit'。

非常感謝您的耐心和報告此問題。這似乎是 是意想不到的行爲。它似乎與我們記錄中存在的現有 問題有關,即「mnrfit」在某些情況下不會給出正確的 最大似然估計值。由於「mnrfit」函數沒有找到 係數的最大似然估計值,因此我們計算了實際的MLE。當我們使用這些 估計值時,在這種情況下我們可以得到所有50的理想結果。

問題在於,對於我們的示例中的這個特定數據集, 類可以完美分離。這意味着爲了得到精確的零或一個概率,邏輯函數 需要有無限係數。「mnrfit」函數執行迭代過程,係數越來越大,但在結果存在問題時停止 。我們 當然同意「mnrfit」可以做得更好。我們的 開發團隊正在努力。

在此階段,我無法建議除 之外的解決方法,作爲我的同事編寫自定義實現,並嘗試過。對於 現在,我將關閉此請求,因爲我已將其轉發給我們的記錄 。但是,如果您有任何與 有關的其他問題,請不要猶豫,立即與我聯繫。

真誠,
[----]
MathWorks公司技術支持部

+0

這是很好的找到這個bug。你有任何更新嗎? –

+0

來自7/20/17的部分電子郵件:我們的記錄顯示,2016年3月7日,您聯繫了有關MATLAB 8.3(R2014a)的技術支持。這個問題的主題是: 「多項邏輯迴歸擬合(mnrfit)沒有給出正確的結果」我們很高興地通知您,這個問題已在R2016b版中得到解決。 – sheppa28