Guest User

Untitled

a guest
Sep 18th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. BEGIN {
  2. ITMAX = 100
  3. EPS7 = 3.0e-7
  4. }
  5.  
  6. function fatalError(msg, errcode) {
  7. print msg > "/dev/null"
  8. exit(errcode+0)
  9. }
  10.  
  11. function gammaln(xx,
  12. x,y,tmp,ser,cof,j) {
  13. cof[0] = 76.18009172947146
  14. cof[1] = -86.50532032941677
  15. cof[2] = 24.01409824083091
  16. cof[3] = -1.231739572450155
  17. cof[4] = 0.1208650973866179e-2
  18. cof[5] = -0.5395239384953e-5
  19.  
  20. if(xx == 0.0)
  21. fatalError("gammaln: ERR_INVALID_PARAMETER_0, parameter was: " xx, 2)
  22.  
  23. y = x = xx
  24. tmp = x + 5.5
  25. tmp -= (x+0.5) * log(tmp)
  26. ser = 1.000000000190015
  27.  
  28. for (j=0;j<=5;j++) ser += cof[j]/++y
  29.  
  30. return -tmp + log(2.5066282746310005*ser/x);
  31. }
  32.  
  33. function fabs(x) {
  34. return x >= 0.0 ? x : -x
  35. }
  36.  
  37. function betacf(a, b, x,
  38. qap,qam,qab,em,tem,d,
  39. bz,bm,bp,bpp,
  40. az,am,ap,app,aold,
  41. m)
  42. {
  43.  
  44. bm = az = am = 1.0
  45. qab=a+b
  46. qap=a+1.0
  47. qam=a-1.0
  48. bz=1.0-qab*x/qap
  49. for (m=1;m<=ITMAX;m++)
  50. {
  51. em=m
  52. tem=em+em
  53. d=em*(b-em)*x/((qam+tem)*(a+tem))
  54. ap=az+d*am
  55. bp=bz+d*bm
  56. d = -(a+em)*(qab+em)*x/((qap+tem)*(a+tem))
  57. app=ap+d*az
  58. bpp=bp+d*bz
  59. aold=az
  60. am=ap/bpp
  61. bm=bp/bpp
  62. az=app/bpp
  63. bz=1.0
  64. if (fabs(az-aold) < (EPS7 * fabs(az))) return az
  65. }
  66. return(paramError = 1)
  67. }
  68.  
  69. function betai(a, b, x,
  70. bt) {
  71. if (x < 0.0 || x > 1.0)
  72. {
  73. paramError = 1 # TODO: find out what this is for.
  74. return(0.0)
  75. }
  76.  
  77. if (x == 0.0 || x == 1.0)
  78. bt = 0.0
  79. else
  80. bt = exp(gammaln(a+b)-gammaln(a)-gammaln(b)+a*log(x)+b*log(1.0-x))
  81.  
  82. if (x < (a+1.0)/(a+b+2.0))
  83. return (bt * betacf(a,b,x) / a)
  84. else
  85. return (1.0 - bt * betacf(b,a,1.0-x) / b)
  86. }
  87.  
  88. function probT(t, df,
  89. bta)
  90. {
  91. bta = betai(df/2.0, 0.5, 1.0/(1.0 + t*t/df));
  92. if(t > 0.0) return(1.0 - 0.5 * bta);
  93. else if(t < 0.0) return(0.5 * bta);
  94. return(0.5);
  95. }
  96.  
  97. function critical_value(p, df1, df2, max_val, type,
  98. NEWTON_EPSILON, minval,
  99. maxval, critval, prob)
  100. {
  101. NEWTON_EPSILON = 0.000001 # Accuracy of Newton approximation
  102. minval = 0.0;
  103. maxval = max_val;
  104. critval;
  105. prob = 0.0;
  106.  
  107. if (p <= 0.0) return 0.0;
  108. else if (p >= 1.0) return maxval;
  109.  
  110. critval = (df1 + df2) / sqrt(p); # fair first value
  111. while ((maxval - minval) > NEWTON_EPSILON)
  112. {
  113. prob = probT(critval, df1);
  114.  
  115. if (prob < p) minval = critval;
  116. else maxval = critval;
  117. critval = (maxval + minval) * 0.5;
  118. }
  119.  
  120. return critval;
  121. }
  122.  
  123. function criticalX(p, df1,
  124. df2, x)
  125. {
  126. df2 = 0;
  127.  
  128. x = critical_value((1.0 - p), df1, df2, 99999.0, type);
  129. if(x < NEWTON_EPSILON) x = 0.0;
  130. return(x);
  131. }
  132.  
  133. function criticalT(p, df) {
  134. return criticalX(p, df)
  135. }
  136.  
  137. function confidenceT(alpha, stdev, samplesize) {
  138. return sqrt(stdev/samplesize) * criticalT(alpha/2, samplesize-1)
  139. }
Add Comment
Please, Sign In to add comment