这两种计算 p 值的方法应该是等价的:
t.test(rats.drug,mu=1.2)$p.value
2*pt((mean(rats.drug)-1.2)*sqrt(n)/sd(rats.drug),df=n-1)
第二种方法的问题是存在获得大于的值的风险(实际上最多):
2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1)
[1] 2
这当然可以通过
2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1,lower=F)
[1] 3.245916e-08
我的问题
显然,t检验函数的算法足够智能,可以区分这两种情况(样本均值是大于还是小于给定均值)。是否有一种简单的方法可以手动复制 p 值的计算,因为它是由 t 检验函数完成的?
我目前的解决方案是一个 if 语句,它检查结果值是否大于,在这种情况下,使用 lower=F 选项再次进行相同的计算,但也许有更好的方法。