{cat("--------------- Statistical Distributions ---------------\n");T}
{
#Functions: pnorm, qnorm
#Data: Conover, Table A1---Selected standard normal z scores
#Reference: Conover, W.J. 1980. Practical Nonparametric Statistics,
#              2nd edition.
#Description: Use pnorm to calculate P(Z <= z) for selected z's.  Compare to 
#             probabilities published in table.  Also use published 
#             probabilities to internally test qnorm
tol <- 2e-5
Z.scores1 <- c(-3.0902,-2.8782,-2.7478,-2.3263,-2.0749,-1.6546,-1.6449,-1.6258)
p.table1 <- c(0.001,0.002,0.003,0.010,0.019,0.049,0.050,0.052)
p.norm1 <- pnorm(Z.scores1)
pq.norm1 <- pnorm(qnorm(p.table1))
#
Z.scores2 <- c(-0.6745,-0.6682,-0.6620,-0.6557,-0.6495,-0.5244,-0.5187,-0.5072)
p.table2 <- c(0.250,0.252,0.254,0.256,0.258,0.300,0.302,0.306)
p.norm2 <- pnorm(Z.scores2)
pq.norm2 <- pnorm(qnorm(p.table2))
#
Z.scores3 <- c(0.0000,0.0050,0.0100,0.0150,0.0201,0.1257,0.1358,0.1408,0.1484)
p.table3 <- c(0.500,0.502,0.504,0.506,0.508,0.550,0.554,0.556,0.559)
p.norm3 <- pnorm(Z.scores3)
pq.norm3 <- pnorm(qnorm(p.table3))
#
Z.scores4 <- c(0.1764,0.1815,0.1866,0.1917,0.1968,0.3055,0.3134,0.3213,0.3292)
p.table4 <- c(0.570,0.572,0.574,0.576,0.578,0.620,0.623,0.626,0.629)
p.norm4 <- pnorm(Z.scores4)
pq.norm4 <- pnorm(qnorm(p.table4))
#
Z.scores5 <- c(0.4959,0.5044,0.5129,0.6128,0.6311,0.7421,0.7554,0.7655,0.8488)
p.table5 <- c(0.690,0.693,0.696,0.730,0.736,0.771,0.775,0.778,0.802)
p.norm5 <- pnorm(Z.scores5)
pq.norm5 <- pnorm(qnorm(p.table5))
#
Z.scores6 <- c(0.8633,0.8742,0.9945,1.0237,1.1311,1.1503,1.2873,1.3225,1.4187)
p.table6 <- c(0.806,0.809,0.840,0.847,0.871,0.875,0.901,0.907,0.922)
p.norm6 <- pnorm(Z.scores6)
pq.norm6 <- pnorm(qnorm(p.table6))
#
Z.scores7 <- c(1.5220,1.7624,1.8522,2.0537,2.1201,2.2262,2.3263,2.5121,3.0902)
p.table7 <- c(0.936,0.961,0.968,0.980,0.983,0.987,0.990,0.994,0.999)
p.norm7 <- pnorm(Z.scores7)
pq.norm7 <- pnorm(qnorm(p.table7))
#
all(c(abs(p.norm1 - p.table1) < tol,
      abs(pq.norm1 - p.table1) < tol,
      abs(p.norm2 - p.table2) < tol,
      abs(pq.norm2 - p.table2) < tol,
      abs(p.norm3 - p.table3) < tol,
      abs(pq.norm3 - p.table3) < tol,
      abs(p.norm4 - p.table4) < tol,
      abs(pq.norm4 - p.table4) < tol,
      abs(p.norm5 - p.table5) < tol,
      abs(pq.norm5 - p.table5) < tol,
      abs(p.norm6 - p.table6) < tol,
      abs(pq.norm6 - p.table6) < tol,
      abs(p.norm7 - p.table7) < tol,
      abs(pq.norm7 - p.table7) < tol))
}
{
#Function: pchisq
#Data: Rholf and Sokal, Table 14, p.98---Critical Values of the Chi-square
#                                        Distribution
#Reference: Rholf, F.J. and R.R. Sokal. 1981. Statistical Tables,
#              2nd edition. W.H. Freeman and Company, New York.
#Description: Use pchisq to calculate P(X <= x) for selected x's.  Compare to
#             probabilities published in table. 
tol <- 7e-4
chi.prob <- c(0.995,0.975,0.90,0.50,0.10,0.050,0.025,0.010,0.005,0.001)
chi.1 <- c(0.000,0.000,0.016,0.455,2.706,3.841,5.024,6.635,7.879,10.828)
chi.5 <- c(0.412,0.831,1.610,4.351,9.236,11.070,12.832,15.086,16.750,20.515)
chi.10 <- c(2.156,3.247,4.865,9.342,15.987,18.307,20.483,23.209,25.188,29.588)
chi.15 <- c(4.601,6.262,8.547,14.339,22.307,24.996,27.488,30.578,32.801,37.697)
chi.20 <- c(7.434,9.591,12.443,19.337,28.412,31.410,34.170,37.566,39.997,
            45.315)
chi.25 <- c(10.520,13.120,16.473,24.337,34.382,37.652,40.646,44.314,46.928,
            52.520)
chi.30 <- c(13.787,16.791,20.599,29.336,40.256,43.773,46.979,50.892,53.672,
            59.703)
chi.40 <- c(20.707,24.433,29.051,39.335,51.805,55.758,59.342,63.691,66.766,
            73.402)
chi.50 <- c(27.991,32.357,37.689,49.335,63.167,67.505,71.420,76.154,79.490,
            86.661)
chi.60 <- c(35.534,40.482,46.459,59.335,74.397,79.082,83.298,88.379,91.952,
            99.607)
chi.70 <- c(43.275,48.758,55.329,69.334,85.527,90.531,95.023,100.43,104.21,
            112.317)
chi.80 <- c(51.172,57.153,64.278,79.334,96.578,101.88,106.63,112.33,116.32,
            124.839)
chi.90 <- c(59.196,65.647,73.291,89.334,107.56,113.15,118.14,124.12,128.30,
            137.208)
chi.100 <- c(67.328,74.222,82.358,99.334,118.50,124.34,129.56,135.81,140.17,
             149.449)
pchi.tst1 <- pchisq(chi.1,1)
pchi.tst5 <- pchisq(chi.5,5)
pchi.tst10 <- pchisq(chi.10,10)
pchi.tst15 <- pchisq(chi.15,15)
pchi.tst20 <- pchisq(chi.20,20)
pchi.tst25 <- pchisq(chi.25,25)
pchi.tst30 <- pchisq(chi.30,30)
pchi.tst40 <- pchisq(chi.40,40)
pchi.tst50 <- pchisq(chi.50,50)
pchi.tst60 <- pchisq(chi.60,60)
pchi.tst70 <- pchisq(chi.70,70)
pchi.tst80 <- pchisq(chi.80,80)
pchi.tst90 <- pchisq(chi.90,90)
pchi.tst100 <- pchisq(chi.100,100)
all(c(abs((1 - pchi.tst1[3:10]) - chi.prob[3:10]) < tol,
      abs((1 - pchi.tst5) - chi.prob) < tol,
      abs((1 - pchi.tst10) - chi.prob) < tol,
      abs((1 - pchi.tst15) - chi.prob) < tol,
      abs((1 - pchi.tst20) - chi.prob) < tol,
      abs((1 - pchi.tst25) - chi.prob) < tol,
      abs((1 - pchi.tst30) - chi.prob) < tol,
      abs((1 - pchi.tst40) - chi.prob) < tol,
      abs((1 - pchi.tst50) - chi.prob) < tol,
      abs((1 - pchi.tst60) - chi.prob) < tol,
      abs((1 - pchi.tst70) - chi.prob) < tol,
      abs((1 - pchi.tst80) - chi.prob) < tol,
      abs((1 - pchi.tst90) - chi.prob) < tol,
      abs((1 - pchi.tst100) - chi.prob) < tol))
}
{
#Function: qchisq
#Data: Rholf and Sokal, Table 14, p.98---Critical Values of the Chi-square
#                                        Distribution
#Reference: Rholf, F.J. and R.R. Sokal. 1981. Statistical Tables,
#              2nd edition. W.H. Freeman and Company, New York.
#Description: Use quantiles and probabilites from previous test of pchisq to 
#             test qchisq.  Compare to x's  published in table.
tol <- 7e-4
all(c(abs((1 - pchi.tst1[3:10]) - chi.prob[3:10]) < tol,
      abs((1 - pchi.tst5) - chi.prob) < tol,
      abs((1 - pchi.tst10) - chi.prob) < tol,
      abs((1 - pchi.tst15) - chi.prob) < tol,
      abs((1 - pchi.tst20) - chi.prob) < tol,
      abs((1 - pchi.tst25) - chi.prob) < tol,
      abs((1 - pchi.tst30) - chi.prob) < tol,
      abs((1 - pchi.tst40) - chi.prob) < tol,
      abs((1 - pchi.tst50) - chi.prob) < tol,
      abs((1 - pchi.tst60) - chi.prob) < tol,
      abs((1 - pchi.tst70) - chi.prob) < tol,
      abs((1 - pchi.tst80) - chi.prob) < tol,
      abs((1 - pchi.tst90) - chi.prob) < tol,
      abs((1 - pchi.tst100) - chi.prob) < tol))
}
{
#Clean up after sdistrib
cleanup <- T
rm(tol, Z.scores1, p.table1, p.norm1, pq.norm1, Z.scores2, p.table2, p.norm2)
rm(pq.norm2, Z.scores3, p.table3, p.norm3, pq.norm3, Z.scores4, p.table4)
rm(p.norm4, pq.norm4, Z.scores5, p.table5, p.norm5, pq.norm5)
rm(Z.scores6, p.table6, p.norm6, pq.norm6)
rm(Z.scores7, p.table7, p.norm7, pq.norm7)
rm(chi.prob,chi.1,chi.5,chi.10,chi.15,chi.20,chi.25,chi.30,chi.40,chi.50)
rm(chi.60,chi.70,chi.80,chi.90,chi.100,pchi.tst1,pchi.tst5,pchi.tst10)
rm(pchi.tst15,pchi.tst20,pchi.tst25,pchi.tst30,pchi.tst40,pchi.tst50)
rm(pchi.tst60,pchi.tst70,pchi.tst80,pchi.tst90,pchi.tst100)
T
}
