我想从用户导入值,用于此t测试

时间:2018-06-01 06:31:40

标签: python python-3.x unit-testing python-unittest

我不想要a,b是随机的,我希望它们是特定的,因此用户将输入2个样本,因此它可以根据它计算(方差,平均值,大小) 我这样试过:

size = input('Size of sample: ')
N = size

source2 = input('Mean: ')
source3 = input('Distribution: ')
a = source2 
print("a:",a)

Gauss-eloszlásúadat,átlag=0ésvariancia= 1

b = source3
print("b:",b)

导入包

import numpy as np
from scipy import stats

定义2个随机分布 样本量

N = 10

高斯分布式数据,均值= 2且var = 1

a = np.random.randn(N) + 2

高斯分布式数据,其中均值= 0且var = 1

b = np.random.randn(N)

计算标准差 计算方差以获得标准差

对于无偏最大似然估计,我们必须将var除以N-1,因此参数ddof = 1

var_a = a.var(ddof=1)
var_b = b.var(ddof=1)

std偏差

s = np.sqrt((var_a + var_b)/2)
s

计算t统计量

t = (a.mean() - b.mean())/(s*np.sqrt(2/N))

与临界t值比较 自由度

df = 2*N - 2

与t

比较后的p值
p = 1 - stats.t.cdf(t,df=df)


print("t = " + str(t))
print("p = " + str(2*p))

请注意,我们将p值乘以2,因为它是一个twp尾t检验 你可以看到,在将t统计量与临界t值(内部计算)进行比较后,我们得到了0.0005的良好p值,因此我们拒绝零假设,因此证明了两个分布的均值是不同的且具有统计显着性。

使用内部scipy函数进行交叉检查

t2, p2 = stats.ttest_ind(a,b)
print("t = " + str(t2))
print("p = " + str(2*p2))

0 个答案:

没有答案