美文网首页
python中简单的概率计算

python中简单的概率计算

作者: 无话_ | 来源:发表于2022-07-17 12:26 被阅读0次

实验室室间质评项目绕不开的大佬——李金明,前一段时间看基因谷发了他的PPT(但是水印怎么是基因狐啊喂),正好从中了解些的临床的相关规范(其实我想找生信相关要点,但好像并没有...)。
说实话,之前在上家做微生物多样性相关科研服务时候,对参数这块定的不是特别死,有时候流程固定参数达不到合同要求交付的测序量,经常会改改overlap,改改最大错配。可能也是因为这种比较低端,pipeline不断,每天流水线式的能交100来个,颇有种来测序、送分析的意思。
简单记录下其中几个概率的计算

二项式分布概率


python计算二项式分布概率

#先写计算公式
import  math
#单次概率p,重复m次实验,出现n次的概率
def Binomial_distribution_pr(p,all_events,part_events):
    pr = math.factorial(all_events) / (math.factorial(part_events) * math.factorial(all_events - part_events)) * \
    pow(p,part_events) * pow(1-p,all_events-part_events) 
    return pr

题为:平常病人阳性率为10%,一次检测25个标本,求获得6个阳性或6个以上结果的概率,概率为1-(获得0个或1个或2个或3个或4个或5个阳性结果的概率)

# 1-(P(0)+P(1)+P(2)+P(3)+P(4)+P(5))
y=0
for x in range(6):
    y+=Binomial_distribution_pr(0.1,25,x)
print(1-y)
#0.033399944611494425

注:细看ppt其实是有些小问题的,没有写P(5)

二项式分布概率


python计算泊松分布概率

#单次概率p,重复m次实验,出现n次,概率;泊松分布用于p极小,m极大情况
import  math
def Poisson_distribution_pr(p,n,k):
    pr = pow(n*p,k)* math.exp(-n*p) / math.factorial(k)
    return pr

题为:一个实验室中,一个项目每次检测结果阳性率为2%,100个样本中出现8个阳性结果概率

print(Poisson_distribution_pr(100,0.02,8))
#0.0008592716395975409

样本间交叉污染概率


python计算样本间交叉污染概率

#m次实验,连续n次结果相同

def same_happen_pr(all_events,same_events):
    pr= (all_events - same_events +1) / (math.factorial(all_events) / (math.factorial(same_events) * math.factorial(all_events - same_events)))
    return pr

题为:一次检测100个标本的项目中,2个阳性结果连续出现的概率

print(same_happen_pr(100,2))
#0.02

题为:一次检测100个标本的项目中,3个阳性结果连续出现的概率

print(same_happen_pr(100,2))
#0.0006060606060606061

注:样本间交叉污染的概率解读
首先假设每次检测样本,是阴性或是阳性都是独立的事件,那么
做n个样本,任意取其中r个,相邻的情况有 n-r+1 种
做n个样本,任意取其中r个,所有情况有 C^r_m=\frac{m!}{r!(m-r)!}
P=\frac{n-r+1}{C^r_m}=\frac{(n-r+1)r!(m-r)!}{m!}

胡思乱想一下

假定检测样本的结果都是独立的,那么其r个阳性连续出现概率大于P,则说明r次连续的阳性结果存在正相关,可能是样本间污染(小概率事件在小规模样本数中发生)
那么,当样本数极大时候,如果其r个阳性连续出现概率小于P,那么也能说明r次连续的阳性结果存在负相关,相邻样本间结果存在拮抗(小概率事件在大规模样本数中仍不发生)

李金明:临床基因扩增检测质量保证(PPT全文)

相关文章

网友评论

      本文标题:python中简单的概率计算

      本文链接:https://www.haomeiwen.com/subject/skwkirtx.html