Shell Script for calculating Confidence Intervals

This entry was posted by on Monday, 22 August, 2011 at

If you have some data (e.g. the results from simulation experiments) you may want to calculate the Confidence Intervals to gauge statistical significance. You can do this by hand. I use a shellscript (and later also built a php function).

ci.sh:

#!/bin/bash
if [ -s $1 ]; then
        MEAN=`awk '{sum+=$1}END{print sum/NR}' $1`
        if [ $2 -eq "1" ]; then
                N=2
        else
                N=$2
        fi
        echo set N to $N >> /tmp/ci.sh.runtime_info
        Z=`awk '{if($1>='$[$N-1]')print $7}' ttable | head -n 1`
        echo Use z-value of $Z >> /tmp/ci.sh.runtime_info
        awk '{sum+=($1-'$MEAN')^2}END{delta='$Z'*sqrt(sum/('$[$N-1]'))/sqrt('$N'); printf "%f \t %s \t %f \t %f \n", '$MEAN'-delta, '$MEAN', '$MEAN'+delta, delta }' $1
else
        echo ---ci.sh: Encountered file with size 0
fi

This script does a lookup in the Student t-table.

ttable:

#df .25 .20 .15 .10 .05 .025 .02 .01 .005 .0025 .001 .0005
1  1.000  1.376  1.963  3.078  6.314  12.71  15.89  31.82  63.66  127.3  318.3  636.6 
2  0.816  1.061  1.386  1.886  2.920  4.303  4.849  6.965  9.925  14.09  22.33  31.60 
3  0.765  0.978  1.250  1.638  2.353  3.182  3.482  4.541  5.841  7.453  10.21  12.92 
4  0.741  0.941  1.190  1.533  2.132  2.776  2.999  3.747  4.604  5.598  7.173  8.610 
5  0.727  0.920  1.156  1.476  2.015  2.571  2.757  3.365  4.032  4.773  5.893  6.869 
6  0.718  0.906  1.134  1.440  1.943  2.447  2.612  3.143  3.707  4.317  5.208  5.959 
7  0.711  0.896  1.119  1.415  1.895  2.365  2.517  2.998  3.499  4.029  4.785  5.408 
8  0.706  0.889  1.108  1.397  1.860  2.306  2.449  2.896  3.355  3.833  4.501  5.041 
9  0.703  0.883  1.100  1.383  1.833  2.262  2.398  2.821  3.250  3.690  4.297  4.781 
10  0.700  0.879  1.093  1.372  1.812  2.228  2.359  2.764  3.169  3.581  4.144  4.587 
11  0.697  0.876  1.088  1.363  1.796  2.201  2.328  2.718  3.106  3.497  4.025  4.437 
12  0.695  0.873  1.083  1.356  1.782  2.179  2.303  2.681  3.055  3.428  3.930  4.318 
13  0.694  0.870  1.079  1.350  1.771  2.160  2.282  2.650  3.012  3.372  3.852  4.221 
14  0.692  0.868  1.076  1.345  1.761  2.145  2.264  2.624  2.977  3.326  3.787  4.140 
15  0.691  0.866  1.074  1.341  1.753  2.131  2.249  2.602  2.947  3.286  3.733  4.073 
16  0.690  0.865  1.071  1.337  1.746  2.120  2.235  2.583  2.921  3.252  3.686  4.015 
17  0.689  0.863  1.069  1.333  1.740  2.110  2.224  2.567  2.898  3.222  3.646  3.965 
18  0.688  0.862  1.067  1.330  1.734  2.101  2.214  2.552  2.878  3.197  3.611  3.922 
19  0.688  0.861  1.066  1.328  1.729  2.093  2.205  2.539  2.861  3.174  3.579  3.883 
20  0.687  0.860  1.064  1.325  1.725  2.086  2.197  2.528  2.845  3.153  3.552  3.850 
21  0.663  0.859  1.063  1.323  1.721  2.080  2.189  2.518  2.831  3.135  3.527  3.819 
22  0.686  0.858  1.061  1.321  1.717  2.074  2.183  2.508  2.819  3.119  3.505  3.792 
23  0.685  0.858  1.060  1.319  1.714  2.069  2.177  2.500  2.807  3.104  3.485  3.768 
24  0.685  0.857  1.059  1.318  1.711  2.064  2.172  2.492  2.797  3.091  3.467  3.745 
25  0.684  0.856  1.058  1.316  1.708  2.060  2.167  2.485  2.787  3.078  3.450  3.725 
26  0.684  0.856  1.058  1.315  1.706  2.056  2.162  2.479  2.779  3.067  3.435  3.707 
27  0.684  0.855  1.057  1.314  1.703  2.052  2.15  2.473  2.771  3.057  3.421  3.690 
28  0.683  0.855  1.056  1.313  1.701  2.048  2.154  2.467  2.763  3.047  3.408  3.674 
29  0.683  0.854  1.055  1.311  1.699  2.045  2.150  2.462  2.756  3.038  3.396  3.659 
30  0.683  0.854  1.055  1.310  1.697  2.042  2.147  2.457  2.750  3.030  3.385  3.646 
40  0.681  0.851  1.050  1.303  1.684  2.021  2.123  2.423  2.704  2.971  3.307  3.551 
50  0.679  0.849  1.047  1.295  1.676  2.009  2.109  2.403  2.678  2.937  3.261  3.496 
60  0.679  0.848  1.045  1.296  1.671  2.000  2.099  2.390  2.660  2.915  3.232  3.460 
80  0.678  0.846  1.043  1.292  1.664  1.990  2.088  2.374  2.639  2.887  3.195  3.416 
100  0.677  0.845  1.042  1.290  1.660  1.984  2.081  2.364  2.626  2.871  3.174  3.390 
1000  0.675  0.842  1.037  1.282  1.646  1.962  2.056  2.330  2.581  2.813  3.098  3.300 
100000000 0.674  0.841  1.036  1.282  1.64  1.960  2.054  2.326  2.576  2.807  3.091  3.291

Trackbacks/Pingbacks

  1. PHP Script for Calculating Confidence Intervals @ Freeminded.org
  2. PHP Script for Calculating Confidence Intervals @ Freeminded.org

Leave a Reply