A basic tutorial of R

推荐一个R tutorial,刚好解决了我一个问题:

如果知道Z或者t统计量,如何通过R计算获得对应的P值

按照常规思路,一般都是知道两个向量,通过t.testT检验来计算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转载请注明出处