正连续值的分布
在生物学中有很多数据的分布特征是“strictly positive and heavy right tail”,统计学上有很多模型便是基于这种特征的数据而建立的,比如说分布、指数分布以及分布,其中,前两个分布其实是Gamma分布的两个特例。
这种分布可以应用在基因特异的生物学变异的相关研究当中,接下来我们便用maPooling
包中的数据来进行具体讲解。
首先咱们先证明下基因确实具有基因特异的生物学变异:
library(Biobase) ##available from Bioconductor
library(maPooling) ##available from course github repo
data(maPooling)
pd=pData(maPooling)
strain=factor(as.numeric(grepl("b",rownames(pd))))
pooled=which(rowSums(pd)==12 & strain==1)
techreps=exprs(maPooling[,pooled])
individuals=which(rowSums(pd)==1 & strain==1)
##remove replicates
individuals=individuals[-grep("tr",names(individuals))]
bioreps=exprs(maPooling)[,individuals]
####上面的步骤其实就是从包里现将生物学重复和技术重复的样本分别提取出来####
###然后分别计算生物学重复、技术重复的样本标准差
library(matrixStats)
techsds=rowSds(techreps)
biosds=rowSds(bioreps)
###绘图
library(rafalib)
mypar()
shist(biosds,unit=0.1,col=1,xlim=c(0,1.5))
shist(techsds,unit=0.1,col=2,add=TRUE)
legend("topright",c("Biological","Technical"), col=c(1,2),lty=c(1,1))
replicates.png
从图中我们确实是可以看出,生物学重复的样本标准差明显大于技术重复样本,这足以说明,基因组中确实存在基因特异的生物学变异。
- 为方差建模
上述的例子,我们可以使用层次模型(hierarchimal)进行建模,这个模型是基于scaled F-statistic建立的(基因的样本标准差满足F分布):
其中,和分别是和的自由度,控制location,控制scale:越大,概率密度曲线越向右偏;越大,概率密度曲线便越高。
求和的最佳拟合值在R中也是十分简单,使用函数fitFDist()
即可:
library(limma)
estimates=fitFDist(biosds^2,11)
theoretical<- sqrt(qf((seq(0,999)+0.5)/1000, 11, estimates$df2)*estimates$scale)
observed <- biosds
mypar(1,2)
qqplot(theoretical,observed)
abline(0,1)
tmp=hist(biosds,main=paste("s_0 =", signif(estimates[[1]],2), "d =", signif(estimates[[2]],2)), xlab="sd", ylab="density", freq=FALSE, nc=100, xlim=c(0,1), ylim=c(0,9))
dd=df(sds^2/estimates$scale,11,estimates$df2)
k=sum(tmp$density)/sum(dd) ##a normalizing constant to assure same area in plot
lines(sds, dd*k, type="l", col=2, lwd=2)
hierarchimal.png
是概率密度值,是分布的统计量,为的自由度(分子变量的自由度),是的自由度(分母变量的自由度),因此:
qf(p, df1, df2)
返回的是相应的统计量;df(x, df1, df2)
返回相应的概率密度值;fitFDist(x, df1)
:返回和的最佳拟合值。
网友评论