python - Scipy t 检验统计数据中的一个样本?

标签 python pandas scipy

是否可以使用 scipy.stats.ttest_1samp 进行 t 检验,其中输入是统计数据而不是数组?例如,如果均值不同,您有两个选择:ttest_ind() 和 ttest_ind_from_stats()。

import numpy as np
import scipy.stats as stats
from scipy.stats import norm

mean1=35.6
std1=11.3
nobs1=84
mean2=44.7
std2=8.9
nobs2=84
print(stats.ttest_ind_from_stats(mean1, std1, nobs1, mean2, std2, nobs2, equal_var=False))
# alternatively, you can pass 2 arrays
print(stats.ttest_ind(
stats.norm.rvs(loc=mean1, scale=std1, size=84), 
stats.norm.rvs(loc=mean2, scale=std2, size=84),
equal_var=False)
 )

是否有与单样本 t 检验等效的函数? 感谢您的帮助。

最佳答案

长话短说

单样本测试没有此功能,但可以使用双样本功能。 简而言之,要执行一个样本 t-test,请执行以下操作:

sp.stats.ttest_ind_from_stats(mean1=sample_mean, 
                              std1=sample_std, 
                              nobs1=n_samples, 
                              mean2=population_mean, 
                              std2=0, 
                              nobs2=2, 
                              equal_var=False)

请注意,结果完全独立于 nobs2(应该是这样,因为在一个样本测试中没有 n2)。只需确保传入一个 >1 的值,以避免被零除。


它是如何工作的?

查看有关 different types of t-test 的维基百科页面.

一个样本t-test使用统计量

enter image description here

具有 n - 1 个自由度。

ttest_ind_from_stats函数可以做Welch's t检验(样本量不等,方差不等),定义为

enter image description hereenter image description here

和自由度:

enter image description here

我们可以将韦尔奇 t 检验的定义转换为单样本 t 检验。如果我们将 mean2 设置为总体平均值并将 std2 设置为 0,则 t 统计量的方程是相同的,并且自由度会降低到 n - 1

关于python - Scipy t 检验统计数据中的一个样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925272/

相关文章:

python - 如何将具有相同索引的多行组合在一起,并且每一行在pandas中只有一个真实值?

python - Pandas、SciPy 或 NumPy 是否提供累积标准差函数?

python - Scikit train_test_split 按指数

java - 从 PHP 脚本调用 Java(或 python 或 perl)

python - 为什么str()+“”比 “”慢+“”

python - 递归函数与列表理解中的串联错误

python - Pandas 使用 df.loc 保留原始行索引

python - Tensorflow 检查点自定义 map

python - 如何将 pandas 中的 log2 比例转换为正常比例

python:在顶部绘制带有函数线的直方图