我不希望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és Variacia=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)
标准偏差
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值(内部计算)进行比较之后,我们得到了一个良好的p值0.0005,因此我们拒绝了零假设,从而证明了两个分布的平均值是不同的,并且具有统计学意义。你知道吗
与内部scipy函数交叉检查
t2, p2 = stats.ttest_ind(a,b)
print("t = " + str(t2))
print("p = " + str(2*p2))
目前没有回答
相关问题 更多 >
编程相关推荐