Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

Chapter Contents
Chapter Introduction
NAG Toolbox

# NAG Toolbox: nag_anova_confidence (g04db)

## Purpose

nag_anova_confidence (g04db) computes simultaneous confidence intervals for the differences between means. It is intended for use after nag_anova_random (g04bb) or nag_anova_rowcol (g04bc).

## Syntax

[cil, ciu, isig, ifail] = g04db(typ, tmean, rdf, c, clevel, 'nt', nt)
[cil, ciu, isig, ifail] = nag_anova_confidence(typ, tmean, rdf, c, clevel, 'nt', nt)

## Description

In the computation of analysis of a designed experiment the first stage is to compute the basic analysis of variance table, the estimate of the error variance (the residual or error mean square), σ̂2${\stackrel{^}{\sigma }}^{2}$, the residual degrees of freedom, ν$\nu$, and the (variance ratio) F$F$-statistic for the t$t$ treatments. The second stage of the analysis is to compare the treatment means. If the treatments have no structure, for example the treatments are different varieties, rather than being structured, for example a set of different temperatures, then a multiple comparison procedure can be used.
A multiple comparison procedure looks at all possible pairs of means and either computes confidence intervals for the difference in means or performs a suitable test on the difference. If there are t$t$ treatments then there are t(t1) / 2$t\left(t-1\right)/2$ comparisons to be considered. In tests the type 1$1$ error or significance level is the probability that the result is considered to be significant when there is no difference in the means. If the usual t$t$-test is used with, say, a 6%$6%$ significance level then the type 1$1$ error for all k = t(t1) / 2$k=t\left(t-1\right)/2$ tests will be much higher. If the tests were independent then if each test is carried out at the 100α$100\alpha$ percent level then the overall type 1$1$ error would be α* = 1(1α)kkα${\alpha }^{*}=1-{\left(1-\alpha \right)}^{k}\simeq k\alpha$. In order to provide an overall protection the individual tests, or confidence intervals, would have to be carried out at a value of α$\alpha$ such that α*${\alpha }^{*}$ is the required significance level, e.g., five percent.
The 100(1α)$100\left(1-\alpha \right)$ percent confidence interval for the difference in two treatment means, τ̂i${\stackrel{^}{\tau }}_{i}$ and τ̂j${\stackrel{^}{\tau }}_{j}$ is given by
 (τ̂i − τ̂j) ± T(α,ν,t) * se(τ̂i − τ̂j), $(τ^i-τ^j)±T(α,ν,t)*se(τ^i-τ^j),$
where se()$se\left(\right)$ denotes the standard error of the difference in means and T(α,ν,t) * ${T}_{\left(\alpha ,\nu ,t\right)}^{*}$ is an appropriate percentage point from a distribution. There are several possible choices for T(α,ν,t) * ${T}_{\left(\alpha ,\nu ,t\right)}^{*}$. These are:
 (a) (1/2)q(1 − α,ν,t)$\frac{1}{2}{q}_{\left(1-\alpha ,\nu ,t\right)}$, the studentized range statistic, see nag_stat_inv_cdf_studentized_range (g01fm). It is the appropriate statistic to compare the largest mean with the smallest mean. This is known as Tukey–Kramer method. (b) t(α / k,ν)${t}_{\left(\alpha /k,\nu \right)}$, this is the Bonferroni method. (c) t(α0,ν)${t}_{\left({\alpha }_{0},\nu \right)}$, where α0 = 1 − (1 − α)1 / k${\alpha }_{0}=1-{\left(1-\alpha \right)}^{1/k}$, this is known as the Dunn–Sidak method. (d) t(α,ν)${t}_{\left(\alpha ,\nu \right)}$, this is known as Fisher's LSD (least significant difference) method. It should only be used if the overall F$F$-test is significant, the number of treatment comparisons is small and were planned before the analysis. (e) sqrt((k − 1)F1 − α,k − 1,ν)$\sqrt{\left(k-1\right){F}_{1-\alpha ,k-1,\nu }}$ where F1 − α,k − 1,ν${F}_{1-\alpha ,k-1,\nu }$ is the deviate corresponding to a lower tail probability of 1 − α$1-\alpha$ from an F$F$-distribution with k − 1$k-1$ and ν$\nu$ degrees of freedom. This is Scheffe's method.
In cases (b), (c) and (d), t(α,ν)${t}_{\left(\alpha ,\nu \right)}$ denotes the α$\alpha$ two tail significance level for the Student's t$t$-distribution with ν$\nu$ degrees of freedom, see nag_stat_inv_cdf_students_t (g01fb).
The Scheffe method is the most conservative, followed closely by the Dunn–Sidak and Tukey–Kramer methods.
To compute a test for the difference between two means the statistic,
 (τ̂i − τ̂j)/(se(τ̂i − τ̂j)) $τ^i-τ^j se(τ^i-τ^j)$
is compared with the appropriate value of T(α,ν,t) * ${T}_{\left(\alpha ,\nu ,t\right)}^{*}$.

## References

Kotz S and Johnson N L (ed.) (1985a) Multiple range and associated test procedures Encyclopedia of Statistical Sciences 5 Wiley, New York
Kotz S and Johnson N L (ed.) (1985b) Multiple comparison Encyclopedia of Statistical Sciences 5 Wiley, New York
Winer B J (1970) Statistical Principles in Experimental Design McGraw–Hill

## Parameters

### Compulsory Input Parameters

1:     typ – string (length ≥ 1)
Indicates which method is to be used.
typ = 'T'${\mathbf{typ}}=\text{'T'}$
The Tukey–Kramer method is used.
typ = 'B'${\mathbf{typ}}=\text{'B'}$
The Bonferroni method is used.
typ = 'D'${\mathbf{typ}}=\text{'D'}$
The Dunn–Sidak method is used.
typ = 'L'${\mathbf{typ}}=\text{'L'}$
The Fisher LSD method is used.
typ = 'S'${\mathbf{typ}}=\text{'S'}$
The Scheffe's method is used.
Constraint: typ = 'T'${\mathbf{typ}}=\text{'T'}$, 'B'$\text{'B'}$, 'D'$\text{'D'}$, 'L'$\text{'L'}$ or 'S'$\text{'S'}$.
2:     tmean(nt) – double array
nt, the dimension of the array, must satisfy the constraint nt2${\mathbf{nt}}\ge 2$.
The treatment means, τ̂i${\stackrel{^}{\tau }}_{\mathit{i}}$, for i = 1,2,,t$\mathit{i}=1,2,\dots ,t$.
3:     rdf – double scalar
ν$\nu$, the residual degrees of freedom.
Constraint: rdf1.0${\mathbf{rdf}}\ge 1.0$.
4:     c(ldc,nt) – double array
ldc, the first dimension of the array, must satisfy the constraint ldcnt$\mathit{ldc}\ge {\mathbf{nt}}$.
The strictly lower triangular part of c must contain the standard errors of the differences between the means as returned by nag_anova_random (g04bb) and nag_anova_rowcol (g04bc). That is c(i,j)${\mathbf{c}}\left(i,j\right)$, i > j$i>j$, contains the standard error of the difference between the i$i$th and j$j$th mean in tmean.
Constraint: c(i,j) > 0.0${\mathbf{c}}\left(\mathit{i},\mathit{j}\right)>0.0$, for i = 2,3,,t$\mathit{i}=2,3,\dots ,t$ and j = 1,2,,i1$\mathit{j}=1,2,\dots ,\mathit{i}-1$.
5:     clevel – double scalar
The required confidence level for the computed intervals, (1α$1-\alpha$).
Constraint: 0.0 < clevel < 1.0$0.0<{\mathbf{clevel}}<1.0$.

### Optional Input Parameters

1:     nt – int64int32nag_int scalar
Default: The dimension of the array tmean and the first dimension of the array c and the second dimension of the array c. (An error is raised if these dimensions are not equal.)
t$t$, the number of treatment means.
Constraint: nt2${\mathbf{nt}}\ge 2$.

ldc

### Output Parameters

1:     cil(nt × (nt1) / 2${\mathbf{nt}}×\left({\mathbf{nt}}-1\right)/2$) – double array
The ((i1)(i2) / 2 + j) $\left(\left(\mathit{i}-1\right)\left(\mathit{i}-2\right)/2+\mathit{j}\right)$th element contains the lower limit to the confidence interval for the difference between i$\mathit{i}$th and j$\mathit{j}$th means in tmean, for i = 2,3,,t$\mathit{i}=2,3,\dots ,t$ and j = 1,2,,i1$\mathit{j}=1,2,\dots ,\mathit{i}-1$.
2:     ciu(nt × (nt1) / 2${\mathbf{nt}}×\left({\mathbf{nt}}-1\right)/2$) – double array
The ((i1)(i2) / 2 + j) $\left(\left(\mathit{i}-1\right)\left(\mathit{i}-2\right)/2+\mathit{j}\right)$th element contains the upper limit to the confidence interval for the difference between i$\mathit{i}$th and j$\mathit{j}$th means in tmean, for i = 2,3,,t$\mathit{i}=2,3,\dots ,t$ and j = 1,2,,i1$\mathit{j}=1,2,\dots ,\mathit{i}-1$.
3:     isig(nt × (nt1) / 2${\mathbf{nt}}×\left({\mathbf{nt}}-1\right)/2$) – int64int32nag_int array
The ((i1)(i2) / 2 + j) $\left(\left(\mathit{i}-1\right)\left(\mathit{i}-2\right)/2+\mathit{j}\right)$th element indicates if the difference between i$\mathit{i}$th and j$\mathit{j}$th means in tmean is significant, for i = 2,3,,t$\mathit{i}=2,3,\dots ,t$ and j = 1,2,,i1$\mathit{j}=1,2,\dots ,\mathit{i}-1$. If the difference is significant then the returned value is 1$1$; otherwise the returned value is 0$0$.
4:     ifail – int64int32nag_int scalar
${\mathrm{ifail}}={\mathbf{0}}$ unless the function detects an error (see [Error Indicators and Warnings]).

## Error Indicators and Warnings

Errors or warnings detected by the function:
ifail = 1${\mathbf{ifail}}=1$
 On entry, nt < 2${\mathbf{nt}}<2$, or ldc < nt$\mathit{ldc}<{\mathbf{nt}}$, or rdf < 1.0${\mathbf{rdf}}<1.0$, or clevel ≤ 0.0${\mathbf{clevel}}\le 0.0$, or clevel ≥ 1.0${\mathbf{clevel}}\ge 1.0$, or typ ≠ 'T'${\mathbf{typ}}\ne \text{'T'}$, 'B'$\text{'B'}$, 'D'$\text{'D'}$, 'L'$\text{'L'}$ or 'S'$\text{'S'}$.
ifail = 2${\mathbf{ifail}}=2$
 On entry, c(i,j) ≤ 0.0${\mathbf{c}}\left(i,j\right)\le 0.0$ for some i,j$i,j$, i = 2,3, … ,t$i=2,3,\dots ,t$ and j = 1,2, … ,i − 1$j=1,2,\dots ,i-1$.
ifail = 3${\mathbf{ifail}}=3$
There has been a failure in the computation of the studentized range statistic. This is an unlikely error. Try using a small value of clevel.

## Accuracy

For the accuracy of the percentage point statistics see nag_stat_inv_cdf_students_t (g01fb) and nag_stat_inv_cdf_studentized_range (g01fm).

If the treatments have a structure then the use of linear contrasts as computed by nag_anova_contrasts (g04da) may be more appropriate.
An alternative approach to one used in nag_anova_confidence (g04db) is the sequential testing of the Student–Newman–Keuls procedure. This, in effect, uses the Tukey–Kramer method but first ordering the treatment means and examining only subsets of the treatment means in which the largest and smallest are significantly different. At each stage the third parameter of the Studentized range statistic is the number of means in the subset rather than the total number of means.

## Example

```function nag_anova_confidence_example
typ = 'T';
tmean = [3;
7;
2.25;
9.428571428571427];
rdf = 22;
c = [0.4266566766566766, -0.127997002997003, -0.127997002997003, -0.127997002997003;
1.104643877110671, 0.5375874125874126, -0.127997002997003, -0.127997002997003;
0.9852126366393904, 1.039987824604055, 0.2879932567432567, -0.127997002997003;
1.014924193896684, 1.068176883894971, 0.9441438976360614, 0.347420436706151];
clevel = 0.95;
[cil, ciu, isig, ifail] = nag_anova_confidence(typ, tmean, rdf, c, clevel)
```
```

cil =

0.9326
-3.4857
-7.6378
3.6103
-0.5375
4.5569

ciu =

7.0674
1.9857
-1.8622
9.2468
5.3947
9.8003

isig =

1
0
1
1
0
1

ifail =

0

```
```function g04db_example
typ = 'T';
tmean = [3;
7;
2.25;
9.428571428571427];
rdf = 22;
c = [0.4266566766566766, -0.127997002997003, -0.127997002997003, -0.127997002997003;
1.104643877110671, 0.5375874125874126, -0.127997002997003, -0.127997002997003;
0.9852126366393904, 1.039987824604055, 0.2879932567432567, -0.127997002997003;
1.014924193896684, 1.068176883894971, 0.9441438976360614, 0.347420436706151];
clevel = 0.95;
[cil, ciu, isig, ifail] = g04db(typ, tmean, rdf, c, clevel)
```
```

cil =

0.9326
-3.4857
-7.6378
3.6103
-0.5375
4.5569

ciu =

7.0674
1.9857
-1.8622
9.2468
5.3947
9.8003

isig =

1
0
1
1
0
1

ifail =

0

```