forked from drewwells/stat
-
Notifications
You must be signed in to change notification settings - Fork 1
/
example_test.go
111 lines (100 loc) · 3.25 KB
/
example_test.go
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package stat_test
/* example_test.go
*
* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2007 Jim Davies, Brian Gough
* Copyright (C) 2012, 2013 G.vd.Schoot
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import (
"fmt"
"github.com/grd/stat"
"sort"
)
func ExampleMean() {
data := stat.Float64Slice{17.2, 18.1, 16.5, 18.3, 12.6}
mean := stat.Mean(data)
fmt.Printf("The sample mean is %g", mean)
// Output: The sample mean is 16.54
}
func ExampleVariance() {
data := stat.Float64Slice{17.2, 18.1, 16.5, 18.3, 12.6}
variance := stat.Variance(data)
fmt.Printf("The estimated variance is %.4f", variance)
// Output: The estimated variance is 5.3730
}
func ExampleMax() {
data := stat.Float64Slice{17.2, 18.1, 16.5, 18.3, 12.6}
largest, index := stat.Max(data)
fmt.Printf("The largest value is %g and the index is %d", largest, index)
// Output: The largest value is 18.3 and the index is 3
}
func ExampleMin() {
data := stat.Float64Slice{17.2, 18.1, 16.5, 18.3, 12.6}
smallest, index := stat.Min(data)
fmt.Printf("The smallest value is %g and the index is %d", smallest, index)
// Output: The smallest value is 12.6 and the index is 4
}
func ExampleMedianFromSortedData() {
data := stat.Float64Slice{17.2, 18.1, 16.5, 18.3, 12.6}
sort.Sort(data)
median := stat.MedianFromSortedData(data)
fmt.Printf("Sorted dataset: %v\n", data)
fmt.Printf("The median is %g\n", median)
// Output:
// Sorted dataset: [12.6 16.5 17.2 18.1 18.3]
// The median is 17.2
}
func ExampleQuantileFromSortedData() {
data := stat.Float64Slice{17.2, 18.1, 16.5, 18.3, 12.6}
sort.Sort(data)
upperq := stat.QuantileFromSortedData(data, 0.75)
lowerq := stat.QuantileFromSortedData(data, 0.25)
fmt.Printf("Sorted dataset: %v\n", data)
fmt.Printf("The upper quartile is %g\n", upperq)
fmt.Printf("The lower quartile is %g\n", lowerq)
// Output:
// Sorted dataset: [12.6 16.5 17.2 18.1 18.3]
// The upper quartile is 18.1
// The lower quartile is 16.5
}
func ExampleStrider() {
data := stat.Float64Slice{
.0421, .0941, .1064, .0242,
.1331, .0773, .0243, .0815,
.1186, .0356, .0728, .0999,
.0614, .0479}
strider := stat.NewStrider(data, 4)
for i := 0; i < strider.Len(); i++ {
fmt.Println(strider.Get(i))
}
// Output:
// 0.0421
// 0.1331
// 0.1186
}
func ExampleNewStrider() {
data := stat.Float64Slice{
.0421, .0941, .1064, .0242,
.1331, .0773, .0243, .0815,
.1186, .0356, .0728, .0999,
.0614, .0479}
strider := stat.NewStrider(data, 4)
fmt.Printf("mean data is %.4f\n", stat.Mean(data))
fmt.Printf("mean strider is %.4f\n", stat.Mean(strider))
// Output:
// mean data is 0.0728
// mean strider is 0.0979
}