Re: [問題] 關於科學計算 --- 擬合 (fit)

看板Python作者 (肚子餓~)時間8年前 (2016/01/01 03:51), 8年前編輯推噓3(309)
留言12則, 5人參與, 最新討論串3/3 (看更多)
x,y各自有誤差值的情況其實還蠻複雜的 一般雙變數線性回歸有以下幾種 1. x, y 無誤差 2. x為自變數無誤差,y有誤差 3. x,y均為科學觀測所得數據,兩者均有各自誤差值 1最單純,剛剛有人提到的scipy.lingress就可以 有在用pandas的話也有內建的 OLS (ordinary least squre) 一些常見的繪圖package也有 (如seaborn) 自己選一個喜歡的即可 2稍微複雜一點,你想要的應該是 weighted least square, 基本上要自己照weighted least square的公式寫個function 然後用scipy.optimize.minimize之類東西去 針對輸入的資料minimize 3最麻煩,不過學會3 基本上1,2都可以輕鬆處理 scipy內建比較萬用的是scipy.odr.ODR (orthogonal distance regression) 或是像之前推文有人提到的total least squares 最近越來越流行的是MCMC/Bayesian approach 但是對MCMC沒啥基礎的話可能得花點時間學一下 不過如果只是想知道MCMC的結果 可以試試一些現有的MCMC package 比如說這個專門用MCMC求上述3.的斜率與截距的誤差的function: https://github.com/jmeyers314/linmix 當然以上都是假設x跟y的量測誤差是獨立的,非獨立的狀況又更複雜了... Good luck~ 不知道scikitlearn有沒有更直接的做法就是了 ※ 引述《modflow (星期一男孩)》之銘言: : ※ 引述《nomoyang (恩)》之銘言: : : 大家好,請教大家常用的科學計算模組有那些呢? : : 我的需求: : : 擬合函數 :y = a*x + b : : 提供的觀測值:x、y (x與y都各自有誤差值) : : 欲利用擬合找出來的值: : : 1、參數值 a、b : : 2、a與b的誤差值 : : 3、chi square χ2 (或 reduced chi square) : : 謝謝大家 ^^ : 這看起來是線性回歸 : 用Scipy的linregress即可 : 詳細請看 : http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.linregress.html -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 130.203.160.110 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1451591509.A.300.html

01/01 04:01, , 1F
補充一下,x跟y的誤差都不小的時候比較有必要用MCMC
01/01 04:01, 1F

01/01 04:02, , 2F
如果誤差不大用MCMC沒什麼特別好處,只是慢而已 :P
01/01 04:02, 2F

01/01 09:09, , 3F
謝謝你,我就是需要3 ^^
01/01 09:09, 3F

01/02 14:26, , 4F
2的話可以用numpy自己的linag函式庫做pseudo-inverse matrix
01/02 14:26, 4F

01/02 14:28, , 5F
至於3的話, 可以用scipy的Orthogonal distance regression
01/02 14:28, 5F

01/02 14:40, , 7F
01/02 14:40, 7F
※ 編輯: painkiller (174.59.223.5), 01/03/2016 06:53:48

01/03 13:55, , 8F
追加補充一點,MCMC還有個好處就是可以取upper limit
01/03 13:55, 8F

01/03 13:55, , 9F
有點像是所謂的survival analylsis的概念
01/03 13:55, 9F

01/03 13:56, , 10F
如果有的資料只有x有值,y只知道小於某個數字
01/03 13:56, 10F

01/03 13:56, , 11F
MCMC可以把這點考慮進去做regression
01/03 13:56, 11F

01/13 15:16, , 12F
這也叫 model II regression
01/13 15:16, 12F
文章代碼(AID): #1MXOTLC0 (Python)
文章代碼(AID): #1MXOTLC0 (Python)