逻辑回归实例 java_使用MATLAB进行简单的二元逻辑回归
我正在使用MATLAB進行邏輯回歸,以解決一個簡單的分類問題 . 我的協變量是一個介于0和1之間的連續變量,而我的分類響應是0(不正確)或1(正確)的二進制變量 .
我正在尋找運行邏輯回歸來 Build 預測器,該預測器將輸出某些輸入觀察的概率(例如,如上所述的連續變量)是正確的或不正確的 . 雖然這是一個相當簡單的場景,但我在MATLAB中運行它時遇到了一些麻煩 .
我的方法如下:我有一個列向量 X ,其中包含連續變量的值,另一個大小相等的列向量 Y 包含 X (例如0或1)的每個值的已知分類 . 我正在使用以下代碼:
[b,dev,stats] = glmfit(X,Y,'binomial','link','logit');
然而,這給了我無意義的結果,其中 p = 1.000 ,系數( b )非常高(-650.5,1320.1),并且相關的標準誤差值大約為1e6 .
然后我嘗試使用其他參數來指定二項式樣本的大小:
glm = GeneralizedLinearModel.fit(X,Y,'distr','binomial','BinomialSize',size(Y,1));
這給了我更符合我的預期的結果 . 我提取了系數,使用 glmval 來創建估計( Y_fit = glmval(b,[0:0.01:1],'logit'); ),并為擬合創建了一個數組( X_fit = linspace(0,1) ) . 當我使用 figure, plot(X,Y,'o',X_fit,Y_fit'-') 覆蓋原始數據和模型的圖時,模型的結果圖基本上看起來像'S'形圖的下1/4,這是典型的邏輯回歸圖 .
我的問題如下:
1)為什么我使用 glmfit 給出了奇怪的結果?
2)我應該如何解決我的初始問題:給定一些輸入值,它的分類是正確的概率是多少?
3)如何獲得模型參數的置信區間? glmval 應該能夠從 glmfit 輸入 stats 輸出,但是我對 glmfit 的使用沒有給出正確的結果 .
任何評論和意見都非常有用,謝謝!
更新(2014年3月18日)
我發現 mnrval 似乎給出了合理的結果 . 我可以使用 [b_fit,dev,stats] = mnrfit(X,Y+1); ,其中 Y+1 簡單地將我的二元分類器變為名義分類器 .
我可以遍歷 [pihat,lower,upper] = mnrval(b_fit,loopVal(ii),stats); 以獲得各種 pihat 概率值,其中 loopVal = linspace(0,1) 或一些適當的輸入范圍和`ii = 1:length(loopVal)' .
stats 參數具有很大的相關系數(0.9973),但 b_fit 的p值是0.0847和0.0845,我不太清楚如何解釋 . 有什么想法嗎?另外,為什么 mrnfit 會在我的例子中超過 glmfit ?我應該注意到,當使用 GeneralizedLinearModel.fit 時系數的p值都是 p<<0.001 ,系數估計也是非常不同的 .
最后,如何解釋 mnrfit 函數的 dev 輸出? MATLAB文檔聲明它是"the deviance of the fit at the solution vector. The deviance is a generalization of the residual sum of squares."這是一個獨立的值,還是只與其他模型的 dev 值相比較?
總結
以上是生活随笔為你收集整理的逻辑回归实例 java_使用MATLAB进行简单的二元逻辑回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php手机端 调用音乐播放器,HTML_
- 下一篇: 船舶电子电气工程专业出来的交响_科普下船