我想从用户导入值,为此

2024-09-29 16:23:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我不希望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))

Tags: importdfinputsizevarstatsnpscipy

热门问题