Performs a sign test.
#include <imsls.h>
float imsls_f_sign_test (int n_observations, float x[], ..., 0)
The type double function is imsls_d_sign_test.
int
n_observations (Input)
Number of observations.
float x[]
(Input)
Array of length n_observations
containing the input data.
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.
#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)
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.
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.
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>
int 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);
}
probability = 0.179642
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>
int 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);
}
probability = 0.922543.
Number of positive deviations is 12.
Number of ties is 0.