我正在研究一个功能,并且还有一些可疑的东西。 有人可以解释这种奇怪吗?为方便起见,以下是您可能需要的参数:
var1,var2,df1,df2,n1,n2 = .05, .08, 149, 164, 150, 165
num = float(var1/float(n1) + var2/float(n2))**2
den=float((var1**2/float(n1**2 * df1)) + (var2**2/float(n2**2 * df2)))
num/den
Out[44]: 307.19879975167265
num
Out[48]: 6.694214876033057e-07
den
Out[49]: 2.1791149188878324e-09
df_two_sampled_welch(.05, .08, 150, 165)
6.69421487603e-07
2.18790880087e-09
Out[50]: 305.9640727875991
以上是上述功能:
def df_two_sampled_welch(var1, var2, n1, n2):
df1, df2 = n1-1, n2-2
num = float(var1/float(n1) + var2/float(n2))**2
den = float((var1**2/float(n1**2 * df1)) + (var2**2/float(n2**2 * df2)))
print num
print den
return num/den
为什么内部的den不等于?
请不要告诉我
__future__ import division
会解决这个问题。
答案 0 :(得分:1)
如果您还print
变量num
,den
,您会发现它们并没有不同。 python控制台只使用不同的数字格式来显示变量的值。
但num/dev
的差异来自于在函数内部更改df1
,df2
的值。
评论df1, df2 = n1-1, n2-2
,您将获得相同的结果或使用以下内容:
df1, df2 = n1-1, n2-1