Chapter 6: Nonparametric Statistics

sign_test

Performs a sign test.

Synopsis

#include <imsls.h>

float imsls_f_sign_test (int n_observations, float x[], ..., 0)

The type double function is imsls_d_sign_test.

Required Arguments

int n_observations   (Input)
Number of observations.

float x[]   (Input)
Array of length n_observations containing the input data.

Return Value

Binomial probability of n_positive_deviations or more positive differences in n_observations  n_zero_deviation trials. Call this value probability. If no option is chosen, the null hypothesis is that the median equals 0.0.

Synopsis with Optional Arguments

#include <imsls.h>

float imsls_f_sign_test (int n_observations, float x[],
IMSLS_PERCENTAGE, float percentage,
IMSLS_PERCENTILE, float percentile,
IMSLS_N_POSITIVE_DEVIATIONS,

int *n_positive_deviations,
IMSLS_N_ZERO_DEVIATIONS, int *n_zero_deviations,
0)

Optional Arguments

IMSLS_PERCENTAGE, float percentage   (Input)
Value in the range (0, 1). Argument percentile is the
100 × percentage percentile of the population.
Default: percentage = 0.5

IMSLS_PERCENTILE, float percentile   (Input)
Hypothesized percentile of the population from which x was drawn.
Default: percentile = 0.0

IMSLS_N_POSITIVE_DEVIATIONS, int *n_positive_deviations   (Output)
Number of positive differences x[j  1]  percentile for
j = 1, 2, n_observations.

IMSLS_N_ZERO_DEVIATIONS, int *n_zero_deviations   (Output)
Number of zero differences (ties) x[j  1]  percentile for
j = 1, 2, n_observations.

Description

Function imsls_f_sign_test tests hypotheses about the proportion p of a population that lies below a value q, where p corresponds to argument percentage and q corresponds to argument percentile. In continuous distributions, this can be a test that q is the 100 p-th percentile of the population from which x was obtained. To carry out testing, imsls_f_sign_test tallies the number of values above q in n_positive_deviations. The binomial probability of n_positive_deviations or more values above q is then computed using the proportion p and the sample size n_observations (adjusted for the missing observations and ties).

Hypothesis testing is performed as follows for the usual null and alternative hypotheses:

      H0: Pr(x  q p (the p-th quantile is at least q)
H1: Pr(x  q) < p
Reject H0 if probability is less than or equal to the significance level

      H0: Pr(x  q p (the p-th quantile is at least q)
H1: Pr(x  q) > p
Reject H0 if probability is greater than or equal to 1 minus the significance level

      H0: Pr (x = q= p (the p-th quantile is q)
H1: Pr((x  q) < p) or Pr((x  q) > p)
Reject H0 if probability is less than or equal to half the significance level or greater than or equal to 1 minus half the significance level

 

The assumptions are as follows:

1.     They are independent and identically distributed.

2.     Measurement scale is at least ordinal; i.e., an ordering less than, greater than, and equal to exists in the observations.

Many uses for the sign test are possible with various values of p and q. For example, to perform a matched sample test that the difference of the medians of y and z is 0.0, let p = 0.5, q = 0.0, and xi = yi  zi in matched observations y and z. To test that the median difference is c, let q = c.

Examples

Example 1

This example tests the hypothesis that at least 50 percent of a population is negative. Because 0.18 < 0.95, the null hypothesis at the 5-percent level of significance is not rejected.

#include <imsls.h>

void main ()
{
    int         n_observations = 19;
    float       probability;
    float       x[19] = {92.0, 139.0, -6.0, 10.0, 81.0, -11.0, 45.0,
          -25.0, -4.0, 22.0, 2.0, 41.0, 13.0, 8.0, 33.0,
          45.0, -33.0, -45.0, -12.0};

    probability = imsls_f_sign_test(n_observations, x, 0);
 
    printf("probability = %10.6f\n", probability);
}

Output

probability =   0.179642

Example 2

This example tests the null hypothesis that at least 75 percent of a population is negative. Because 0.923 < 0.95, the null hypothesis at the 5-percent level of significance is rejected.

#include <imsls.h>

void main ()
{
    int         n_observations = 19;
    int         n_positive_deviations, n_zero_deviations;
    float       probability;
    float       percentage = 0.75;
    float       percentile = 0.0;
    float       x[19] = {92.0, 139.0, -6.0, 10.0, 81.0, -11.0, 45.0,
          -25.0, -4.0, 22.0, 2.0, 41.0, 13.0, 8.0, 33.0,
          45.0, -33.0, -45.0, -12.0};


    probability = imsls_f_sign_test(n_observations, x, IMSLS_PERCENTAGE,
            percentage, IMSLS_PERCENTILE, percentile,
            IMSLS_N_POSITIVE_DEVIATIONS, &n_positive_deviations,
            IMSLS_N_ZERO_DEVIATIONS, &n_zero_deviations, 0);

    printf("probability = %10.6f.\n", probability);
    printf("Number of positive deviations is %d.\n",
           n_positive_deviations);
    printf("Number of ties is %d.\n", n_zero_deviations);
}

Output

probability =   0.922543.
Number of positive deviations is 12.
Number of ties is 0.


Visual Numerics, Inc.
Visual Numerics - Developers of IMSL and PV-WAVE
http://www.vni.com/
PHONE: 713.784.3131
FAX:713.781.9260