已知t值计算代码,如何求解100个样本的p值?
计算t检验的p值(样本量n=100)
你的样本量为100,对应的自由度是 df = sample_size - 1 = 99。可以用Python的scipy.stats模块快速计算p值,分双侧检验和单侧检验两种场景,具体实现如下:
步骤1:安装依赖(如果未安装)
如果还没装scipy,先执行:
pip install scipy
步骤2:完整代码实现
import numpy as np from scipy import stats sample_mean = 12.75 sample_std = 2 sample_size = 100 pop_mean = 13.04 # 计算已有的t统计量 t_statistic = (sample_mean - pop_mean) / (sample_std / np.sqrt(sample_size)) # 计算自由度 df = sample_size - 1 # 双侧检验p值(检验样本均值与总体均值是否存在差异) p_two_sided = 2 * stats.t.sf(np.abs(t_statistic), df) # 左侧单侧p值(检验样本均值是否显著小于总体均值) p_left = stats.t.cdf(t_statistic, df) # 右侧单侧p值(检验样本均值是否显著大于总体均值) p_right = stats.t.sf(t_statistic, df) # 输出结果 print(f"t统计量: {t_statistic:.4f}") print(f"双侧p值: {p_two_sided:.4f}") print(f"左侧单侧p值: {p_left:.4f}") print(f"右侧单侧p值: {p_right:.4f}")
代码说明
stats.t.sf:生存函数,计算的是t > 给定值的概率(即右尾概率)- 双侧检验需要将单侧结果乘以2,因为要同时考虑正负两个方向的尾部概率
- 左侧检验直接用
stats.t.cdf计算t <= 给定值的累积概率 - 选择哪种p值取决于你的检验方向:
- 仅检验「样本均值和总体均值是否有差异」→ 用双侧p值
- 明确检验「样本均值是否显著小于/大于总体均值」→ 用对应方向的单侧p值
内容的提问来源于stack exchange,提问作者Jaspreet Singh
相关产品推荐
相关产品推荐

