{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
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
}
