在利用多值有序響應的 logit 模型或者 probit 模型時,有沒有限制的條件?
12-30
我在使用文化程度(離散變數)作為因變數在stata當中跑回歸的時候,發現一直重複做back up的過程,不知道是數據本身的問題還是什麼原因?
謝邀。如果我沒猜錯,你的back up應該是提示not concave之類的。一般來說,這是求最優化的過程中出現的情況,很有可能是你的數據的問題。
有這麼幾個可能的原因:
- 不管是簡單的Logit Probit還是多值的Logit,都是假設了分布的,如果你的數據分布不滿足,那麼目標函數收斂之後性質可能本來就不好,導致最優化過程找不到解
- 第一個問題是一個大樣本問題,即使第一條沒有問題,小樣本的情況你的目標函數可能形狀非常奇怪。比如如果你有200個數據,但是光參數就有50個,這個時候你很難得到一個足夠接近總體目標函數的樣本目標函數。
在你的例子裡面,因為你是多值的logit,有多少個值?如果你的解釋變數有5個,但是你的y的值也有5個,那麼潛在的參數個數應該是25個,相對於你的樣本大小,是不是會太多?
還有就是,比如讀過博士的可能在你的樣本里只有30個人,但是你有5個參數要估計,即使你有5000個樣本,也會導致你的一部分參數性質非常不好,導致不收斂。
或者壓根就是數據質量問題。
所以給你的建議是,先把y的值減少試試,比如一開始先定義一個binary的變數{是否上過大學},看看能不能收斂,然後慢慢增加y的值的數目。
然後就是,仔細check每個y的值的樣本數目、相應的x的範圍等等,適當做一些實驗,看看是不是收斂,比如如果博士學位太少,可以歸為研究生及以上等。看到慧航大神答題就忍不住多嘴一句。我曾經一個作業有兩萬多條數據的 ordered logit,優化起來奇慢無比不說,還不收斂,所以大樣本一樣可能會遇到麻煩。原因是 simple logit or probit 這個東西是 globally concave 的,分分鐘就收斂到全局最大值了。但是 ordered logit 或者 unordered logit 這種東西就不是 globally concave 了,所以一沒法保證收斂,二沒法保證它不收斂到 local min or local max. 解決方案最簡單的是你換類似 R 這種方便編程的語言寫一個解析的 gradient 試試,如果不夠可能還需要寫一個解析的 hessian。一般情況下會幫助收斂,並且運算速度會大大加快。第二招就是退火演算法這種找全局最優的,然後退火演算法找到的值再以初值代入一般的數值優化演算法,大概就能找到全局最大值了。
當然兩招可以結合。
不論用什麼演算法都要檢查一下最後出來的 hessian matrix 是不是負定的,正定的話那就得換一個初始值了。
推薦閱讀: