繁体   English   中英

ChiSquare计算返回全零

[英]ChiSquare calculation returning all zeros

编辑:经过更多的试验和错误,我发现由于某种原因,python说1/52是0,任何人都可以解释我为什么,所以我可以在将来避免这个问题?

我一直在努力学习剧本一段时间,主要是因为我或我的同学根本无法找出它的错误。

为了简单起见,我们有数据和模型,我们必须将一些数据点重新缩放到模型中,然后进行chi2square最小化以找到最佳的重新缩放因子。

我已经尝试了很多东西。 尝试将所有内容放在一个循环中,当这不起作用时,我尝试将循环分开等。

我的代码的相关部分如下所示:

#Here I pick the values of the model that correspond to the data
y4 = np.zeros((len(l),1))
for x in range(0,len(l)):
  if l[x] < 2.16:
    for y in range(0,len(lmodel)):
      if lmodel[y] == l[x]:
    y4[x] = y2[y]
      elif lmodel[y] < l[x] < lmodel[y+1]:
    y4[x] = (y2[y] + y2[y+1])/2
  else:
    y4[x] = y1[x]


#Do Chi2 calculation
#First, I make a matrix with all the possible rescaled values
chi2 = np.zeros((200,1))
y3 = np.zeros((len(l),len(chi2)))
for z in range(0,len(chi2)):
  for x in range(0,len(l)):
    if l[x] < 2.16:
      y3[x,z] = y1[x]*10**(0.4*Al[x]*z/100)
    else:
      y3[x,z] = y1[x]

#Here I calculate the chisquare for each individual column and put it in the chi2 array
dummy = np.zeros((len(l),1))
for x in range(0,len(chi2)):
  for t in range(0, len(l)):
    dummy[t] = (1/52)*((y3[t,x] - y4[t])/fle[t])**2
  chi2[x] = np.sum(dummy)

问题在于,无论我尝试什么,由于某种原因,我的虚拟数组总是全为零,使每个卡方值为0。

我已经尝试将'虚拟'作为一个矩阵并在之后求和,我已经尝试打印单个值来计算虚拟[t],其中一些是0(如预期的那样),有些则不是,所以从逻辑上讲,如果各个值都不是0,那么虚拟中的每个值都不应该是。

我只是找不到我出错的地方,以及为什么我不断得到零数组。

在Python 2中(大多数人仍在使用), 1 / 52是整数除法,因此返回0.您可以通过显式使用浮点数来修复它,例如1.0 / 52

在Python 3中,这不再是真的 - 划分两个整数可以返回一个浮点数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM