使用Chi-Squared最小化模型和观察之间的误差

时间:2017-11-12 22:33:21

标签: python matplotlib statistics minimization chi-squared

我正在做一个关于通过几个模型拟合星系中观测到的旋转速度(基于距离而变化)的项目 在我的代码中,我正在绘制一些观察到的数据与模型。该模型由一个公式组成,可通过2个固定参数进行操作:p0((v_obs - v_model)/error)^2。基本上,我需要找到这两个固定参数的值,以最小化观察图和模型图之间的空间。我的目标是最小化Chi-Squared,即am,然后绘制我的模型图。

我根据距离(r,也是一个数组)创建了一个积分数组和v_model(在我的代码中它的名字"函数")。所以通过这段代码,我得到了每个距离的v_model数组。 from scipy.optimize import minimize as opt import numpy as np def integrand(r,p0,r0): return (p0 * r0**3)/((r+r0)*((r**2)+(r0**2)))*4*3.1415926535*r**2 integrals = [] for i in r: integrals.append(quad(integrand, 0 ,i,args=(p0,r0))) #function --> v_model functions = [] for x in range (0,am): k = integrals[x][0] i = r[x] functions.append(np.sqrt((4.302*10**(-6)*k)/i)) 是测量量(在本例中为21)

def chisqfunc(p02,r02):
    model = np.sqrt((4.302*10**(-6)*((p02 * r02**3)/((r+r02)*((r**2)+(r02**2)))*4*3.1415926535*r**2))/r)
    chisq = numpy.sum(((v_obs-model)/errors)**2)
    return chisq

x0 = np.array([p0,r0])

result = opt.minimize(chisqfunc,x0)
print (result)
assert result.success == True

由于每个数据点的错误都发生了变化,我也将其作为一个数组。 我有点迷失在哪里开始,但到目前为止我已经创建了这个,以最大限度地减少在线或在stackoverflow上的示例。我选择p0和r0的初始猜测。

'function' object has no attribute 'minimize'

执行此操作后,我收到错误:

tableView.indexPathForSelectedRow

我有两个主要问题:如何修复此错误以及如何最小化数据在数组中的时间?

0 个答案:

没有答案