gpt4 book ai didi

python - 如何在Python中计算单尾p值?

转载 作者:行者123 更新时间:2023-11-30 22:33:48 24 4
gpt4 key购买 nike

我有两个数组,一个是校正值 x 的数组,另一个是原始值(应用校正之前)y 的数组。我知道如果我想做一个双尾 ttest 来获得双尾 pvalue,我需要这样做:

t_statistic, pvlaue = scipy.stats.ttest_ind(x, y, nan_policy='omit')

然而,这只能告诉我这两个数组是否彼此显着不同。我想表明修正值 x 明显小于 y。为此,我似乎需要获取单尾 pvalue,但我似乎找不到执行此操作的函数。有什么想法吗?

最佳答案

考虑这两个数组:

import scipy.stats as ss
import numpy as np
prng = np.random.RandomState(0)
x, y = prng.normal([1, 2], 1, size=(10, 2)).T

独立样本 t 检验返回:

t_stat, p_val = ss.ttest_ind(x, y, nan_policy='omit')
print('t stat: {:.4f}, p value: {:4f}'.format(t_stat, p_val))

# t stat: -1.1052, p value: 0.283617

这个 p 值实际上是根据累积密度函数计算得出的:

ss.t.cdf(-abs(t_stat), len(x) + len(y) - 2) * 2
# 0.28361693716176473

这里,len(x) + len(y) - 2 是自由度数。

注意与 2 的乘法。如果测试是单尾的,则不进行乘法。就这样。因此,左尾检验的 p 值为

ss.t.cdf(t_stat, len(x) + len(y) - 2)
# 0.14180846858088236

如果测试是右尾的,您将使用生存函数

ss.t.sf(t_stat, len(x) + len(y) - 2)
# 0.85819153141911764

1 - ss.t.cdf(...)相同。

我假设数组具有相同的长度。如果不是,则需要修改自由度。

关于python - 如何在Python中计算单尾p值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45045802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com