NAG CL Interface
g01ddc (test_shapiro_wilk)
1
Purpose
g01ddc calculates Shapiro and Wilk's statistic and its significance level for testing Normality.
2
Specification
void |
g01ddc (Integer n,
const double x[],
Nag_Boolean calc_wts,
double a[],
double *w,
double *pw,
NagError *fail) |
|
The function may be called by the names: g01ddc, nag_stat_test_shapiro_wilk or nag_shapiro_wilk_test.
3
Description
g01ddc calculates Shapiro and Wilk's
statistic and its significance level for any sample size between
and
. It is an adaptation of the Applied Statistics Algorithm AS R94, see
Royston (1995). The full description of the theory behind this algorithm is given in
Royston (1992).
Given a set of observations
sorted into either ascending or descending order (
m01cac may be used to sort the data) this function calculates the value of Shapiro and Wilk's
statistic defined as:
where
is the sample mean and
, for
, are a set of ‘weights’ whose values depend only on the sample size
.
On exit, the values of , for , are only of interest should you wish to call the function again to calculate and its significance level for a different sample of the same size.
It is recommended that the function is used in conjunction with a Normal
plot of the data.
Function
g01dac
can be used to obtain the required Normal scores.
4
References
Royston J P (1982) Algorithm AS 181: the test for normality Appl. Statist. 31 176–180
Royston J P (1986) A remark on AS 181: the test for normality Appl. Statist. 35 232–234
Royston J P (1992) Approximating the Shapiro–Wilk's test for non-normality Statistics & Computing 2 117–119
Royston J P (1995) A remark on AS R94: A remark on Algorithm AS 181: the test for normality Appl. Statist. 44(4) 547–551
5
Arguments
-
1:
– Integer
Input
-
On entry: , the sample size.
Constraint:
.
-
2:
– const double
Input
-
On entry: the ordered sample values,
, for .
-
3:
– Nag_Boolean
Input
-
On entry: must be set to Nag_TRUE if you wish
g01ddc to calculate the elements of
a.
calc_wts should be set to Nag_FALSE if you have saved the values in
a from a previous call to
g01ddc.
If in doubt, set
calc_wts equal to Nag_TRUE.
-
4:
– double
Input/Output
-
On entry: if
calc_wts has been set to Nag_FALSE then before entry
a must contain the
weights as calculated in a previous call to
g01ddc, otherwise
a need not be set.
On exit: the weights required to calculate .
-
5:
– double *
Output
-
On exit: the value of the statistic, .
-
6:
– double *
Output
-
On exit: the significance level of .
-
7:
– NagError *
Input/Output
-
The NAG error argument (see
Section 7 in the Introduction to the NAG Library CL Interface).
6
Error Indicators and Warnings
- NE_ALL_ELEMENTS_EQUAL
-
On entry, all elements of
x are equal.
- NE_ALLOC_FAIL
-
Dynamic memory allocation failed.
See
Section 3.1.2 in the Introduction to the NAG Library CL Interface for further information.
- NE_BAD_PARAM
-
On entry, argument had an illegal value.
- NE_INT_ARG_GT
-
On entry, .
Constraint: .
- NE_INT_ARG_LT
-
On entry, .
Constraint: .
- NE_INTERNAL_ERROR
-
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact
NAG for assistance.
See
Section 7.5 in the Introduction to the NAG Library CL Interface for further information.
- NE_NO_LICENCE
-
Your licence key may have expired or may not have been installed correctly.
See
Section 8 in the Introduction to the NAG Library CL Interface for further information.
- NE_NON_MONOTONIC
-
On entry, elements of
x not in order.
,
,
.
7
Accuracy
There may be a loss of significant figures for large .
8
Parallelism and Performance
g01ddc is not threaded in any implementation.
The time taken by g01ddc depends roughly linearly on the value of .
For very small samples the power of the test may not be very high.
The contents of the array
a should not be modified between calls to
g01ddc for a given sample size, unless
calc_wts is reset to Nag_TRUE before each call of
g01ddc.
The Shapiro and Wilk's
test is very sensitive to ties. If the data has been rounded the test can be improved by using Sheppard's correction to adjust the sum of squares about the mean. This produces an adjusted value of
,
where
is the rounding width.
can be compared with a standard Normal distribution, but a further approximation is given by
Royston (1986).
If
, a value for
w and
pw is returned, but its accuracy may not be acceptable. See
Section 4 for more details.
10
Example
This example tests the following two samples (each of size ) for Normality.
Sample
Number |
Data |
1 |
, , , , , , , , , , , , , , , , , , , |
2 |
, , , , , , , , , , , , , , , , , , , |
The elements of
a are calculated only in the first call of
g01ddc, and are re-used in the second call.
10.1
Program Text
10.2
Program Data
10.3
Program Results