ウィルコクソン検定

C言語によるサンプルソースコード : 使用関数名:nag_wilcoxon_test (g08agc)

ホーム > 製品 > nAG数値計算ライブラリ > サンプルソースコード集 > ウィルコクソン検定 (C言語/C++)

Keyword: ウィルコクソン, Wilcoxon Test, 検定

概要

本サンプルはウィルコクソン符号順位検定(Wilcoxon Signed Rank Test) を行うC言語によるサンプルプログラムです。 本サンプルは以下に示される1対の標本を分析対象とし、検定統計量と自由度、両側確率を出力します。

ウィルコクソン検定のデータ 

※本サンプルはnAG Cライブラリに含まれる関数 nag_wilcoxon_test() のExampleコードです。本サンプル及び関数の詳細情報は nag_wilcoxon_test のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本関数の詳細はnag_wilcoxon_test のマニュアルページを参照)
1
2
3
4

このデータをダウンロード
nag_wilcoxon_test (g08agc) Example Program Data
 8
 82 69 73 43 58 56 76 65
 63 42 74 37 51 43 80 62

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目に対となっている標本のそれぞれのデータの個数(n)を指定しています。
  • 3~4行目に標本のデータ(x,y)を指定しています。

出力結果

(本関数の詳細はnag_wilcoxon_test のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10
11
12
13

この出力例をダウンロード
nag_wilcoxon_test (g08agc) Example Program Results

Wilcoxon one sample signed ranks test

Data values
 82.0 69.0 73.0 43.0 58.0 56.0 76.0 65.0
 63.0 42.0 74.0 37.0 51.0 43.0 80.0 62.0


Test statistic            =  32.0000
Normalized test statistic =   1.8904
Degrees of freedom        =        8
Two tail probability      =   0.0547

  • 6~7行目には読み込まれた1対の標本のデータが出力されています。
  • 10行目には検定統計量が出力されています。
  • 11行目には正規検定統計量が出力されています。
  • 12行目には自由度が出力されています。
  • 13行目には両側確率(two tail probability)が出力されています。

ソースコード

(本関数の詳細はnag_wilcoxon_test のマニュアルページを参照)

※本サンプルソースコードはnAG数値計算ライブラリ(Windows, Linux, MAC等に対応)の関数を呼び出します。
サンプルのコンパイル及び実行方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

このソースコードをダウンロード
/* nag_wilcoxon_test (g08agc) Example Program.
 *
 * CLL6I261D/CLL6I261DL Version.
 *
 * Copyright 2017 Numerical Algorithms Group.
 *
 * Mark 26.1, 2017.
 */

#include <stdio.h>
#include <nag.h>
#include <nag_stdlib.h>
#include <nagg08.h>

int main(void)
{
  Integer exit_status = 0, i, n, non_zero;
  NagError fail;
  double *data = 0, median, p, w, *x = 0, *y = 0, z;

  INIT_FAIL(fail);

  printf("nag_wilcoxon_test (g08agc) Example Program Results");

  /* Skip heading in data file */
  scanf("%*[^\n]");

  scanf("%ld", &n);
  if (!(x = nAG_ALLOC(n, double))
      || !(y = nAG_ALLOC(n, double))
      || !(data = nAG_ALLOC(n, double)))
  {
    printf("Allocation failure\n");
    exit_status = -1;
    goto END;
  }

  for (i = 1; i <= n; ++i)
    scanf("%lf", &x[i - 1]);

  for (i = 1; i <= n; ++i)
    scanf("%lf", &y[i - 1]);

  printf("\n\n");
  printf("%s\n", "Wilcoxon one sample signed ranks test");
  printf("\n");
  printf("%s", "Data values\n");
  for (i = 1; i <= n; ++i)
    printf("%5.1f%s", x[i - 1], i % 8 ? "" : "\n");
  for (i = 1; i <= n; ++i)
    printf("%5.1f%s", y[i - 1], i % 8 ? "" : "\n");

  for (i = 1; i <= n; ++i)
    data[i - 1] = x[i - 1] - y[i - 1];
  median = 0.0;
  /* nag_wilcoxon_test (g08agc).
   * Performs the Wilcoxon one-sample (matched pairs) signed
   * rank test
   */
  nag_wilcoxon_test(n, data, median, Nag_TwoTail, Nag_IncSignZerosN, &w, &z,
                    &p, &non_zero, &fail);
  if (fail.code != NE_NOERROR) {
    printf("Error from nag_wilcoxon_test (g08agc).\n%s\n", fail.message);
    exit_status = 1;
    goto END;
  }

  printf("\n\n");
  printf("%s%8.4f\n", "Test statistic            = ", w);
  printf("%s%8.4f\n", "Normalized test statistic = ", z);
  printf("%s%8ld\n", "Degrees of freedom        = ", non_zero);
  printf("%s%8.4f\n", "Two tail probability      = ", p);

END:
  nAG_FREE(x);
  nAG_FREE(y);
  nAG_FREE(data);
  return exit_status;
}


関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks