@@ -10,7 +10,7 @@ defmodule Statistics do
10
10
11
11
Calls Enum.sum/1
12
12
"""
13
- @ spec sum ( list ) :: number
13
+ @ spec sum ( [ number ] ) :: number
14
14
def sum ( list ) when is_list ( list ) , do: do_sum ( list , 0 )
15
15
16
16
defp do_sum ( [ ] , t ) , do: t
@@ -27,7 +27,7 @@ defmodule Statistics do
27
27
2.0
28
28
29
29
"""
30
- @ spec mean ( list ( number ) ) :: float ( ) | nil
30
+ @ spec mean ( [ number ] ) :: float ( ) | nil
31
31
def mean ( list ) when is_list ( list ) , do: do_mean ( list , 0 , 0 )
32
32
33
33
defp do_mean ( [ ] , 0 , 0 ) , do: nil
@@ -50,7 +50,7 @@ defmodule Statistics do
50
50
2.5
51
51
52
52
"""
53
- @ spec median ( list ) :: number
53
+ @ spec median ( [ number ] ) :: number | nil
54
54
def median ( [ ] ) , do: nil
55
55
56
56
def median ( list ) when is_list ( list ) do
@@ -86,7 +86,7 @@ defmodule Statistics do
86
86
2
87
87
88
88
"""
89
- @ spec mode ( list ) :: number
89
+ @ spec mode ( [ number ] ) :: number | nil
90
90
def mode ( [ ] ) , do: nil
91
91
92
92
def mode ( list ) when is_list ( list ) do
@@ -106,7 +106,7 @@ defmodule Statistics do
106
106
%{1 => 2, 2 => 4, 3 => 1, 4 => 1, 5 => 4}
107
107
108
108
"""
109
- @ spec hist ( list ) :: map
109
+ @ spec hist ( [ number ] ) :: map | nil
110
110
def hist ( [ ] ) , do: nil
111
111
112
112
def hist ( list ) when is_list ( list ) do
@@ -124,7 +124,7 @@ defmodule Statistics do
124
124
125
125
If a non-empty list is provided, it is a call to Enum.min/1
126
126
"""
127
- @ spec min ( list ) :: number
127
+ @ spec min ( [ number ] ) :: number | nil
128
128
def min ( [ ] ) , do: nil
129
129
130
130
def min ( list ) do
@@ -141,7 +141,7 @@ defmodule Statistics do
141
141
142
142
If a non-empty list is provided, it is a call to Enum.max/1
143
143
"""
144
- @ spec max ( list ) :: number
144
+ @ spec max ( [ number ] ) :: number | nil
145
145
def max ( [ ] ) , do: nil
146
146
147
147
def max ( list ) do
@@ -162,7 +162,7 @@ defmodule Statistics do
162
162
163
163
"""
164
164
# TODO change these to call `percentile/2`
165
- @ spec quartile ( list , atom ) :: number
165
+ @ spec quartile ( [ number ] , :first | :third ) :: number
166
166
def quartile ( list , :first ) do
167
167
list |> split |> elem ( 0 ) |> median
168
168
end
@@ -186,7 +186,7 @@ defmodule Statistics do
186
186
9
187
187
188
188
"""
189
- @ spec percentile ( list , number ) :: number
189
+ @ spec percentile ( [ number ] , number ) :: number | nil
190
190
def percentile ( [ ] , _ ) , do: nil
191
191
def percentile ( [ x ] , _ ) , do: x
192
192
def percentile ( list , 0 ) , do: min ( list )
@@ -210,7 +210,7 @@ defmodule Statistics do
210
210
5
211
211
212
212
"""
213
- @ spec range ( list ) :: number
213
+ @ spec range ( [ number ] ) :: number | nil
214
214
def range ( [ ] ) , do: nil
215
215
216
216
def range ( list ) when is_list ( list ) do
@@ -228,7 +228,7 @@ defmodule Statistics do
228
228
4
229
229
230
230
"""
231
- @ spec iqr ( list ) :: number
231
+ @ spec iqr ( [ number ] ) :: number | nil
232
232
def iqr ( [ ] ) , do: nil
233
233
234
234
def iqr ( list ) when is_list ( list ) do
@@ -249,7 +249,7 @@ defmodule Statistics do
249
249
56.48979591836735
250
250
251
251
"""
252
- @ spec variance ( list ) :: number
252
+ @ spec variance ( [ number ] ) :: number | nil
253
253
def variance ( [ ] ) , do: nil
254
254
255
255
def variance ( list ) when is_list ( list ) do
@@ -268,7 +268,7 @@ defmodule Statistics do
268
268
0.5
269
269
270
270
"""
271
- @ spec stdev ( list ) :: number
271
+ @ spec stdev ( [ number ] ) :: number | nil
272
272
def stdev ( [ ] ) , do: nil
273
273
274
274
def stdev ( list ) do
@@ -290,8 +290,7 @@ defmodule Statistics do
290
290
7.3
291
291
292
292
"""
293
- @ spec trimmed_mean ( list , atom ) :: number
294
- @ spec trimmed_mean ( list , tuple ) :: number
293
+ @ spec trimmed_mean ( [ number ] , atom | tuple ) :: number | nil
295
294
def trimmed_mean ( [ ] , _ ) , do: nil
296
295
297
296
def trimmed_mean ( list , :iqr ) do
@@ -317,7 +316,7 @@ defmodule Statistics do
317
316
4.5204836768674568
318
317
319
318
"""
320
- @ spec harmonic_mean ( list ) :: number
319
+ @ spec harmonic_mean ( [ number ] ) :: number | nil
321
320
def harmonic_mean ( [ ] ) , do: nil
322
321
323
322
def harmonic_mean ( list ) when is_list ( list ) do
@@ -343,7 +342,7 @@ defmodule Statistics do
343
342
1.8171205928321397
344
343
345
344
"""
346
- @ spec geometric_mean ( list ) :: number
345
+ @ spec geometric_mean ( [ number ] ) :: number | nil
347
346
def geometric_mean ( [ ] ) , do: nil
348
347
349
348
def geometric_mean ( list ) when is_list ( list ) do
@@ -372,7 +371,7 @@ defmodule Statistics do
372
371
nil
373
372
374
373
"""
375
- @ spec moment ( list , pos_integer ) :: number
374
+ @ spec moment ( [ number ] , pos_integer ) :: number | nil
376
375
def moment ( list , n \\ 1 )
377
376
# empty list has no moment
378
377
def moment ( [ ] , _ ) , do: nil
@@ -399,7 +398,7 @@ defmodule Statistics do
399
398
0.3436215967445454
400
399
401
400
"""
402
- @ spec skew ( list ) :: number
401
+ @ spec skew ( [ number ] ) :: number | nil
403
402
def skew ( [ ] ) , do: nil
404
403
405
404
def skew ( list ) do
@@ -421,7 +420,7 @@ defmodule Statistics do
421
420
-1.1530612244897964
422
421
423
422
"""
424
- @ spec kurtosis ( list ) :: number
423
+ @ spec kurtosis ( [ number ] ) :: number | nil
425
424
def kurtosis ( [ ] ) , do: nil
426
425
427
426
def kurtosis ( list ) do
@@ -444,7 +443,7 @@ defmodule Statistics do
444
443
0.9284766908852594, 0.09284766908852597, -0.7427813527082074]
445
444
446
445
"""
447
- @ spec zscore ( list ) :: list
446
+ @ spec zscore ( [ number ] ) :: list | nil
448
447
def zscore ( list ) when is_list ( list ) do
449
448
lmean = mean ( list )
450
449
lstdev = stdev ( list )
@@ -462,7 +461,7 @@ defmodule Statistics do
462
461
0.9897782665572894
463
462
464
463
"""
465
- @ spec correlation ( list , list ) :: number
464
+ @ spec correlation ( [ number ] , [ number ] ) :: number
466
465
def correlation ( x , y ) when length ( x ) == length ( y ) do
467
466
xmean = mean ( x )
468
467
ymean = mean ( y )
@@ -497,7 +496,7 @@ defmodule Statistics do
497
496
-17.89
498
497
499
498
"""
500
- @ spec covariance ( list , list ) :: number
499
+ @ spec covariance ( [ number ] , [ number ] ) :: number
501
500
def covariance ( x , y ) when length ( x ) == length ( y ) do
502
501
xmean = mean ( x )
503
502
ymean = mean ( y )
0 commit comments