HM1*_*M14 2 python arrays scipy
我有两个数组,一个是校正值数组 x,另一个是原始值数组(在应用校正之前),y。我知道如果我想做一个双尾 ttest 来获得双尾 pvalue,我需要这样做:
t_statistic, pvlaue = scipy.stats.ttest_ind(x, y, nan_policy='omit')
Run Code Online (Sandbox Code Playgroud)
然而,这只告诉我两个阵列是否彼此显着不同。我想证明修正后的值 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
Run Code Online (Sandbox Code Playgroud)
独立样本 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
Run Code Online (Sandbox Code Playgroud)
这个 p 值实际上是从累积密度函数计算出来的:
ss.t.cdf(-abs(t_stat), len(x) + len(y) - 2) * 2
# 0.28361693716176473
Run Code Online (Sandbox Code Playgroud)
这里,len(x) + len(y) - 2 是自由度的数量。
注意与 2 的乘法。如果测试是单尾的,则不要乘法。就这样。所以你的左尾检验的 p 值是
ss.t.cdf(t_stat, len(x) + len(y) - 2)
# 0.14180846858088236
Run Code Online (Sandbox Code Playgroud)
如果测试是右尾,您将使用生存函数
ss.t.sf(t_stat, len(x) + len(y) - 2)
# 0.85819153141911764
Run Code Online (Sandbox Code Playgroud)
这与1 - ss.t.cdf(...).
我假设数组具有相同的长度。如果不是,则需要修改自由度。
| 归档时间: |
|
| 查看次数: |
3838 次 |
| 最近记录: |