推荐一个R tutorial,刚好解决了我一个问题:
如果知道Z或者t统计量,如何通过R计算获得对应的P值
按照常规思路,一般都是知道两个向量,通过t.test
T检验来计算P值,但其实也可以一些R函数从统计量获得P值
以下内容均来自上述Tutorial中的部分内容
Calculating p Values
假设样本符合normal distribution,在样本数n = 20
、总体均值m = 5
、总体标准差s = 2
以及样本均值x = 7
等条件下,主要用到的是pnorm
分布函数,计算P值大致可以分为两种方法:
先计算Z统计量,然后计算P值(这里考虑的是two sided test),s / sqrt(n)
为标准误,用-abs(z)
可以简化计算过程
z <- (x - m)/(s / sqrt(n))
2 * pnorm(-abs(z))
# another way when z > 0
2 * (1 - pnorm(z))
通过标准差来计算P值(由于x大于m,所以需要1减去pnorm
得到的值)
2 * (1 - pnorm(x, mean = m, sd = s / sqrt(n)))
假设样本符合t distribution,在上述同样的条件下,这时用到的是pt
分布函数
t <- (x - m)/(s / sqrt(n))
2 * pt(-abs(t), df = n-1)
Calculating Confidence Intervals
一般我可以通过t.test
获取T检验的置信区间,但是其实如果我们知道样本数n = 20
、样本均值m = 5
以及标准差s = 2
等条件,就能通过R函数来计算置信区间
标准正态分布下mean=0,sd=1,95%置信区间为
[mean-1.96*sd, mean+1.96*sd]
假设样本符合normal distribution,通过qnorm
函数来获得normal distribution的百分位数(因此qnorm(0.975)
约等于1.96),例如求95%置信区间:
error <- qnorm(0.975) * (s / sqrt(n))
c(m - error, m + error)
当样本符合t distribution,则用qt
函数:
error <- qt(0.975, df = n-1) * (s / sqrt(n))
c(m - error, m + error)
Calculating The Power Of A Test
什么是统计功效:
统计功效描述了原假设为假的条件下,我们还可以判别出原假设为假的概率。在控制犯第一类错误概率很低的条件下,如何避免犯第二类错误的概率β也足够下呢?在学术界,统计功效的设定一般为0.8,将它作为计算的阈值。在p-value小于0.05且power大于0.8时认为是有显著差异的。
一类错误/二类错误:
一类错误,也叫做α错误,即零假设是对的,而你的检验结果却不接受零假设;二类错误,也叫做β错误,即零假设是错的,而你的检验结果却接受零假设
总之:
原假设为真 | 备择假设为真 | |
---|---|---|
接受 | 1-α | 1-β(统计功效) |
拒绝 | 犯错概率:α(一类错误) | 犯错概率:β(二类错误) |
一般我们会用简单的power.t.test
函数来获得T检验的功效值,但是也可以利用公式推导和函数来计算
假设样本符合normal distribution,在上述同样的条件下,并假设真实值和样本均值相差1.5,则:
error <- qnorm(0.975) * (s / sqrt(n))
assumed <- m + 1.5
Zleft <- ((m - error) - assumed) / (s / sqrt(n))
Zright <-((m + error) - assumed) / (s / sqrt(n))
p <- pnorm(Zright) - pnorm(Zleft)
1 - p
当样本符合t distribution,则:
error <- qt(0.975, df = n-1) * (s / sqrt(n))
assumed <- m + 1.5
tleft <- ((m - error) - assumed) / (s / sqrt(n))
tright <-((m + error) - assumed) / (s / sqrt(n))
p <- pt(tright, df=n-1) - pt(tleft, df=n-1)
1 - p
还可以通过非中心参数来估计:
'The idea is that you give it the critical t scores and
the amount that the mean would be shifted if the alternate
mean were the true mean'
1 - pt(t,df=n-1, ncp=ncp) - pt(-t,df=n-1, ncp=ncp)
以上均来自R tutorial中我想了解的部分所整理的,如有问题可以看上述链接里的完整内容
本文出自于http://www.bioinfo-scrounger.com转载请注明出处