python - 执行 2 个样本 t 检验

标签 python numpy statistics

我有样本 1 和样本 2 的平均值、标准差和 n - 样本取自样本总体,但由不同的实验室测量。

样本 1 和样本 2 的 n 不同。我想做一个加权(考虑 n)双尾 t 检验。

我尝试使用 scipy.stat模块通过使用 np.random.normal 创建我的数字,因为它只需要数据而不是像 mean 和 std dev 这样的统计值(有什么方法可以直接使用这些值)。但它不起作用,因为数据数组必须具有相同的大小。

任何有关如何获得 p 值的帮助将不胜感激。

最佳答案

如果你有数组ab的原始数据,你可以使用scipy.stats.ttest_ind使用参数 equal_var=False:

t, p = ttest_ind(a, b, equal_var=False)

如果你只有两个数据集的汇总统计,可以使用scipy.stats.ttest_ind_from_stats计算t值(在 0.16 版中添加到 scipy)或来自公式( http://en.wikipedia.org/wiki/Welch%27s_t_test )。

以下脚本显示了可能性。

from __future__ import print_function

import numpy as np
from scipy.stats import ttest_ind, ttest_ind_from_stats
from scipy.special import stdtr

np.random.seed(1)

# Create sample data.
a = np.random.randn(40)
b = 4*np.random.randn(50)

# Use scipy.stats.ttest_ind.
t, p = ttest_ind(a, b, equal_var=False)
print("ttest_ind:            t = %g  p = %g" % (t, p))

# Compute the descriptive statistics of a and b.
abar = a.mean()
avar = a.var(ddof=1)
na = a.size
adof = na - 1

bbar = b.mean()
bvar = b.var(ddof=1)
nb = b.size
bdof = nb - 1

# Use scipy.stats.ttest_ind_from_stats.
t2, p2 = ttest_ind_from_stats(abar, np.sqrt(avar), na,
                              bbar, np.sqrt(bvar), nb,
                              equal_var=False)
print("ttest_ind_from_stats: t = %g  p = %g" % (t2, p2))

# Use the formulas directly.
tf = (abar - bbar) / np.sqrt(avar/na + bvar/nb)
dof = (avar/na + bvar/nb)**2 / (avar**2/(na**2*adof) + bvar**2/(nb**2*bdof))
pf = 2*stdtr(dof, -np.abs(tf))

print("formula:              t = %g  p = %g" % (tf, pf))

输出:

ttest_ind:            t = -1.5827  p = 0.118873
ttest_ind_from_stats: t = -1.5827  p = 0.118873
formula:              t = -1.5827  p = 0.118873

关于python - 执行 2 个样本 t 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611446/

相关文章:

python - 如何将阿拉伯文本从 PyQt4 转换为 UTF-8

python - 将函数应用于 2D numpy 数组元素

python - 使用 numpy.save (和 savez)出现意外类型错误

python - 为什么在给定分数矩阵时 numpy 行列式不返回分数?

python - 如何计算 scipy 中分布的 AIC?

Python:用字典键替换 pandas df 中的整个单词字典值

python - 如何以更干净的方式进行多个字符串替换? - Python

python - 截断 SciPy 随机分布

python - 如何从Apache Pig的part-r-0000获取输出

iphone - 按手机代数划分的 iPhone 用户分割