簡體   English   中英

ttest_1samp 給出的 P_value 錯誤

[英]Wrong P_value given by ttest_1samp

這是一個樣本 t 檢驗示例:

from scipy.stats import ttest_1samp
import numpy as np

ages = [32., 34., 29., 29., 22., 39., 38., 37.,38, 36, 30, 26, 22, 22.]
ages_mean = np.mean(ages)
ages_std = np.std(ages, ddof=1)
print(ages_mean)
print(ages_std)
ttest, pval = ttest_1samp(ages, 30)
print("ttest: ", ttest)
print("p_value: ", pval)
#31.0
#6.2634470725607025
#ttest:  0.5973799001456603
#p_value:  0.5605155888171379

# check analytically:
my_ttest = (ages_mean - 30.0)/(ages_std/np.sqrt(len(ages)))
print(t)
#0.5973799001456603

檢查 p_value

根據定義p_value = P(t>=0.59) = 1 - P(t<=.59).
使用 Z 表,我們得到p_value = 1 - 0.7224 = 0.2776 # 0.56!!!

如果您檢查 ttest_1samp 的小插圖,它會寫道:

在此處輸入圖像描述

所以它是一個雙邊 p 值,這意味着獲得比這更極端的絕對 t 統計量的概率總和。

t 分布是對稱的,因此我們可以取 -abs(t stat) 並乘以 2 進行 2 邊檢驗,p 值為:

from scipy.stats import t
2*t.cdf(-0.5973799001456603, 13)
0.5605155888171379

對於單面 t 檢驗,您的派生值將是正確的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM