带有误差条的数据的卡方检验

时间:2017-01-12 13:29:59

标签: python chi-squared errorbar

假设我有两个数组A1A2

A1 = [1,2,2,2,3,3,7]
A2 = [0.5,1,1.5,2,7,2,6.9]

假设我还有A1的错误栏数据:

err_bars = [0.1,0.6,0.9,0.2,0.01,0.8,0.1]

我想看看是否有办法确定A2中的数据是否与A1中的数据相符。

考虑到数据中的误差条,有没有办法计算卡方检验,F检验和 p - 值?

到目前为止,我在Python中找不到任何考虑数据误差条的卡方函数。

2 个答案:

答案 0 :(得分:1)

试试这个:

   # obs -- observed value
    # exp -- expected value

def chisqr(obs, exp, error):
    chisqr = 0
    for i in range(len(obs)):
        chisqr = chisqr + ((obs[i]-exp[i])**2)/(error[i]**2)
    return chisqr

A1 = [1,2,2,2,3,3,7]
A2 = [0.5,1,1.5,2,7,2,6.9]
err_bars = [0.1,0.6,0.9,0.2,0.01,0.8,0.1]
print chisqr(A1, A2, err_bars)

答案 1 :(得分:0)

如果要处理数字数据,则很可能应该使用numpy包来执行大多数计算。除了简单的计算之外,它的速度明显更快,并且几乎总是易于阅读(here很好的总结)。切换到numpy可以将其写为

A1 = np.array([1, 2, 2, 2, 3, 3, 7])
A2 = np.array([0.5, 1, 1.5, 2, 7, 2, 6.9])
err_bars = np.array([0.1, 0.6, 0.9, 0.2, 0.01, 0.8, 0.1])

def chisq(obs, exp, error):
    return np.sum((obs - exp) ** 2 / (error ** 2))

print(chisq(A1, A2, err_bars))
相关问题