cochran_q_test
Performs a Cochran Q test for related observations.
Synopsis
#include <imsls.h>
float imsls_f_cochran_q_test (int n_observations, int n_variables, float x[], .… 0)
The type double function is imsls_d_cochran_q_test.
Required Arguments
int n_observations (Input)
Number of blocks for each treatment.
int n_variables (Input)
Number of treatments.
float x[] (Input)
Array of size n_observations × n_variables containing the matrix of dichotomized data. There are n_observations readings of zero or one on each of the n_variables treatments.
Return Value
The p-value, p_value, for the Cochran Q statistic.
Synopsis with Optional Arguments
#include <imsls.h>
float imsls_f_cochran_q_test (int n_observations, int n_variables, float x[],
IMSLS_X_COL_DIM, int x_col_dim,
IMSLS_Q_STATISTIC, float *q,
0)
Optional Arguments
IMSLS_X_COL_DIM, int x_col_dim (Input)
Number of columns in x.
Default: x_col_dim = n_variables
IMSLS_Q_STATISTIC, float *q (Output)
Cochran’s Q statistic.
Description
Function imsls_f_cochran_q_test computes the Cochran Q test statistic that may be used to determine whether or not M matched sets of responses differ significantly among themselves. The data may be thought of as arising out of a randomized block design in which the outcome variable must be success or failure, coded as 1.0 and 0.0, respectively. Within each block, a multivariate vector of 1’s or 0’s is observed. The hypothesis is that the probability of success within a block does not depend upon the treatment.
Assumptions
1. | The blocks are a random sample from the population of all possible blocks. |
2. | The outcome of each treatment is dichotomous. |
Hypothesis
The hypothesis being tested may be stated in at least two ways.
1. | H0 : All treatments have the same effect. H1 : The treatments do not all have the same effect. |
2. | Let pij denote the probability of outcome 1.0 in block i, treatment j. H0:pi1 = pi2 = … = pic for each i. H1:pij ≠ pik for some i, and some j ≠ k. where c (equal to n_variables) is the number of treatments. |
The null hypothesis is rejected if Cochrans’s Q statistic is too large.
Remarks
1. | The input data must consist of zeros and ones only. For example, the data may be pass-fail information on n_variables questions asked of n_observations people or the test responses of n_observations individuals to n_variables different conditions. |
2. | The resulting statistic is distributed approximately as chi-squared with n_variables − 1 degrees of freedom if n_observations is not too small. n_observations greater than or equal to 5 × n_variables is a conservative recommendation. |
Example
The following example is taken from Siegal (1956, p. 164). It measures the responses of 18 women to 3 types of interviews.
#include <imsls.h>
#include <stdio.h>
int main()
{
float pq;
float x[54] = {
0.0, 0.0, 0.0,
1.0, 1.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 0.0,
1.0, 0.0, 0.0,
1.0, 1.0, 0.0,
1.0, 1.0, 0.0,
0.0, 1.0, 0.0,
1.0, 0.0, 0.0,
0.0, 0.0, 0.0,
1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
1.0, 1.0, 0.0,
1.0, 1.0, 0.0,
1.0, 1.0, 0.0,
1.0, 1.0, 1.0,
1.0, 1.0, 0.0,
1.0, 1.0, 0.0};
pq = imsls_f_cochran_q_test(18, 3, x,
0);
printf("pq = %9.5f\n", pq);
}
Output
pq = 0.00024
Warning Errors
IMSLS_ALL_0_OR_1 |
“x” consists of either all ones or all zeros. “q” is set to NaN (not a number). “pq” is set to 1.0. |
Fatal Errors
IMSLS_INVALID_X_VALUES |
“x[#][#]” = #. “x” must consist of zeros and ones only. |