Python 计算置信区间

来源:互联网 发布:网络空间拟态防御 编辑:程序博客网 时间:2024/05/17 02:10

Python 计算置信区间

用Python实现http://vassarstats.net/prop1.html 所计算的置信区间



import math#计算置信区间的函数def calc(r,n):if n < r :print ('r cannot be greater than n.')return if math.floor(r) < r :print ('r must be an integer value.')return if math.floor(n) < n :print ('n must be an integer value.')returnp = round((r/n)*10000)/10000print ('p',p)q = 1-pp = round(p*10000)/10000print ('p',p)z=1.95996zsq = z*z# l95anum = (2*n*p)+zsq-(z*math.sqrt(zsq+(4*n*p*q)))denom = 2*(n+zsq)l95a = num/denomif p == 0 :l95a = 0l95a = round(l95a*10000)/10000# u95anum = (2*n*p)+zsq+(z*math.sqrt(zsq+(4*n*p*q)))denom = 2*(n+zsq)u95a = num/denomprint ('u95a',u95a)if p == 1 :u95a = 1u95a = round(u95a*10000)/10000print('no continuity correction',l95a,'-',u95a)# l95bnum = (2*n*p)+zsq-1-(z*math.sqrt(zsq-2-(1/n)+4*p*((n*q)+1)))denom = 2*(n+zsq)l95b = num/denomif p==0 :l95b = 0l95b = round(l95b*100000000)/100000000# u95bnum = (2*n*p)+zsq+1+(z*math.sqrt(zsq+2-(1/n)+4*p*((n*q)-1)))denom = 2*(n+zsq)u95b = num/denomif p==1 :u95b = 1u95b = round(u95b*100000000)/100000000print('including continuity correction',l95b,'-',u95b)return#测试k = 12 n = 40calc(12,40)print('THE END')
























0 0
原创粉丝点击