21
21
// MODULES //
22
22
23
23
var tape = require ( 'tape' ) ;
24
+ var Float64Results = require ( '@stdlib/stats/base/ztest/one-sample/results/float64' ) ;
25
+ var isnan = require ( '@stdlib/math/base/assert/is-nan' ) ;
26
+ var dfill = require ( '@stdlib/blas/ext/base/dfill' ) . ndarray ;
27
+ var normalFactory = require ( '@stdlib/random/array/normal' ) . factory ;
24
28
var dztest = require ( './../lib/dztest.js' ) ;
25
29
26
30
31
+ // VARIABLES //
32
+
33
+ var normal = normalFactory ( {
34
+ 'seed' : 12345
35
+ } ) ;
36
+
37
+
27
38
// TESTS //
28
39
29
40
tape ( 'main export is a function' , function test ( t ) {
@@ -32,4 +43,201 @@ tape( 'main export is a function', function test( t ) {
32
43
t . end ( ) ;
33
44
} ) ;
34
45
35
- // FIXME: add tests
46
+ tape ( 'the function performs a one-sample Z-test over a strided array (alternative=two-sided)' , function test ( t ) {
47
+ var results ;
48
+ var out ;
49
+ var x ;
50
+
51
+ results = new Float64Results ( ) ;
52
+
53
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
54
+ x = normal ( 10000 , 0.0 , 1.0 , {
55
+ 'dtype' : 'float64'
56
+ } ) ;
57
+
58
+ out = dztest ( x . length , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
59
+ t . strictEqual ( out , results , 'returns expected value' ) ;
60
+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
61
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
62
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
63
+
64
+ out = dztest ( x . length , 'two-sided' , 0.1 , 100.0 , 1.0 , x , 1 , results ) ;
65
+ t . strictEqual ( out , results , 'returns expected value' ) ;
66
+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
67
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
68
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
69
+
70
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
71
+ x = normal ( 10000 , 100.0 , 1.0 , {
72
+ 'dtype' : 'float64'
73
+ } ) ;
74
+
75
+ out = dztest ( x . length , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
76
+ t . strictEqual ( out , results , 'returns expected value' ) ;
77
+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
78
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
79
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
80
+
81
+ t . end ( ) ;
82
+ } ) ;
83
+
84
+ tape ( 'the function performs a one-sample Z-test over a strided array (alternative=greater)' , function test ( t ) {
85
+ var results ;
86
+ var out ;
87
+ var x ;
88
+
89
+ results = new Float64Results ( ) ;
90
+
91
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
92
+ x = normal ( 10000 , 0.0 , 1.0 , {
93
+ 'dtype' : 'float64'
94
+ } ) ;
95
+
96
+ out = dztest ( x . length , 'greater' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
97
+ t . strictEqual ( out , results , 'returns expected value' ) ;
98
+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
99
+ t . strictEqual ( out . alternative , 'greater' , 'returns expected value' ) ;
100
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
101
+
102
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
103
+ x = normal ( 10000 , 100.0 , 1.0 , {
104
+ 'dtype' : 'float64'
105
+ } ) ;
106
+
107
+ out = dztest ( x . length , 'greater' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
108
+ t . strictEqual ( out , results , 'returns expected value' ) ;
109
+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
110
+ t . strictEqual ( out . alternative , 'greater' , 'returns expected value' ) ;
111
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
112
+
113
+ t . end ( ) ;
114
+ } ) ;
115
+
116
+ tape ( 'the function performs a one-sample Z-test over a strided array (alternative=less)' , function test ( t ) {
117
+ var results ;
118
+ var out ;
119
+ var x ;
120
+
121
+ results = new Float64Results ( ) ;
122
+
123
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
124
+ x = normal ( 10000 , 0.0 , 1.0 , {
125
+ 'dtype' : 'float64'
126
+ } ) ;
127
+
128
+ out = dztest ( x . length , 'less' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
129
+ t . strictEqual ( out , results , 'returns expected value' ) ;
130
+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
131
+ t . strictEqual ( out . alternative , 'less' , 'returns expected value' ) ;
132
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
133
+
134
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
135
+ x = normal ( 10000 , - 100.0 , 1.0 , {
136
+ 'dtype' : 'float64'
137
+ } ) ;
138
+
139
+ out = dztest ( x . length , 'less' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
140
+ t . strictEqual ( out , results , 'returns expected value' ) ;
141
+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
142
+ t . strictEqual ( out . alternative , 'less' , 'returns expected value' ) ;
143
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
144
+
145
+ t . end ( ) ;
146
+ } ) ;
147
+
148
+ tape ( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN` results' , function test ( t ) {
149
+ var results ;
150
+ var out ;
151
+ var x ;
152
+
153
+ results = new Float64Results ( ) ;
154
+ x = normal ( 10 , 0.0 , 1.0 , {
155
+ 'dtype' : 'float64'
156
+ } ) ;
157
+
158
+ out = dztest ( 0 , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
159
+ t . strictEqual ( out , results , 'returns expected value' ) ;
160
+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
161
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
162
+ t . strictEqual ( isnan ( out . statistic ) , true , 'returns expected value' ) ;
163
+
164
+ out = dztest ( - 1 , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 1 , results ) ;
165
+ t . strictEqual ( out , results , 'returns expected value' ) ;
166
+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
167
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
168
+ t . strictEqual ( isnan ( out . statistic ) , true , 'returns expected value' ) ;
169
+
170
+ t . end ( ) ;
171
+ } ) ;
172
+
173
+ tape ( 'the function supports a stride parameter' , function test ( t ) {
174
+ var results ;
175
+ var out ;
176
+ var x ;
177
+ var N ;
178
+
179
+ N = 10000 ;
180
+ results = new Float64Results ( ) ;
181
+
182
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
183
+ x = normal ( N * 2 , 0.0 , 1.0 , {
184
+ 'dtype' : 'float64'
185
+ } ) ;
186
+ dfill ( N , NaN , x , 2 , 1 ) ;
187
+
188
+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 2 , results ) ;
189
+ t . strictEqual ( out , results , 'returns expected value' ) ;
190
+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
191
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
192
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
193
+
194
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
195
+ x = normal ( N * 2 , 100.0 , 1.0 , {
196
+ 'dtype' : 'float64'
197
+ } ) ;
198
+ dfill ( N , NaN , x , 2 , 1 ) ;
199
+
200
+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , 2 , results ) ;
201
+ t . strictEqual ( out , results , 'returns expected value' ) ;
202
+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
203
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
204
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
205
+
206
+ t . end ( ) ;
207
+ } ) ;
208
+
209
+ tape ( 'the function supports a negative stride parameter' , function test ( t ) {
210
+ var results ;
211
+ var out ;
212
+ var x ;
213
+ var N ;
214
+
215
+ N = 10000 ;
216
+ results = new Float64Results ( ) ;
217
+
218
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
219
+ x = normal ( N * 2 , 0.0 , 1.0 , {
220
+ 'dtype' : 'float64'
221
+ } ) ;
222
+ dfill ( N , NaN , x , 2 , 1 ) ;
223
+
224
+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , - 2 , results ) ;
225
+ t . strictEqual ( out , results , 'returns expected value' ) ;
226
+ t . strictEqual ( out . rejected , false , 'returns expected value' ) ;
227
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
228
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
229
+
230
+ // Generate an array with a sufficiently large sample size to effectively guarantee expected results:
231
+ x = normal ( N * 2 , 100.0 , 1.0 , {
232
+ 'dtype' : 'float64'
233
+ } ) ;
234
+ dfill ( N , NaN , x , 2 , 1 ) ;
235
+
236
+ out = dztest ( N , 'two-sided' , 0.1 , 0.0 , 1.0 , x , - 2 , results ) ;
237
+ t . strictEqual ( out , results , 'returns expected value' ) ;
238
+ t . strictEqual ( out . rejected , true , 'returns expected value' ) ;
239
+ t . strictEqual ( out . alternative , 'two-sided' , 'returns expected value' ) ;
240
+ t . strictEqual ( isnan ( out . statistic ) , false , 'returns expected value' ) ;
241
+
242
+ t . end ( ) ;
243
+ } ) ;
0 commit comments