num4tststatistic 0.0.3-java → 0.1.1-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8c015fe7102176f7c7c2314cc1dfb6622c07bc8fe1e5b36c3417c0c1df3e255a
4
- data.tar.gz: f348504d4e1245853d4cc93a19e4dbe16fa1c4ac9ef6be75f53d8f4b7d1df767
3
+ metadata.gz: 8035ed8852a010c953dc1f89787acb056eb516252687ed2a52ff558fb588ebf6
4
+ data.tar.gz: 61ed13288b017bf0845b3cc3bf6807694eb655666a71126a4b31c9b67fe61aa4
5
5
  SHA512:
6
- metadata.gz: a93a631e82744d7d8130e32951caf07a82d6b0530d74f2fb54fda082dfb8269f8ccdcad69a99e3a9b81e14399077b10ec42b8b6f6b2e535704da87bf993c4a5b
7
- data.tar.gz: 19cc9ecf0e5bcc36ec32bfed81ffa8b3301588617267edac4e1be18c5e4ddae8f8f8d693a7b67503c9c8c79c227c7104f324ef56a45486ee6d1fc7f812084a57
6
+ metadata.gz: 6031d267ff6f19ad8c12bc397cde2a6ae8aa95b0280564039c7f5a0c5cc8485455663bb7fd168d9358d8a180c17776440e620190c80af322ff8c21e863f622bc
7
+ data.tar.gz: f2214a6320e064958b12e7afd72162edad09a8f355690215028126bd9f230ed52dff4e048ca064393b115375c9499cbb7af59ed788dce0b33fbd41c82070eca5
data/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.1.1] - 2023-12-27
6
+
7
+ ### add
8
+ - add function of utest.
9
+ - add function of spearmanscorr.
10
+ - add function of kendallscorr.
11
+ - add function of ks2test.
12
+
13
+ ### change
14
+ - chg function name from unCorrelation to pearsoCorrelation.
15
+
16
+ ### delete
17
+ - del function of populationCorre.
18
+
19
+ ## [0.0.4] - 2023-12-18
20
+
21
+ ### add
22
+ - add function of wilcoxon.
23
+
5
24
  ## [0.0.3] - 2023-11-16
6
25
 
7
26
  ### add
@@ -0,0 +1,55 @@
1
+ import java.util.Arrays;
2
+
3
+ import org.apache.commons.math3.stat.inference.WilcoxonSignedRankTest;
4
+ import org.apache.commons.math3.stat.inference.MannWhitneyUTest;
5
+ import org.apache.commons.math3.stat.correlation.SpearmansCorrelation;
6
+ import org.apache.commons.math3.stat.correlation.KendallsCorrelation;
7
+
8
+ import org.apache.commons.math3.stat.inference.TestUtils;
9
+ public class NonParametrixTest {
10
+ private static NonParametrixTest nonParamTest = new NonParametrixTest();
11
+ public static NonParametrixTest getInstance() {
12
+ return nonParamTest;
13
+ }
14
+
15
+ // ウィルコクス符号付き順位検定
16
+ public double wilcoxon(double[] x, double[] y) {
17
+ int n = x.length;
18
+ WilcoxonSignedRankTest wilcox = new WilcoxonSignedRankTest();
19
+ double w = wilcox.wilcoxonSignedRank(x, y);
20
+ double e_w = n * (n + 1.0) / 4.0;
21
+ double var_w = n * (n + 1.0) * (2.0 * n + 1.0) / 24.0;
22
+
23
+ return (w - e_w) / Math.sqrt(var_w);
24
+ }
25
+ // マン・ホイットニーのU検定
26
+ public double utest(double[] x, double[] y) {
27
+ int n1 = x.length;
28
+ int n2 = y.length;
29
+ MannWhitneyUTest utest = new MannWhitneyUTest();
30
+ double u = utest.mannWhitneyU(x, y);
31
+ double e_u = n1 * n2 / 2.0;
32
+ double var_u = (n1 * n2 * (n1 + n2 + 1.0)) / 12.0;
33
+
34
+ return (u - e_u) / Math.sqrt(var_u);
35
+ }
36
+ // スピアマンの順位相関係数
37
+ public double spearmanscorr(double[] x, double[] y) {
38
+ SpearmansCorrelation speamans = new SpearmansCorrelation();
39
+
40
+ return speamans.correlation(x, y);
41
+ }
42
+ // ケンドールの順位相関係数
43
+ public double kendallscorr(double[] x, double[] y) {
44
+ KendallsCorrelation kendalls = new KendallsCorrelation();
45
+
46
+ return kendalls.correlation(x, y);
47
+ }
48
+ // コルモゴルフ・スミルノフ検定(2標本)
49
+ public boolean ks2test(double[] xi1, double[] xi2, double a) {
50
+ double p = TestUtils.kolmogorovSmirnovTest(xi1, xi2);
51
+
52
+ return (p < a) ? true : false;
53
+ }
54
+ }
55
+
@@ -0,0 +1,193 @@
1
+ import java.util.Arrays;
2
+ import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
3
+ import org.apache.commons.math3.stat.correlation.PearsonsCorrelation;
4
+ public class ParametrixTest {
5
+ private static ParametrixTest paramTest = new ParametrixTest();
6
+
7
+ public static ParametrixTest getInstance() {
8
+ return paramTest;
9
+ }
10
+ // 正規母集団の母平均の検定量
11
+ public double populationMean(double[] xi, double m0) {
12
+ int n = xi.length;
13
+ SummaryStatistics stat = new SummaryStatistics();
14
+
15
+ Arrays.stream(xi).forEach(stat::addValue);
16
+ double m = stat.getMean(); // 平均
17
+ double s2 = stat.getVariance();// 分散
18
+ return (m - m0) / Math.sqrt(s2 / n);
19
+ }
20
+ // 正規母集団の母分散の検定量
21
+ public double populationVar(double[] xi, double sig0) {
22
+ int n = xi.length;
23
+ SummaryStatistics stat = new SummaryStatistics();
24
+ Arrays.stream(xi).forEach(stat::addValue);
25
+ double s2 = stat.getVariance();// 分散
26
+
27
+ return (n - 1) * s2 / sig0;
28
+ }
29
+ // 母比率の検定量
30
+ public double populationRatio(int m, int n, double p0) {
31
+ double p = (double)m / (double)n;
32
+ return (p - p0) / Math.sqrt(p0 * (1-p0) / n);
33
+ }
34
+ // 2つの母平均の差の検定量
35
+ // (等分散性を仮定)
36
+ public double diffPopulationMean2EquVar(double[] xi1, double[] xi2) {
37
+ int n1 = xi1.length;
38
+ int n2 = xi2.length;
39
+ SummaryStatistics stat1 = new SummaryStatistics();
40
+ SummaryStatistics stat2 = new SummaryStatistics();
41
+ Arrays.stream(xi1).forEach(stat1::addValue);
42
+ Arrays.stream(xi2).forEach(stat2::addValue);
43
+
44
+ double m1 = stat1.getMean();
45
+ double m2 = stat2.getMean();
46
+ double s12 = stat1.getVariance();// 分散
47
+ double s22 = stat2.getVariance();// 分散
48
+ double s2 = ((n1 - 1) * s12 + (n2 - 1) * s22) / (n1 + n2 - 2);
49
+
50
+ return (m1 - m2) / Math.sqrt((1.0 / n1 + 1.0 / n2) * s2);
51
+ }
52
+ // 2つの母平均の差の検定量
53
+ // (不等分散性を仮定)
54
+ public double diffPopulationMean2UnEquVar(double[] xi1, double[] xi2) {
55
+ int n1 = xi1.length;
56
+ int n2 = xi2.length;
57
+ SummaryStatistics stat1 = new SummaryStatistics();
58
+ SummaryStatistics stat2 = new SummaryStatistics();
59
+ Arrays.stream(xi1).forEach(stat1::addValue);
60
+ Arrays.stream(xi2).forEach(stat2::addValue);
61
+
62
+ double m1 = stat1.getMean();
63
+ double m2 = stat2.getMean();
64
+ double s12 = stat1.getVariance();// 分散
65
+ double s22 = stat2.getVariance();// 分散
66
+
67
+ return (m1 - m2) / Math.sqrt(s12 / n1 + s22 / n2);
68
+ }
69
+ // ウェルチ検定の為の自由度
70
+ public int df4welch(double[] xi1, double[] xi2) {
71
+ int n1 = xi1.length;
72
+ int n2 = xi2.length;
73
+ SummaryStatistics stat1 = new SummaryStatistics();
74
+ SummaryStatistics stat2 = new SummaryStatistics();
75
+ Arrays.stream(xi1).forEach(stat1::addValue);
76
+ Arrays.stream(xi2).forEach(stat2::addValue);
77
+
78
+ double s12 = stat1.getVariance();// 分散
79
+ double s22 = stat2.getVariance();// 分散
80
+ double s14 = s12 * s12;
81
+ double s24 = s22 * s22;
82
+ int n12 = n1 * n1;
83
+ int n22 = n2 * n2;
84
+ double ns = (s12 / n1) + (s22 / n2);
85
+
86
+ return (int)
87
+ (
88
+ (ns * ns) /
89
+ (
90
+ s14 / (n12 * (n1 - 1)) + s24 / (n22 * (n2 - 1))
91
+ )
92
+ );
93
+ }
94
+ // 対応のある2つの母平均の差の検定量
95
+ public double diffPopulationMean(double[] xi1, double[] xi2) {
96
+ int n = xi1.length;
97
+ SummaryStatistics stat = new SummaryStatistics();
98
+
99
+ for(int i = 0; i < n; i++) {
100
+ stat.addValue(xi1[i] - xi2[i]);
101
+ }
102
+ double m = stat.getMean();
103
+ double s2 = stat.getVariance();// 分散
104
+
105
+ return (m - 0) / Math.sqrt(s2/n);
106
+ }
107
+ // 2つの母分散の差の検定量
108
+ public double diffPopulationVar(double[] xi1, double[] xi2) {
109
+ SummaryStatistics stat1 = new SummaryStatistics();
110
+ SummaryStatistics stat2 = new SummaryStatistics();
111
+ Arrays.stream(xi1).forEach(stat1::addValue);
112
+ Arrays.stream(xi2).forEach(stat2::addValue);
113
+
114
+ double s12 = stat1.getVariance();// 分散
115
+ double s22 = stat2.getVariance();// 分散
116
+ return s12 / s22;
117
+ }
118
+ // 2つの母比率の差の検定量
119
+ public double diffPopulationRatio(int m1, int n1, int m2, int n2) {
120
+ double p1 = (double)m1 / (double)n1;
121
+ double p2 = (double)m2 / (double)n2;
122
+ double p = (double)(m1 + m2) / (double)(n1 + n2);
123
+
124
+ return (p1 - p2) / Math.sqrt(p * (1 - p) * (1.0 / n1 + 1.0 / n2));
125
+ }
126
+ // ピアソン相関係数
127
+ public double pearsoCorrelation(double[] x, double[] y) {
128
+ PearsonsCorrelation corel = new PearsonsCorrelation();
129
+
130
+ return corel.correlation(x, y);
131
+ }
132
+ // 適合度の検定量
133
+ public double fidelity(double[] fi, double[] pi) {
134
+ double[] e = new double[fi.length];
135
+ double t = 0.0;
136
+ SummaryStatistics stat = new SummaryStatistics();
137
+
138
+ Arrays.stream(fi).forEach(stat::addValue);
139
+ double s = stat.getSum();
140
+
141
+ for (int i = 0; i < fi.length; i++) {
142
+ e[i] = s * pi[i];
143
+ double f_e = fi[i] - e[i];
144
+ t += f_e * f_e / e[i];
145
+ }
146
+ return t;
147
+ }
148
+ // 独立性の検定量
149
+ public double independency(double[][] fij) {
150
+ Independency indep = new Independency(fij);
151
+
152
+ indep.calsCells();
153
+ double t = indep.calcStatistic();
154
+
155
+ return t;
156
+ }
157
+ private class Independency {
158
+ private double[] fa = null;
159
+ private double[] fb = null;
160
+ private double[][] fij = null;
161
+ private long n = 0;
162
+ public Independency(double[][] fij) {
163
+ fa = new double[fij.length];
164
+ fb = new double[fij[0].length];
165
+ this.fij = fij;
166
+ }
167
+ // 各セルの計算
168
+ public void calsCells() {
169
+ for (int i = 0; i < fij.length; i++) {
170
+ fa[i] = 0.0;
171
+ for (int j = 0; j < fij[i].length; j++) {
172
+ fa[i] += fij[i][j];
173
+ fb[j] += fij[i][j];
174
+ n += fij[i][j];
175
+ }
176
+ }
177
+ }
178
+ // 検定統計量計算
179
+ public double calcStatistic() {
180
+ double t = 0.0;
181
+
182
+ for (int i = 0; i < fij.length; i++) {
183
+ for (int j = 0; j < fij[i].length; j++) {
184
+ double f_e = n * fij[i][j] - fa[i] * fb[j];
185
+
186
+ t += f_e * f_e / (n * fa[i] * fb[j]);
187
+ }
188
+ }
189
+ return t;
190
+ }
191
+ }
192
+ }
193
+
@@ -1,177 +1,7 @@
1
1
  import java.util.Arrays;
2
2
 
3
3
  import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
4
- import org.apache.commons.math3.stat.correlation.PearsonsCorrelation;
5
-
6
4
  public class TstStatistic {
7
- public static double populationMean(double[] xi, double m0) {
8
- int n = xi.length;
9
- SummaryStatistics stat = new SummaryStatistics();
10
-
11
- Arrays.stream(xi).forEach(stat::addValue);
12
- double m = stat.getMean(); // 平均
13
- double s2 = stat.getVariance();// 分散
14
- return (m - m0) / Math.sqrt(s2 / n);
15
- }
16
- public static double populationVar(double[] xi, double sig0) {
17
- int n = xi.length;
18
- SummaryStatistics stat = new SummaryStatistics();
19
- Arrays.stream(xi).forEach(stat::addValue);
20
- double s2 = stat.getVariance();// 分散
21
-
22
- return (n - 1) * s2 / sig0;
23
- }
24
- public static double populationRatio(int m, int n, double p0) {
25
- double p = (double)m / (double)n;
26
-
27
- return (p - p0) / Math.sqrt(p0 * (1-p0) / n);
28
- }
29
- public static double diffPopulationMean2EquVar(double[] xi1, double[] xi2) {
30
- int n1 = xi1.length;
31
- int n2 = xi2.length;
32
- SummaryStatistics stat1 = new SummaryStatistics();
33
- SummaryStatistics stat2 = new SummaryStatistics();
34
- Arrays.stream(xi1).forEach(stat1::addValue);
35
- Arrays.stream(xi2).forEach(stat2::addValue);
36
-
37
- double m1 = stat1.getMean();
38
- double m2 = stat2.getMean();
39
- double s12 = stat1.getVariance();// 分散
40
- double s22 = stat2.getVariance();// 分散
41
- double s2 = ((n1 - 1) * s12 + (n2 - 1) * s22) / (n1 + n2 - 2);
42
-
43
- return (m1 - m2) / Math.sqrt((1.0 / n1 + 1.0 / n2) * s2);
44
- }
45
- public static double diffPopulationMean2UnEquVar(double[] xi1, double[] xi2) {
46
- int n1 = xi1.length;
47
- int n2 = xi2.length;
48
- SummaryStatistics stat1 = new SummaryStatistics();
49
- SummaryStatistics stat2 = new SummaryStatistics();
50
- Arrays.stream(xi1).forEach(stat1::addValue);
51
- Arrays.stream(xi2).forEach(stat2::addValue);
52
-
53
- double m1 = stat1.getMean();
54
- double m2 = stat2.getMean();
55
- double s12 = stat1.getVariance();// 分散
56
- double s22 = stat2.getVariance();// 分散
57
-
58
- return (m1 - m2) / Math.sqrt(s12 / n1 + s22 / n2);
59
- }
60
- public static int df4welch(double[] xi1, double[] xi2) {
61
- int n1 = xi1.length;
62
- int n2 = xi2.length;
63
- SummaryStatistics stat1 = new SummaryStatistics();
64
- SummaryStatistics stat2 = new SummaryStatistics();
65
- Arrays.stream(xi1).forEach(stat1::addValue);
66
- Arrays.stream(xi2).forEach(stat2::addValue);
67
-
68
- double s12 = stat1.getVariance();// 分散
69
- double s22 = stat2.getVariance();// 分散
70
- double s14 = s12 * s12;
71
- double s24 = s22 * s22;
72
- int n12 = n1 * n1;
73
- int n22 = n2 * n2;
74
- double ns = (s12 / n1) + (s22 / n2);
75
-
76
- return (int)
77
- (
78
- (ns * ns) /
79
- (
80
- s14 / (n12 * (n1 - 1)) + s24 / (n22 * (n2 - 1))
81
- )
82
- );
83
- }
84
- public static double diffPopulationMean(double[] xi1, double[] xi2) {
85
- int n = xi1.length;
86
- SummaryStatistics stat = new SummaryStatistics();
87
-
88
- for(int i = 0; i < n; i++) {
89
- stat.addValue(xi1[i] - xi2[i]);
90
- }
91
- double m = stat.getMean();
92
- double s2 = stat.getVariance();// 分散
93
-
94
- return (m - 0) / Math.sqrt(s2/n);
95
- }
96
- public static double diffPopulationVar(double[] xi1, double[] xi2) {
97
- SummaryStatistics stat1 = new SummaryStatistics();
98
- SummaryStatistics stat2 = new SummaryStatistics();
99
- Arrays.stream(xi1).forEach(stat1::addValue);
100
- Arrays.stream(xi2).forEach(stat2::addValue);
101
-
102
- double s12 = stat1.getVariance();// 分散
103
- double s22 = stat2.getVariance();// 分散
104
- return s12 / s22;
105
- }
106
- public static double diffPopulationRatio(int m1, int n1, int m2, int n2) {
107
- double p1 = (double)m1 / (double)n1;
108
- double p2 = (double)m2 / (double)n2;
109
- double p = (double)(m1 + m2) / (double)(n1 + n2);
110
-
111
- return (p1 - p2) / Math.sqrt(p * (1 - p) * (1.0 / n1 + 1.0 / n2));
112
- }
113
- public static double unCorrelation(double[] x, double[] y) {
114
- int n = x.length;
115
- PearsonsCorrelation corel = new PearsonsCorrelation();
116
-
117
- double r = corel.correlation(x, y);
118
-
119
- return r * Math.sqrt(n - 2.0) / Math.sqrt(1.0 - r * r);
120
- }
121
- public static double populationCorre(double[] x, double[] y, double rth0) {
122
- int n = x.length;
123
- PearsonsCorrelation corel = new PearsonsCorrelation();
124
-
125
- double r = corel.correlation(x, y);
126
-
127
- return Math.sqrt(n-3.0) *
128
- (
129
- 0.5 * Math.log((1.0 + r) / (1.0 - r))
130
- - 0.5 * Math.log((1.0 + rth0) / (1.0 - rth0))
131
- );
132
- }
133
- public static double fidelity(double[] fi, double[] pi) {
134
- double[] e = new double[fi.length];
135
- double t = 0.0;
136
- SummaryStatistics stat = new SummaryStatistics();
137
-
138
- Arrays.stream(fi).forEach(stat::addValue);
139
- double s = stat.getSum();
140
-
141
- for (int i = 0; i < fi.length; i++) {
142
- e[i] = s * pi[i];
143
- double f_e = fi[i] - e[i];
144
- t += f_e * f_e / e[i];
145
- }
146
- return t;
147
- }
148
- public static double independency(double[][] fij) {
149
- double t = 0.0;
150
- long n = 0;
151
- double[] fa = new double[fij.length];
152
- double[] fb = new double[fij[0].length];
153
-
154
- // 各セルの計算
155
- for (int i = 0; i < fij.length; i++) {
156
- fa[i] = 0.0;
157
- for (int j = 0; j < fij[i].length; j++) {
158
- fa[i] += fij[i][j];
159
- fb[j] += fij[i][j];
160
- n += fij[i][j];
161
- }
162
- }
163
-
164
- // 検定統計量計算
165
- for (int i = 0; i < fij.length; i++) {
166
- for (int j = 0; j < fij[i].length; j++) {
167
- double f_e = n * fij[i][j] - fa[i] * fb[j];
168
-
169
- t += f_e * f_e / (n * fa[i] * fb[j]);
170
- }
171
- }
172
-
173
- return t;
174
- }
175
5
  public static double grubbs(double[] xi, double xk) {
176
6
  SummaryStatistics stat = new SummaryStatistics();
177
7
 
@@ -3,11 +3,16 @@ require 'num4tststatistic.jar'
3
3
  require 'commons-math3-3.6.1.jar'
4
4
 
5
5
  java_import 'TstStatistic'
6
+ java_import 'ParametrixTest'
7
+ java_import 'NonParametrixTest'
6
8
 
7
9
  # 検定統計量を計算
8
10
  # (Apache commoms math3使用)
9
11
  module Num4TstStatisticLib
10
- class << self
12
+ class ParametrixTestLib
13
+ def initialize
14
+ @paramTest = ParametrixTest.getInstance()
15
+ end
11
16
  # 正規母集団の母平均の検定量
12
17
  #
13
18
  # @overload populationMean(xi, m0)
@@ -16,12 +21,13 @@ module Num4TstStatisticLib
16
21
  # @return [double] 検定統計量
17
22
  # @example
18
23
  # xi = [15.5, 15.7, 15.4, 15.4, 15.6, 15.4, 15.6, 15.5, 15.4]
19
- # Num4TstStatisticLib.populationMean(xi, 15.4)
24
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
25
+ # paraTest.populationMean(xi, 15.4)
20
26
  # => 2.683
21
27
  # @note
22
28
  # 自由度(N-1)のt分布に従う
23
29
  def populationMean(xi, m0)
24
- return TstStatistic.populationMean(xi.to_java(Java::double), m0)
30
+ return @paramTest.populationMean(xi.to_java(Java::double), m0)
25
31
  end
26
32
  # 正規母集団の母分散の検定量
27
33
  #
@@ -32,26 +38,29 @@ module Num4TstStatisticLib
32
38
  # @example
33
39
  # xi = xi = [35.2, 34.5, 34.9, 35.2, 34.8, 35.1, 34.9, 35.2, 34.9, 34.8]
34
40
  # sd = 0.4
35
- # Num4TstStatisticLib.populationVar(xi, sd*sd)
41
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
42
+ # paraTest.populationVar(xi, sd*sd)
36
43
  # => 2.906
37
44
  # @note
38
45
  # 自由度(N-1)の階2乗分布に従う
39
46
  def populationVar(xi, sig0)
40
- return TstStatistic.populationVar(xi.to_java(Java::double), sig0)
47
+ return @paramTest.populationVar(xi.to_java(Java::double), sig0)
41
48
  end
42
49
  # 母比率の検定量
50
+ #
43
51
  # @overload populationRatio(m, n, p0)
44
52
  # @param [int] m m値
45
53
  # @param [int] n N値
46
54
  # @param [double] p0 母比率
47
55
  # @return [double] 検定統計量
48
56
  # @example
49
- # Num4TstStatisticLib.populationRatio(29, 346, 0.12)
57
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
58
+ # paraTest.populationRatio(29, 346, 0.12)
50
59
  # => -2.071
51
60
  # @note
52
61
  # 標準正規分布 N(0,1*1)に従う
53
62
  def populationRatio(m, n, p0)
54
- return TstStatistic.populationRatio(m, n, p0)
63
+ return @paramTest.populationRatio(m, n, p0)
55
64
  end
56
65
  # 2つの母平均の差の検定量
57
66
  # (等分散性を仮定)
@@ -63,12 +72,13 @@ module Num4TstStatisticLib
63
72
  # @example
64
73
  # xi1 = [165, 130, 182, 178, 194, 206, 160, 122, 212, 165, 247, 195]
65
74
  # xi2 = [180, 180, 235, 270, 240, 285, 164, 152]
66
- # Num4TstStatisticLib.diffPopulationMean2EquVar(xi1, xi2)
75
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
76
+ # paraTest.diffPopulationMean2EquVar(xi1, xi2)
67
77
  # => -1.765
68
78
  # @note
69
79
  # N1+N2-2のt分布に従う
70
80
  def diffPopulationMean2EquVar(xi1, xi2)
71
- return TstStatistic.diffPopulationMean2EquVar(
81
+ return @paramTest.diffPopulationMean2EquVar(
72
82
  xi1.to_java(Java::double), xi2.to_java(Java::double)
73
83
  )
74
84
  end
@@ -82,16 +92,18 @@ module Num4TstStatisticLib
82
92
  # @example
83
93
  # xi1 = [165, 130, 182, 178, 194, 206, 160, 122, 212, 165, 247, 195]
84
94
  # xi2 = [180, 180, 235, 270, 240, 285, 164, 152]
85
- # Num4TstStatisticLib.diffPopulationMean2UnEquVar(xi1, xi2)
95
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
96
+ # paraTest.diffPopulationMean2UnEquVar(xi1, xi2)
86
97
  # => -1.636
87
98
  # @note
88
99
  # df4welch関数で求めた自由度のt分布に従う
89
100
  def diffPopulationMean2UnEquVar(xi1, xi2)
90
- return TstStatistic.diffPopulationMean2UnEquVar(
101
+ return @paramTest.diffPopulationMean2UnEquVar(
91
102
  xi1.to_java(Java::double), xi2.to_java(Java::double)
92
103
  )
93
104
  end
94
105
  # ウェルチ検定の為の自由度
106
+ #
95
107
  # @overload df4welch(xi1, xi2)
96
108
  # @param [Array] xi1 x1のデータ(double[])
97
109
  # @param [Array] xi2 x2のデータ(double[])
@@ -99,10 +111,11 @@ module Num4TstStatisticLib
99
111
  # @example
100
112
  # xi1 = [165, 130, 182, 178, 194, 206, 160, 122, 212, 165, 247, 195]
101
113
  # xi2 = [180, 180, 235, 270, 240, 285, 164, 152]
102
- # Num4TstStatisticLib.df4welch(xi1, xi2)
114
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
115
+ # paraTest.df4welch(xi1, xi2)
103
116
  # => 11
104
117
  def df4welch(xi1, xi2)
105
- return TstStatistic.df4welch(
118
+ return @paramTest.df4welch(
106
119
  xi1.to_java(Java::double), xi2.to_java(Java::double)
107
120
  )
108
121
  end
@@ -115,12 +128,13 @@ module Num4TstStatisticLib
115
128
  # @example
116
129
  # xi1 = [37.1, 36.2, 36.6, 37.4, 36.8, 36.7, 36.9, 37.4, 36.6, 36.7]
117
130
  # xi2 = [36.8, 36.6, 36.5, 37.0, 36.0, 36.5, 36.6, 37.1, 36.4, 36.7]
118
- # Num4TstStatisticLib.diffPopulationMean(xi1, xi2)
131
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
132
+ # paraTest.diffPopulationMean(xi1, xi2)
119
133
  # => 2.283
120
134
  # @note
121
135
  # 自由度(N-1)のt分布に従う
122
- def diffPopulationMean(xi1, xi2)
123
- return TstStatistic.diffPopulationMean(
136
+ def diffPopulationMean(xi1, xi2)
137
+ return @paramTest.diffPopulationMean(
124
138
  xi1.to_java(Java::double), xi2.to_java(Java::double)
125
139
  )
126
140
  end
@@ -133,12 +147,13 @@ module Num4TstStatisticLib
133
147
  # @example
134
148
  # xi1 = [165, 130, 182, 178, 194, 206, 160, 122, 212, 165, 247, 195]
135
149
  # xi2 = [180, 180, 235, 270, 240, 285, 164, 152]
136
- # Num4TstStatisticLib.diffPopulationVar(xi1, xi2)
150
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
151
+ # paraTest.diffPopulationVar(xi1, xi2)
137
152
  # => 0.4727
138
153
  # @note
139
154
  # 自由度(N1-1,N2-1)のF分布に従う
140
155
  def diffPopulationVar(xi1, xi2)
141
- return TstStatistic.diffPopulationVar(
156
+ return @paramTest.diffPopulationVar(
142
157
  xi1.to_java(Java::double), xi2.to_java(Java::double)
143
158
  )
144
159
  end
@@ -151,50 +166,32 @@ module Num4TstStatisticLib
151
166
  # @param [int] n2 N2値
152
167
  # @return [double] 検定統計量
153
168
  # @example
154
- # Num4TstStatisticLib.diffPopulationRatio(469, 1200, 308, 900)
169
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
170
+ # paraTest.diffPopulationRatio(469, 1200, 308, 900)
155
171
  # => 2.283
156
172
  # @note
157
173
  # 標準正規分布 N(0,1*1)に従う
158
174
  def diffPopulationRatio(m1, n1, m2, n2)
159
- return TstStatistic.diffPopulationRatio(m1, n1, m2, n2)
175
+ return @paramTest.diffPopulationRatio(m1, n1, m2, n2)
160
176
  end
161
- # 無相関の検定量
177
+ # ピアソン相関係数
178
+ # (相関係数の検定)
162
179
  #
163
- # @overload unCorrelation(x, y)
180
+ # @overload pearsoCorrelation(x, y)
164
181
  # @param [Array] x xのデータ(double[])
165
182
  # @param [Array] y yのデータ(double[])
166
- # @return [double] 検定統計量
183
+ # @return [double] 相関係数
167
184
  # @example
168
185
  # x = [113, 64, 16, 45, 28, 19, 30, 82, 76]
169
186
  # y = [31, 5, 2, 17, 18, 2, 9, 25, 13]
170
- # Num4TstStatisticLib.unCorrelation(x, y)
187
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
188
+ # paraTest.pearsoCorrelation(x, y)
171
189
  # => 3.1035
172
- # @note
173
- # 自由度(N-2)t分布に従う
174
- def unCorrelation(x, y)
175
- return TstStatistic.unCorrelation(
190
+ def pearsoCorrelation(x, y)
191
+ return @paramTest.pearsoCorrelation(
176
192
  x.to_java(Java::double), y.to_java(Java::double)
177
193
  )
178
194
  end
179
- # 母相関係数の検定量
180
- #
181
- # @overload populationCorre(x, y, rth0)
182
- # @param [Array] x xのデータ(double[])
183
- # @param [Array] y yのデータ(double[])
184
- # @param [double] rth0 母相関係数
185
- # @return [double] 検定統計量
186
- # @example
187
- # x = [2750, 2956, 2675, 3198, 1816, 2233, 2375, 2288, 1932, 2036, 2183, 2882]
188
- # y = [249, 713, 1136, 575, 5654, 2107, 915, 4193, 7225, 3730, 472, 291]
189
- # Num4TstStatisticLib.populationCorre(x, y, -0.3)
190
- # => -2.107168
191
- # @note
192
- # 標準正規分布 N(0,1*1)に従う
193
- def populationCorre(x, y, rth0)
194
- return TstStatistic.populationCorre(
195
- x.to_java(Java::double), y.to_java(Java::double), rth0
196
- )
197
- end
198
195
  # 適合度の検定量
199
196
  #
200
197
  # @overload fidelity(fi, pi)
@@ -204,12 +201,13 @@ module Num4TstStatisticLib
204
201
  # @example
205
202
  # fi = [57, 33, 46, 14]
206
203
  # pi = [0.4, 0.2, 0.3, 0.1]
207
- # Num4TstStatisticLib.fidelity(fi, pi)
204
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
205
+ # paraTest.fidelity(fi, pi)
208
206
  # => 0.5389
209
207
  # @note
210
208
  # 自由度(n-1)の階2乗分布に従う
211
209
  def fidelity(fi, pi)
212
- return TstStatistic.fidelity(fi.to_java(Java::double), pi.to_java(Java::double))
210
+ return @paramTest.fidelity(fi.to_java(Java::double), pi.to_java(Java::double))
213
211
  end
214
212
  # 独立性の検定量
215
213
  #
@@ -221,13 +219,107 @@ module Num4TstStatisticLib
221
219
  # [57, 33, 46, 14],
222
220
  # [89, 24, 75, 12],
223
221
  # ]
224
- # Num4TstStatisticLib.independency(fij)
222
+ # paraTest = Num4TstStatisticLib::ParametrixTestLib.new
223
+ # paraTest.independency(fij)
225
224
  # => 8.5711
226
225
  # @note
227
226
  # 自由度(m-1)(n-1)の階2乗分布に従う
228
227
  def independency(fij)
229
- return TstStatistic.independency(fij.to_java(Java::double[]))
228
+ return @paramTest.independency(fij.to_java(Java::double[]))
229
+ end
230
+ end
231
+ class NonParametrixTestLib
232
+ def initialize
233
+ @nonParamTest = NonParametrixTest.getInstance()
234
+ end
235
+ # マン・ホイットニーのU検定
236
+ #
237
+ # @overload utest(x, y)
238
+ # @param [Array] x xのデータ(double[])
239
+ # @param [Array] y yのデータ(double[])
240
+ # @return [double] 検定統計量
241
+ # @example
242
+ # x = [165, 130, 182, 178, 194, 206, 160, 122, 212, 165, 247, 195]
243
+ # y = [180, 180, 235, 270, 240, 285, 164, 152]
244
+ # nonParaTest = Num4TstStatisticLib::NonParametrixTestLib.new
245
+ # nonParaTest.utest(x, y)
246
+ # => 63.0
247
+ # @note
248
+ # 近似的に標準正規分布 N(0,1*1)に従う
249
+ def utest(x, y)
250
+ return @nonParamTest.utest(x.to_java(Java::double), y.to_java(Java::double))
251
+ end
252
+ # ウィルコクス符号付き順位検定
253
+ #
254
+ # @overload wilcoxontest(x, y)
255
+ # @param [Array] x xのデータ(double[])
256
+ # @param [Array] y yのデータ(double[])
257
+ # @return [double] 検定統計量
258
+ # @example
259
+ # x = [37.1, 36.2, 36.6, 37.4, 36.8, 36.7, 36.9, 37.4, 36.6, 36.7]
260
+ # y = [36.8, 36.6, 36.5, 37.0, 36.0, 36.5, 36.6, 37.1, 36.4, 36.7]
261
+ # nonParaTest = Num4TstStatisticLib::NonParametrixTestLib.new
262
+ # nonParaTest.wilcoxon(x, y)
263
+ # => 46.5
264
+ # @note
265
+ # 近似的に標準正規分布 N(0,1*1)に従う
266
+ def wilcoxon(x, y)
267
+ return @nonParamTest.wilcoxon(x.to_java(Java::double), y.to_java(Java::double))
230
268
  end
269
+ # スピアマンの順位相関係数
270
+ #
271
+ # @overload spearmanscorr(x, y)
272
+ # @param [Array] x xのデータ(double[])
273
+ # @param [Array] y yのデータ(double[])
274
+ # @return [double] 相関係数
275
+ # @example
276
+ # x = [113, 64, 16, 45, 28, 19, 30, 82, 76]
277
+ # y = [31, 5, 2, 17, 18, 2, 9, 25, 13]
278
+ # nonParaTest = Num4TstStatisticLib::NonParametrixTestLib.new
279
+ # nonParaTest.spearmanscorr(x, y)
280
+ # => 0.745
281
+ # @note
282
+ # 無相関検定
283
+ def spearmanscorr(x, y)
284
+ return @nonParamTest.spearmanscorr(x.to_java(Java::double), y.to_java(Java::double))
285
+ end
286
+ # ケンドールの順位相関係数
287
+ #
288
+ # @overload kendallscorr(x, y)
289
+ # @param [Array] x xのデータ(double[])
290
+ # @param [Array] y yのデータ(double[])
291
+ # @return [double] 相関係数
292
+ # @example
293
+ # x = [113, 64, 16, 45, 28, 19, 30, 82, 76]
294
+ # y = [31, 5, 2, 17, 18, 2, 9, 25, 13]
295
+ # nonParaTest = Num4TstStatisticLib::NonParametrixTestLib.new
296
+ # nonParaTest.kendallscorr(x, y)
297
+ # => 0.592
298
+ # @note
299
+ # 無相関検定
300
+ def kendallscorr(x, y)
301
+ return @nonParamTest.kendallscorr(x.to_java(Java::double), y.to_java(Java::double))
302
+ end
303
+ # コルモゴルフ・スミルノフ検定(2標本)
304
+ #
305
+ # @overload ks2test(xi1, xi2)
306
+ # @param [Array] xi1 x1のデータ(double[])
307
+ # @param [Array] xi2 x2のデータ(double[])
308
+ # @param [double] xi2 x2のデータ(double[])
309
+ # @return [boolean] 検定結果(true:棄却域内 false:棄却域外)
310
+ # @example
311
+ # xi1 = [165, 130, 182, 178, 194, 206, 160, 122, 212, 165, 247, 195]
312
+ # xi2 = [180, 180, 235, 270, 240, 285, 164, 152]
313
+ # nonParaTest = Num4TstStatisticLib::NonParametrixTestLib.new
314
+ # nonParaTest.ks2test(xi1, xi2, 0.05)
315
+ # => false
316
+ # @note
317
+ # N1+N2-2のt分布に従う
318
+ def ks2test(xi1, xi2, a)
319
+ return @nonParamTest.ks2test(xi1.to_java(Java::double), xi2.to_java(Java::double), a)
320
+ end
321
+ end
322
+ class << self
231
323
  # グラプス・スミルノフの外れ値の検定量
232
324
  #
233
325
  # @overload grubbs(xi, xk)
@@ -239,7 +331,7 @@ module Num4TstStatisticLib
239
331
  # Num4TstStatisticLib.grubbs(xi, 2.2)
240
332
  # => 2.3724
241
333
  # @note
242
- # グラプス・スミルノフの数表に従う
334
+ # 外れ値の検定に従う
243
335
  def grubbs(xi, xk)
244
336
  return TstStatistic.grubbs(xi.to_java(Java::double), xk)
245
337
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: num4tststatistic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.1
5
5
  platform: java
6
6
  authors:
7
7
  - siranovel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-16 00:00:00.000000000 Z
11
+ date: 2023-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -61,6 +61,8 @@ files:
61
61
  - Gemfile
62
62
  - LICENSE
63
63
  - Rakefile
64
+ - ext/num4tststatistic/NonParametrixTest.java
65
+ - ext/num4tststatistic/ParametrixTest.java
64
66
  - ext/num4tststatistic/TstStatistic.java
65
67
  - lib/commons-math3-3.6.1.jar
66
68
  - lib/num4tststatistic.rb