如何使用卡方方法找到拟合参数的不确定性?

时间:2019-06-07 02:31:26

标签: python

我想比较两个光谱。这两个光谱彼此之间的差异在于比例因子。我想找到由于光谱不确定性而导致比例因子确定的比例因子和统计不确定性(即,实际上,这两个光谱不会是另一个光谱的精确比例版本。)

以下是缩放代码。

def scalespec(origspec, factor, startidx, endidx):

    #Scale a histogram *origspec* by a factor, between startidx and endidx.

    scaledspec = np.zeros_like(origspec)
    for i in np.linspace(startidx, endidx - 1, endidx - startidx):
        i = int(i)
        NumBins = int(1 + (floor((i+1)*factor) - floor(i*factor)))
        for j in range(NumBins):
            if j == 0:
                #first bin
                scaledspec[int(floor(factor*i))] += (1/factor)*(1 + floor(factor*i)
                                                        - factor*i)*origspec[i]
            elif j == NumBins-1:
                #last bin
                scaledspec[int(floor(factor*(i+1)))] += (1/factor)*(factor*(i + 1)
                                                        - floor(factor*(i+1)))*origspec[i]
            else:
                #intermediate bins
                scaledspec[int(floor(factor*i + j))] += (1/factor)*origspec[i]
    return scaledspec

我尝试使用scipy.optimize.curve_fit(),但是由于factor是上面函数中使用的参数,因此下面的代码将不起作用。

popt = np.zeros(15)
pcov = np.zeros(15)

def func(origspec, factor):
    scaletest = LYtest.scalespec(origspec, factor, 750, 1750)
    return(scaletest[int(factor*750):int(factor*1750)])
#ydata = ref[startidx:endidx]
for i in range (0,15):
    xdata = twoDdata[i,:]
    popt[i], pcov[i] = curve_fit(func, xdata, ref[int(factor*750):int(factor*1750)])

运行上述程序的输出。 NameError:名称“ factor”未定义

0 个答案:

没有答案