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