@stdlib/stats-strided-nanstdevch 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +177 -0
- package/NOTICE +1 -0
- package/README.md +358 -0
- package/SECURITY.md +5 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +7 -0
- package/docs/img/equation_corrected_sample_standard_deviation.svg +73 -0
- package/docs/img/equation_population_mean.svg +42 -0
- package/docs/img/equation_population_standard_deviation.svg +66 -0
- package/docs/img/equation_sample_mean.svg +43 -0
- package/docs/types/index.d.ts +96 -0
- package/lib/index.js +57 -0
- package/lib/main.js +51 -0
- package/lib/ndarray.js +52 -0
- package/package.json +79 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
package/NOTICE
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Copyright (c) 2016-2026 The Stdlib Authors.
|
package/README.md
ADDED
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
|
|
3
|
+
@license Apache-2.0
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2020 The Stdlib Authors.
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
|
|
19
|
+
-->
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
<details>
|
|
23
|
+
<summary>
|
|
24
|
+
About stdlib...
|
|
25
|
+
</summary>
|
|
26
|
+
<p>We believe in a future in which the web is a preferred environment for numerical computation. To help realize this future, we've built stdlib. stdlib is a standard library, with an emphasis on numerical and scientific computation, written in JavaScript (and C) for execution in browsers and in Node.js.</p>
|
|
27
|
+
<p>The library is fully decomposable, being architected in such a way that you can swap out and mix and match APIs and functionality to cater to your exact preferences and use cases.</p>
|
|
28
|
+
<p>When you use stdlib, you can be absolutely certain that you are using the most thorough, rigorous, well-written, studied, documented, tested, measured, and high-quality code out there.</p>
|
|
29
|
+
<p>To join us in bringing numerical computing to the web, get started by checking us out on <a href="https://github.com/stdlib-js/stdlib">GitHub</a>, and please consider <a href="https://opencollective.com/stdlib">financially supporting stdlib</a>. We greatly appreciate your continued support!</p>
|
|
30
|
+
</details>
|
|
31
|
+
|
|
32
|
+
# nanstdevch
|
|
33
|
+
|
|
34
|
+
[![NPM version][npm-image]][npm-url] [![Build Status][test-image]][test-url] [![Coverage Status][coverage-image]][coverage-url] <!-- [![dependencies][dependencies-image]][dependencies-url] -->
|
|
35
|
+
|
|
36
|
+
> Calculate the [standard deviation][standard-deviation] of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.
|
|
37
|
+
|
|
38
|
+
<section class="intro">
|
|
39
|
+
|
|
40
|
+
The population [standard deviation][standard-deviation] of a finite size population of size `N` is given by
|
|
41
|
+
|
|
42
|
+
<!-- <equation class="equation" label="eq:population_standard_deviation" align="center" raw="\sigma = \sqrt{\frac{1}{N} \sum_{i=0}^{N-1} (x_i - \mu)^2}" alt="Equation for the population standard deviation."> -->
|
|
43
|
+
|
|
44
|
+
<div class="equation" align="center" data-raw-text="\sigma = \sqrt{\frac{1}{N} \sum_{i=0}^{N-1} (x_i - \mu)^2}" data-equation="eq:population_standard_deviation">
|
|
45
|
+
<img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@e592576989e92b8def74a5fbac9109f3a81f16f9/lib/node_modules/@stdlib/stats/strided/nanstdevch/docs/img/equation_population_standard_deviation.svg" alt="Equation for the population standard deviation.">
|
|
46
|
+
<br>
|
|
47
|
+
</div> -->
|
|
48
|
+
|
|
49
|
+
<!-- </equation> -->
|
|
50
|
+
|
|
51
|
+
where the population mean is given by
|
|
52
|
+
|
|
53
|
+
<!-- <equation class="equation" label="eq:population_mean" align="center" raw="\mu = \frac{1}{N} \sum_{i=0}^{N-1} x_i" alt="Equation for the population mean."> -->
|
|
54
|
+
|
|
55
|
+
<!-- <div class="equation" align="center" data-raw-text="\mu = \frac{1}{N} \sum_{i=0}^{N-1} x_i" data-equation="eq:population_mean">
|
|
56
|
+
<img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@e592576989e92b8def74a5fbac9109f3a81f16f9/lib/node_modules/@stdlib/stats/strided/nanstdevch/docs/img/equation_population_mean.svg" alt="Equation for the population mean.">
|
|
57
|
+
<br>
|
|
58
|
+
</div> -->
|
|
59
|
+
|
|
60
|
+
<!-- </equation> -->
|
|
61
|
+
|
|
62
|
+
Often in the analysis of data, the true population [standard deviation][standard-deviation] is not known _a priori_ and must be estimated from a sample drawn from the population distribution. If one attempts to use the formula for the population [standard deviation][standard-deviation], the result is biased and yields an **uncorrected sample standard deviation**. To compute a **corrected sample standard deviation** for a sample of size `n`,
|
|
63
|
+
|
|
64
|
+
<!-- <equation class="equation" label="eq:corrected_sample_standard_deviation" align="center" raw="s = \sqrt{\frac{1}{n-1} \sum_{i=0}^{n-1} (x_i - \bar{x})^2}" alt="Equation for computing a corrected sample standard deviation."> -->
|
|
65
|
+
|
|
66
|
+
<!-- <div class="equation" align="center" data-raw-text="s = \sqrt{\frac{1}{n-1} \sum_{i=0}^{n-1} (x_i - \bar{x})^2}" data-equation="eq:corrected_sample_standard_deviation">
|
|
67
|
+
<img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@e592576989e92b8def74a5fbac9109f3a81f16f9/lib/node_modules/@stdlib/stats/strided/nanstdevch/docs/img/equation_corrected_sample_standard_deviation.svg" alt="Equation for computing a corrected sample standard deviation.">
|
|
68
|
+
<br>
|
|
69
|
+
</div> -->
|
|
70
|
+
|
|
71
|
+
<!-- </equation> -->
|
|
72
|
+
|
|
73
|
+
where the sample mean is given by
|
|
74
|
+
|
|
75
|
+
<!-- <equation class="equation" label="eq:sample_mean" align="center" raw="\bar{x} = \frac{1}{n} \sum_{i=0}^{n-1} x_i" alt="Equation for the sample mean."> -->
|
|
76
|
+
|
|
77
|
+
<!-- <div class="equation" align="center" data-raw-text="\bar{x} = \frac{1}{n} \sum_{i=0}^{n-1} x_i" data-equation="eq:sample_mean">
|
|
78
|
+
<img src="https://cdn.jsdelivr.net/gh/stdlib-js/stdlib@e592576989e92b8def74a5fbac9109f3a81f16f9/lib/node_modules/@stdlib/stats/strided/nanstdevch/docs/img/equation_sample_mean.svg" alt="Equation for the sample mean.">
|
|
79
|
+
<br>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<!-- </equation> -->
|
|
83
|
+
|
|
84
|
+
The use of the term `n-1` is commonly referred to as Bessel's correction. Note, however, that applying Bessel's correction can increase the mean squared error between the sample standard deviation and population standard deviation. Depending on the characteristics of the population distribution, other correction factors (e.g., `n-1.5`, `n+1`, etc) can yield better estimators.
|
|
85
|
+
|
|
86
|
+
</section>
|
|
87
|
+
|
|
88
|
+
<!-- /.intro -->
|
|
89
|
+
|
|
90
|
+
<section class="installation">
|
|
91
|
+
|
|
92
|
+
## Installation
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm install @stdlib/stats-strided-nanstdevch
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
</section>
|
|
99
|
+
|
|
100
|
+
<section class="usage">
|
|
101
|
+
|
|
102
|
+
## Usage
|
|
103
|
+
|
|
104
|
+
```javascript
|
|
105
|
+
var nanstdevch = require( '@stdlib/stats-strided-nanstdevch' );
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### nanstdevch( N, correction, x, strideX )
|
|
109
|
+
|
|
110
|
+
Computes the [standard deviation][standard-deviation] of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.
|
|
111
|
+
|
|
112
|
+
```javascript
|
|
113
|
+
var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
114
|
+
|
|
115
|
+
var v = nanstdevch( x.length, 1, x, 1 );
|
|
116
|
+
// returns ~2.0817
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The function has the following parameters:
|
|
120
|
+
|
|
121
|
+
- **N**: number of indexed elements.
|
|
122
|
+
- **correction**: degrees of freedom adjustment. Setting this parameter to a value other than `0` has the effect of adjusting the divisor during the calculation of the [standard deviation][standard-deviation] according to `N-c` where `c` corresponds to the provided degrees of freedom adjustment. When computing the [standard deviation][standard-deviation] of a population, setting this parameter to `0` is the standard choice (i.e., the provided array contains data constituting an entire population). When computing the corrected sample [standard deviation][standard-deviation], setting this parameter to `1` is the standard choice (i.e., the provided array contains data sampled from a larger population; this is commonly referred to as Bessel's correction).
|
|
123
|
+
- **x**: input [`Array`][mdn-array] or [`typed array`][mdn-typed-array].
|
|
124
|
+
- **strideX**: stride length for `x`.
|
|
125
|
+
|
|
126
|
+
The `N` and `stride` parameters determine which elements in `x` are accessed at runtime. For example, to compute the [standard deviation][standard-deviation] of every other element in `x`,
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
var x = [ 1.0, 2.0, 2.0, -7.0, -2.0, 3.0, 4.0, 2.0, NaN ];
|
|
130
|
+
|
|
131
|
+
var v = nanstdevch( 5, 1, x, 2 );
|
|
132
|
+
// returns 2.5
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Note that indexing is relative to the first index. To introduce an offset, use [`typed array`][mdn-typed-array] views.
|
|
136
|
+
|
|
137
|
+
<!-- eslint-disable stdlib/capitalized-comments, max-len -->
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
var Float64Array = require( '@stdlib/array-float64' );
|
|
141
|
+
|
|
142
|
+
var x0 = new Float64Array( [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ] );
|
|
143
|
+
var x1 = new Float64Array( x0.buffer, x0.BYTES_PER_ELEMENT*1 ); // start at 2nd element
|
|
144
|
+
|
|
145
|
+
var v = nanstdevch( 5, 1, x1, 2 );
|
|
146
|
+
// returns 2.5
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### nanstdevch.ndarray( N, correction, x, strideX, offsetX )
|
|
150
|
+
|
|
151
|
+
Computes the [standard deviation][standard-deviation] of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm and alternative indexing semantics.
|
|
152
|
+
|
|
153
|
+
```javascript
|
|
154
|
+
var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
155
|
+
|
|
156
|
+
var v = nanstdevch.ndarray( x.length, 1, x, 1, 0 );
|
|
157
|
+
// returns ~2.0817
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
The function has the following additional parameters:
|
|
161
|
+
|
|
162
|
+
- **offsetX**: starting index for `x`.
|
|
163
|
+
|
|
164
|
+
While [`typed array`][mdn-typed-array] views mandate a view offset based on the underlying buffer, the offset parameter supports indexing semantics based on a starting index. For example, to calculate the [standard deviation][standard-deviation] for every other element in `x` starting from the second element
|
|
165
|
+
|
|
166
|
+
```javascript
|
|
167
|
+
var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];
|
|
168
|
+
|
|
169
|
+
var v = nanstdevch.ndarray( 5, 1, x, 2, 1 );
|
|
170
|
+
// returns 2.5
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
</section>
|
|
174
|
+
|
|
175
|
+
<!-- /.usage -->
|
|
176
|
+
|
|
177
|
+
<section class="notes">
|
|
178
|
+
|
|
179
|
+
## Notes
|
|
180
|
+
|
|
181
|
+
- If `N <= 0`, both functions return `NaN`.
|
|
182
|
+
- If `n - c` is less than or equal to `0` (where `c` corresponds to the provided degrees of freedom adjustment and `n` corresponds to the number of non-`NaN` indexed elements), both functions return `NaN`.
|
|
183
|
+
- The underlying algorithm is a specialized case of Neely's two-pass algorithm. As the standard deviation is invariant with respect to changes in the location parameter, the underlying algorithm uses the first strided array element as a trial mean to shift subsequent data values and thus mitigate catastrophic cancellation. Accordingly, the algorithm's accuracy is best when data is **unordered** (i.e., the data is **not** sorted in either ascending or descending order such that the first value is an "extreme" value).
|
|
184
|
+
- Both functions support array-like objects having getter and setter accessors for array element access (e.g., [`@stdlib/array-base/accessor`][@stdlib/array/base/accessor]).
|
|
185
|
+
- Depending on the environment, the typed versions ([`dnanstdevch`][@stdlib/stats/strided/dnanstdevch], [`snanstdevch`][@stdlib/stats/base/snanstdevch], etc.) are likely to be significantly more performant.
|
|
186
|
+
|
|
187
|
+
</section>
|
|
188
|
+
|
|
189
|
+
<!-- /.notes -->
|
|
190
|
+
|
|
191
|
+
<section class="examples">
|
|
192
|
+
|
|
193
|
+
## Examples
|
|
194
|
+
|
|
195
|
+
<!-- eslint no-undef: "error" -->
|
|
196
|
+
|
|
197
|
+
```javascript
|
|
198
|
+
var uniform = require( '@stdlib/random-base-uniform' );
|
|
199
|
+
var filledarrayBy = require( '@stdlib/array-filled-by' );
|
|
200
|
+
var bernoulli = require( '@stdlib/random-base-bernoulli' );
|
|
201
|
+
var nanstdevch = require( '@stdlib/stats-strided-nanstdevch' );
|
|
202
|
+
|
|
203
|
+
function rand() {
|
|
204
|
+
if ( bernoulli( 0.8 ) < 1 ) {
|
|
205
|
+
return NaN;
|
|
206
|
+
}
|
|
207
|
+
return uniform( -50.0, 50.0 );
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
var x = filledarrayBy( 10, 'float64', rand );
|
|
211
|
+
console.log( x );
|
|
212
|
+
|
|
213
|
+
var v = nanstdevch( x.length, 1, x, 1 );
|
|
214
|
+
console.log( v );
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
</section>
|
|
218
|
+
|
|
219
|
+
<!-- /.examples -->
|
|
220
|
+
|
|
221
|
+
* * *
|
|
222
|
+
|
|
223
|
+
<section class="references">
|
|
224
|
+
|
|
225
|
+
## References
|
|
226
|
+
|
|
227
|
+
- Neely, Peter M. 1966. "Comparison of Several Algorithms for Computation of Means, Standard Deviations and Correlation Coefficients." _Communications of the ACM_ 9 (7). Association for Computing Machinery: 496–99. doi:[10.1145/365719.365958][@neely:1966a].
|
|
228
|
+
- Ling, Robert F. 1974. "Comparison of Several Algorithms for Computing Sample Means and Variances." _Journal of the American Statistical Association_ 69 (348). American Statistical Association, Taylor & Francis, Ltd.: 859–66. doi:[10.2307/2286154][@ling:1974a].
|
|
229
|
+
- Chan, Tony F., Gene H. Golub, and Randall J. LeVeque. 1983. "Algorithms for Computing the Sample Variance: Analysis and Recommendations." _The American Statistician_ 37 (3). American Statistical Association, Taylor & Francis, Ltd.: 242–47. doi:[10.1080/00031305.1983.10483115][@chan:1983a].
|
|
230
|
+
- Schubert, Erich, and Michael Gertz. 2018. "Numerically Stable Parallel Computation of (Co-)Variance." In _Proceedings of the 30th International Conference on Scientific and Statistical Database Management_. New York, NY, USA: Association for Computing Machinery. doi:[10.1145/3221269.3223036][@schubert:2018a].
|
|
231
|
+
|
|
232
|
+
</section>
|
|
233
|
+
|
|
234
|
+
<!-- /.references -->
|
|
235
|
+
|
|
236
|
+
<!-- Section for related `stdlib` packages. Do not manually edit this section, as it is automatically populated. -->
|
|
237
|
+
|
|
238
|
+
<section class="related">
|
|
239
|
+
|
|
240
|
+
* * *
|
|
241
|
+
|
|
242
|
+
## See Also
|
|
243
|
+
|
|
244
|
+
- <span class="package-name">[`@stdlib/stats-strided/dnanstdevch`][@stdlib/stats/strided/dnanstdevch]</span><span class="delimiter">: </span><span class="description">calculate the standard deviation of a double-precision floating-point strided array ignoring NaN values and using a one-pass trial mean algorithm.</span>
|
|
245
|
+
- <span class="package-name">[`@stdlib/stats-strided/nanvariancech`][@stdlib/stats/strided/nanvariancech]</span><span class="delimiter">: </span><span class="description">calculate the variance of a strided array ignoring NaN values and using a one-pass trial mean algorithm.</span>
|
|
246
|
+
- <span class="package-name">[`@stdlib/stats-strided/nanstdev`][@stdlib/stats/strided/nanstdev]</span><span class="delimiter">: </span><span class="description">calculate the standard deviation of a strided array ignoring NaN values.</span>
|
|
247
|
+
- <span class="package-name">[`@stdlib/stats-base/snanstdevch`][@stdlib/stats/base/snanstdevch]</span><span class="delimiter">: </span><span class="description">calculate the standard deviation of a single-precision floating-point strided array ignoring NaN values and using a one-pass trial mean algorithm.</span>
|
|
248
|
+
- <span class="package-name">[`@stdlib/stats-strided/stdevch`][@stdlib/stats/strided/stdevch]</span><span class="delimiter">: </span><span class="description">calculate the standard deviation of a strided array using a one-pass trial mean algorithm.</span>
|
|
249
|
+
|
|
250
|
+
</section>
|
|
251
|
+
|
|
252
|
+
<!-- /.related -->
|
|
253
|
+
|
|
254
|
+
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
<section class="main-repo" >
|
|
258
|
+
|
|
259
|
+
* * *
|
|
260
|
+
|
|
261
|
+
## Notice
|
|
262
|
+
|
|
263
|
+
This package is part of [stdlib][stdlib], a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.
|
|
264
|
+
|
|
265
|
+
For more information on the project, filing bug reports and feature requests, and guidance on how to develop [stdlib][stdlib], see the main project [repository][stdlib].
|
|
266
|
+
|
|
267
|
+
#### Community
|
|
268
|
+
|
|
269
|
+
[![Chat][chat-image]][chat-url]
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## License
|
|
274
|
+
|
|
275
|
+
See [LICENSE][stdlib-license].
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
## Copyright
|
|
279
|
+
|
|
280
|
+
Copyright © 2016-2026. The Stdlib [Authors][stdlib-authors].
|
|
281
|
+
|
|
282
|
+
</section>
|
|
283
|
+
|
|
284
|
+
<!-- /.stdlib -->
|
|
285
|
+
|
|
286
|
+
<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->
|
|
287
|
+
|
|
288
|
+
<section class="links">
|
|
289
|
+
|
|
290
|
+
[npm-image]: http://img.shields.io/npm/v/@stdlib/stats-strided-nanstdevch.svg
|
|
291
|
+
[npm-url]: https://npmjs.org/package/@stdlib/stats-strided-nanstdevch
|
|
292
|
+
|
|
293
|
+
[test-image]: https://github.com/stdlib-js/stats-strided-nanstdevch/actions/workflows/test.yml/badge.svg?branch=v0.1.0
|
|
294
|
+
[test-url]: https://github.com/stdlib-js/stats-strided-nanstdevch/actions/workflows/test.yml?query=branch:v0.1.0
|
|
295
|
+
|
|
296
|
+
[coverage-image]: https://img.shields.io/codecov/c/github/stdlib-js/stats-strided-nanstdevch/main.svg
|
|
297
|
+
[coverage-url]: https://codecov.io/github/stdlib-js/stats-strided-nanstdevch?branch=main
|
|
298
|
+
|
|
299
|
+
<!--
|
|
300
|
+
|
|
301
|
+
[dependencies-image]: https://img.shields.io/david/stdlib-js/stats-strided-nanstdevch.svg
|
|
302
|
+
[dependencies-url]: https://david-dm.org/stdlib-js/stats-strided-nanstdevch/main
|
|
303
|
+
|
|
304
|
+
-->
|
|
305
|
+
|
|
306
|
+
[chat-image]: https://img.shields.io/badge/zulip-join_chat-brightgreen.svg
|
|
307
|
+
[chat-url]: https://stdlib.zulipchat.com
|
|
308
|
+
|
|
309
|
+
[stdlib]: https://github.com/stdlib-js/stdlib
|
|
310
|
+
|
|
311
|
+
[stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors
|
|
312
|
+
|
|
313
|
+
[umd]: https://github.com/umdjs/umd
|
|
314
|
+
[es-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
|
|
315
|
+
|
|
316
|
+
[deno-url]: https://github.com/stdlib-js/stats-strided-nanstdevch/tree/deno
|
|
317
|
+
[deno-readme]: https://github.com/stdlib-js/stats-strided-nanstdevch/blob/deno/README.md
|
|
318
|
+
[umd-url]: https://github.com/stdlib-js/stats-strided-nanstdevch/tree/umd
|
|
319
|
+
[umd-readme]: https://github.com/stdlib-js/stats-strided-nanstdevch/blob/umd/README.md
|
|
320
|
+
[esm-url]: https://github.com/stdlib-js/stats-strided-nanstdevch/tree/esm
|
|
321
|
+
[esm-readme]: https://github.com/stdlib-js/stats-strided-nanstdevch/blob/esm/README.md
|
|
322
|
+
[branches-url]: https://github.com/stdlib-js/stats-strided-nanstdevch/blob/main/branches.md
|
|
323
|
+
|
|
324
|
+
[stdlib-license]: https://raw.githubusercontent.com/stdlib-js/stats-strided-nanstdevch/main/LICENSE
|
|
325
|
+
|
|
326
|
+
[standard-deviation]: https://en.wikipedia.org/wiki/Standard_deviation
|
|
327
|
+
|
|
328
|
+
[mdn-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
|
|
329
|
+
|
|
330
|
+
[mdn-typed-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray
|
|
331
|
+
|
|
332
|
+
[@stdlib/array/base/accessor]: https://www.npmjs.com/package/@stdlib/array-base-accessor
|
|
333
|
+
|
|
334
|
+
[@neely:1966a]: https://doi.org/10.1145/365719.365958
|
|
335
|
+
|
|
336
|
+
[@ling:1974a]: https://doi.org/10.2307/2286154
|
|
337
|
+
|
|
338
|
+
[@chan:1983a]: https://doi.org/10.1080/00031305.1983.10483115
|
|
339
|
+
|
|
340
|
+
[@schubert:2018a]: https://doi.org/10.1145/3221269.3223036
|
|
341
|
+
|
|
342
|
+
<!-- <related-links> -->
|
|
343
|
+
|
|
344
|
+
[@stdlib/stats/strided/dnanstdevch]: https://www.npmjs.com/package/@stdlib/stats-strided-dnanstdevch
|
|
345
|
+
|
|
346
|
+
[@stdlib/stats/strided/nanvariancech]: https://www.npmjs.com/package/@stdlib/stats-strided-nanvariancech
|
|
347
|
+
|
|
348
|
+
[@stdlib/stats/strided/nanstdev]: https://www.npmjs.com/package/@stdlib/stats-strided-nanstdev
|
|
349
|
+
|
|
350
|
+
[@stdlib/stats/base/snanstdevch]: https://www.npmjs.com/package/@stdlib/stats-base-snanstdevch
|
|
351
|
+
|
|
352
|
+
[@stdlib/stats/strided/stdevch]: https://www.npmjs.com/package/@stdlib/stats-strided-stdevch
|
|
353
|
+
|
|
354
|
+
<!-- </related-links> -->
|
|
355
|
+
|
|
356
|
+
</section>
|
|
357
|
+
|
|
358
|
+
<!-- /.links -->
|
package/SECURITY.md
ADDED
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";var i=function(e,r){return function(){return r||e((r={exports:{}}).exports,r),r.exports}};var t=i(function(O,s){
|
|
2
|
+
var d=require('@stdlib/stats-strided-nanvariancech/dist').ndarray,o=require('@stdlib/math-base-special-sqrt/dist');function y(e,r,n,a,q){return o(d(e,r,n,a,q))}s.exports=y
|
|
3
|
+
});var v=i(function(R,u){
|
|
4
|
+
var f=require('@stdlib/strided-base-stride2offset/dist'),h=t();function p(e,r,n,a){return h(e,r,n,a,f(e,a))}u.exports=p
|
|
5
|
+
});var x=require('@stdlib/utils-define-nonenumerable-read-only-property/dist'),c=v(),l=t();x(c,"ndarray",l);module.exports=c;
|
|
6
|
+
/** @license Apache-2.0 */
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../lib/ndarray.js", "../lib/main.js", "../lib/index.js"],
|
|
4
|
+
"sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nanvariancech = require( '@stdlib/stats-strided-nanvariancech' ).ndarray;\nvar sqrt = require( '@stdlib/math-base-special-sqrt' );\n\n\n// MAIN //\n\n/**\n* Computes the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.\n*\n* @param {PositiveInteger} N - number of indexed elements\n* @param {number} correction - degrees of freedom adjustment\n* @param {NumericArray} x - input array\n* @param {integer} strideX - stride length\n* @param {NonNegativeInteger} offsetX - starting index\n* @returns {number} standard deviation\n*\n* @example\n* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];\n*\n* var v = nanstdevch( 5, 1, x, 2, 1 );\n* // returns 2.5\n*/\nfunction nanstdevch( N, correction, x, strideX, offsetX ) {\n\treturn sqrt( nanvariancech( N, correction, x, strideX, offsetX ) );\n}\n\n\n// EXPORTS //\n\nmodule.exports = nanstdevch;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar stride2offset = require( '@stdlib/strided-base-stride2offset' );\nvar ndarray = require( './ndarray.js' );\n\n\n// MAIN //\n\n/**\n* Computes the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.\n*\n* @param {PositiveInteger} N - number of indexed elements\n* @param {number} correction - degrees of freedom adjustment\n* @param {NumericArray} x - input array\n* @param {integer} strideX - stride length\n* @returns {number} standard deviation\n*\n* @example\n* var x = [ 1.0, -2.0, NaN, 2.0 ];\n*\n* var v = nanstdevch( x.length, 1, x, 1 );\n* // returns ~2.0817\n*/\nfunction nanstdevch( N, correction, x, strideX ) {\n\treturn ndarray( N, correction, x, strideX, stride2offset( N, strideX ) );\n}\n\n\n// EXPORTS //\n\nmodule.exports = nanstdevch;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Compute the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.\n*\n* @module @stdlib/stats-strided-nanstdevch\n*\n* @example\n* var nanstdevch = require( '@stdlib/stats-strided-nanstdevch' );\n*\n* var x = [ 1.0, -2.0, NaN, 2.0 ];\n*\n* var v = nanstdevch( x.length, 1, x, 1 );\n* // returns ~2.0817\n*\n* @example\n* var nanstdevch = require( '@stdlib/stats-strided-nanstdevch' );\n*\n* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];\n*\n* var v = nanstdevch.ndarray( 5, 1, x, 2, 1 );\n* // returns 2.5\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar ndarray = require( './ndarray.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'ndarray', ndarray );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"],
|
|
5
|
+
"mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAgB,QAAS,qCAAsC,EAAE,QACjEC,EAAO,QAAS,gCAAiC,EAqBrD,SAASC,EAAYC,EAAGC,EAAYC,EAAGC,EAASC,EAAU,CACzD,OAAON,EAAMD,EAAeG,EAAGC,EAAYC,EAAGC,EAASC,CAAQ,CAAE,CAClE,CAKAR,EAAO,QAAUG,ICnDjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAgB,QAAS,oCAAqC,EAC9DC,EAAU,IAoBd,SAASC,EAAYC,EAAGC,EAAYC,EAAGC,EAAU,CAChD,OAAOL,EAASE,EAAGC,EAAYC,EAAGC,EAASN,EAAeG,EAAGG,CAAQ,CAAE,CACxE,CAKAP,EAAO,QAAUG,ICNjB,IAAIK,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAU,IAKdF,EAAaC,EAAM,UAAWC,CAAQ,EAKtC,OAAO,QAAUD",
|
|
6
|
+
"names": ["require_ndarray", "__commonJSMin", "exports", "module", "nanvariancech", "sqrt", "nanstdevch", "N", "correction", "x", "strideX", "offsetX", "require_main", "__commonJSMin", "exports", "module", "stride2offset", "ndarray", "nanstdevch", "N", "correction", "x", "strideX", "setReadOnly", "main", "ndarray"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="25.781ex" height="8.009ex" style="vertical-align: -3.005ex;" viewBox="0 -2154.8 11100.3 3448.4" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
|
2
|
+
<title id="MathJax-SVG-1-Title">s equals StartRoot StartFraction 1 Over n minus 1 EndFraction sigma-summation Underscript i equals 0 Overscript n minus 1 Endscripts left-parenthesis x Subscript i Baseline minus x overbar right-parenthesis squared EndRoot</title>
|
|
3
|
+
<defs aria-hidden="true">
|
|
4
|
+
<path stroke-width="1" id="E1-MJMATHI-73" d="M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z"></path>
|
|
5
|
+
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
|
6
|
+
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
|
7
|
+
<path stroke-width="1" id="E1-MJMATHI-6E" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path>
|
|
8
|
+
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
|
9
|
+
<path stroke-width="1" id="E1-MJSZ2-2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path>
|
|
10
|
+
<path stroke-width="1" id="E1-MJMATHI-69" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path>
|
|
11
|
+
<path stroke-width="1" id="E1-MJMAIN-30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path>
|
|
12
|
+
<path stroke-width="1" id="E1-MJMAIN-28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path>
|
|
13
|
+
<path stroke-width="1" id="E1-MJMATHI-78" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path>
|
|
14
|
+
<path stroke-width="1" id="E1-MJMAIN-AF" d="M69 544V590H430V544H69Z"></path>
|
|
15
|
+
<path stroke-width="1" id="E1-MJMAIN-29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path>
|
|
16
|
+
<path stroke-width="1" id="E1-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path>
|
|
17
|
+
<path stroke-width="1" id="E1-MJSZ4-E001" d="M702 589Q706 601 718 605H1061Q1076 597 1076 585Q1076 572 1061 565H742V0Q734 -14 724 -14H722H720Q708 -14 702 0V589Z"></path>
|
|
18
|
+
<path stroke-width="1" id="E1-MJSZ4-23B7" d="M742 -871Q740 -873 737 -876T733 -880T730 -882T724 -884T714 -885H702L222 569L180 484Q138 399 137 399Q131 404 124 412L111 425L265 736L702 -586V168L703 922Q713 935 722 935Q734 935 742 920V-871Z"></path>
|
|
19
|
+
<path stroke-width="1" id="E1-MJSZ4-E000" d="M722 -14H720Q708 -14 702 0V306L703 612Q713 625 722 625Q734 625 742 610V0Q734 -14 724 -14H722Z"></path>
|
|
20
|
+
</defs>
|
|
21
|
+
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
|
22
|
+
<use xlink:href="#E1-MJMATHI-73" x="0" y="0"></use>
|
|
23
|
+
<use xlink:href="#E1-MJMAIN-3D" x="747" y="0"></use>
|
|
24
|
+
<g transform="translate(1803,0)">
|
|
25
|
+
<g transform="translate(0,1950)">
|
|
26
|
+
<use xlink:href="#E1-MJSZ4-E001" x="0" y="-606"></use>
|
|
27
|
+
<g transform="translate(0,-1364.8269886051653) scale(1,1.2680942309986667)">
|
|
28
|
+
<use xlink:href="#E1-MJSZ4-E000"></use>
|
|
29
|
+
</g>
|
|
30
|
+
<use xlink:href="#E1-MJSZ4-23B7" x="0" y="-2270"></use>
|
|
31
|
+
</g>
|
|
32
|
+
<rect stroke="none" width="8240" height="60" x="1056" y="1890"></rect>
|
|
33
|
+
<g transform="translate(1056,0)">
|
|
34
|
+
<g transform="translate(120,0)">
|
|
35
|
+
<rect stroke="none" width="2443" height="60" x="0" y="220"></rect>
|
|
36
|
+
<use xlink:href="#E1-MJMAIN-31" x="971" y="676"></use>
|
|
37
|
+
<g transform="translate(60,-687)">
|
|
38
|
+
<use xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
|
39
|
+
<use xlink:href="#E1-MJMAIN-2212" x="822" y="0"></use>
|
|
40
|
+
<use xlink:href="#E1-MJMAIN-31" x="1823" y="0"></use>
|
|
41
|
+
</g>
|
|
42
|
+
</g>
|
|
43
|
+
<g transform="translate(2850,0)">
|
|
44
|
+
<use xlink:href="#E1-MJSZ2-2211" x="0" y="0"></use>
|
|
45
|
+
<g transform="translate(147,-1090)">
|
|
46
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="0" y="0"></use>
|
|
47
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-3D" x="345" y="0"></use>
|
|
48
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-30" x="1124" y="0"></use>
|
|
49
|
+
</g>
|
|
50
|
+
<g transform="translate(57,1151)">
|
|
51
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
|
52
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2212" x="600" y="0"></use>
|
|
53
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1379" y="0"></use>
|
|
54
|
+
</g>
|
|
55
|
+
</g>
|
|
56
|
+
<use xlink:href="#E1-MJMAIN-28" x="4295" y="0"></use>
|
|
57
|
+
<g transform="translate(4684,0)">
|
|
58
|
+
<use xlink:href="#E1-MJMATHI-78" x="0" y="0"></use>
|
|
59
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="809" y="-213"></use>
|
|
60
|
+
</g>
|
|
61
|
+
<use xlink:href="#E1-MJMAIN-2212" x="5823" y="0"></use>
|
|
62
|
+
<g transform="translate(6824,0)">
|
|
63
|
+
<use xlink:href="#E1-MJMATHI-78" x="0" y="0"></use>
|
|
64
|
+
<use xlink:href="#E1-MJMAIN-AF" x="63" y="7"></use>
|
|
65
|
+
</g>
|
|
66
|
+
<g transform="translate(7396,0)">
|
|
67
|
+
<use xlink:href="#E1-MJMAIN-29" x="0" y="0"></use>
|
|
68
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="550" y="583"></use>
|
|
69
|
+
</g>
|
|
70
|
+
</g>
|
|
71
|
+
</g>
|
|
72
|
+
</g>
|
|
73
|
+
</svg>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="13.863ex" height="7.343ex" style="vertical-align: -3.005ex;" viewBox="0 -1867.7 5968.8 3161.4" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
|
2
|
+
<title id="MathJax-SVG-1-Title">mu equals StartFraction 1 Over upper N EndFraction sigma-summation Underscript i equals 0 Overscript upper N minus 1 Endscripts x Subscript i</title>
|
|
3
|
+
<defs aria-hidden="true">
|
|
4
|
+
<path stroke-width="1" id="E1-MJMATHI-3BC" d="M58 -216Q44 -216 34 -208T23 -186Q23 -176 96 116T173 414Q186 442 219 442Q231 441 239 435T249 423T251 413Q251 401 220 279T187 142Q185 131 185 107V99Q185 26 252 26Q261 26 270 27T287 31T302 38T315 45T327 55T338 65T348 77T356 88T365 100L372 110L408 253Q444 395 448 404Q461 431 491 431Q504 431 512 424T523 412T525 402L449 84Q448 79 448 68Q448 43 455 35T476 26Q485 27 496 35Q517 55 537 131Q543 151 547 152Q549 153 557 153H561Q580 153 580 144Q580 138 575 117T555 63T523 13Q510 0 491 -8Q483 -10 467 -10Q446 -10 429 -4T402 11T385 29T376 44T374 51L368 45Q362 39 350 30T324 12T288 -4T246 -11Q199 -11 153 12L129 -85Q108 -167 104 -180T92 -202Q76 -216 58 -216Z"></path>
|
|
5
|
+
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
|
6
|
+
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
|
7
|
+
<path stroke-width="1" id="E1-MJMATHI-4E" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path>
|
|
8
|
+
<path stroke-width="1" id="E1-MJSZ2-2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path>
|
|
9
|
+
<path stroke-width="1" id="E1-MJMATHI-69" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path>
|
|
10
|
+
<path stroke-width="1" id="E1-MJMAIN-30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path>
|
|
11
|
+
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
|
12
|
+
<path stroke-width="1" id="E1-MJMATHI-78" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path>
|
|
13
|
+
</defs>
|
|
14
|
+
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
|
15
|
+
<use xlink:href="#E1-MJMATHI-3BC" x="0" y="0"></use>
|
|
16
|
+
<use xlink:href="#E1-MJMAIN-3D" x="881" y="0"></use>
|
|
17
|
+
<g transform="translate(1659,0)">
|
|
18
|
+
<g transform="translate(397,0)">
|
|
19
|
+
<rect stroke="none" width="1008" height="60" x="0" y="220"></rect>
|
|
20
|
+
<use xlink:href="#E1-MJMAIN-31" x="254" y="676"></use>
|
|
21
|
+
<use xlink:href="#E1-MJMATHI-4E" x="60" y="-704"></use>
|
|
22
|
+
</g>
|
|
23
|
+
</g>
|
|
24
|
+
<g transform="translate(3352,0)">
|
|
25
|
+
<use xlink:href="#E1-MJSZ2-2211" x="44" y="0"></use>
|
|
26
|
+
<g transform="translate(191,-1090)">
|
|
27
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="0" y="0"></use>
|
|
28
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-3D" x="345" y="0"></use>
|
|
29
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-30" x="1124" y="0"></use>
|
|
30
|
+
</g>
|
|
31
|
+
<g transform="translate(0,1151)">
|
|
32
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-4E" x="0" y="0"></use>
|
|
33
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2212" x="888" y="0"></use>
|
|
34
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1667" y="0"></use>
|
|
35
|
+
</g>
|
|
36
|
+
</g>
|
|
37
|
+
<g transform="translate(5052,0)">
|
|
38
|
+
<use xlink:href="#E1-MJMATHI-78" x="0" y="0"></use>
|
|
39
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="809" y="-213"></use>
|
|
40
|
+
</g>
|
|
41
|
+
</g>
|
|
42
|
+
</svg>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="22.964ex" height="8.009ex" style="vertical-align: -3.005ex;" viewBox="0 -2154.8 9887 3448.4" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
|
2
|
+
<title id="MathJax-SVG-1-Title">sigma equals StartRoot StartFraction 1 Over upper N EndFraction sigma-summation Underscript i equals 0 Overscript upper N minus 1 Endscripts left-parenthesis x Subscript i Baseline minus mu right-parenthesis squared EndRoot</title>
|
|
3
|
+
<defs aria-hidden="true">
|
|
4
|
+
<path stroke-width="1" id="E1-MJMATHI-3C3" d="M184 -11Q116 -11 74 34T31 147Q31 247 104 333T274 430Q275 431 414 431H552Q553 430 555 429T559 427T562 425T565 422T567 420T569 416T570 412T571 407T572 401Q572 357 507 357Q500 357 490 357T476 358H416L421 348Q439 310 439 263Q439 153 359 71T184 -11ZM361 278Q361 358 276 358Q152 358 115 184Q114 180 114 178Q106 141 106 117Q106 67 131 47T188 26Q242 26 287 73Q316 103 334 153T356 233T361 278Z"></path>
|
|
5
|
+
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
|
6
|
+
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
|
7
|
+
<path stroke-width="1" id="E1-MJMATHI-4E" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path>
|
|
8
|
+
<path stroke-width="1" id="E1-MJSZ2-2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path>
|
|
9
|
+
<path stroke-width="1" id="E1-MJMATHI-69" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path>
|
|
10
|
+
<path stroke-width="1" id="E1-MJMAIN-30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path>
|
|
11
|
+
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
|
12
|
+
<path stroke-width="1" id="E1-MJMAIN-28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path>
|
|
13
|
+
<path stroke-width="1" id="E1-MJMATHI-78" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path>
|
|
14
|
+
<path stroke-width="1" id="E1-MJMATHI-3BC" d="M58 -216Q44 -216 34 -208T23 -186Q23 -176 96 116T173 414Q186 442 219 442Q231 441 239 435T249 423T251 413Q251 401 220 279T187 142Q185 131 185 107V99Q185 26 252 26Q261 26 270 27T287 31T302 38T315 45T327 55T338 65T348 77T356 88T365 100L372 110L408 253Q444 395 448 404Q461 431 491 431Q504 431 512 424T523 412T525 402L449 84Q448 79 448 68Q448 43 455 35T476 26Q485 27 496 35Q517 55 537 131Q543 151 547 152Q549 153 557 153H561Q580 153 580 144Q580 138 575 117T555 63T523 13Q510 0 491 -8Q483 -10 467 -10Q446 -10 429 -4T402 11T385 29T376 44T374 51L368 45Q362 39 350 30T324 12T288 -4T246 -11Q199 -11 153 12L129 -85Q108 -167 104 -180T92 -202Q76 -216 58 -216Z"></path>
|
|
15
|
+
<path stroke-width="1" id="E1-MJMAIN-29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path>
|
|
16
|
+
<path stroke-width="1" id="E1-MJMAIN-32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path>
|
|
17
|
+
<path stroke-width="1" id="E1-MJSZ4-E001" d="M702 589Q706 601 718 605H1061Q1076 597 1076 585Q1076 572 1061 565H742V0Q734 -14 724 -14H722H720Q708 -14 702 0V589Z"></path>
|
|
18
|
+
<path stroke-width="1" id="E1-MJSZ4-23B7" d="M742 -871Q740 -873 737 -876T733 -880T730 -882T724 -884T714 -885H702L222 569L180 484Q138 399 137 399Q131 404 124 412L111 425L265 736L702 -586V168L703 922Q713 935 722 935Q734 935 742 920V-871Z"></path>
|
|
19
|
+
<path stroke-width="1" id="E1-MJSZ4-E000" d="M722 -14H720Q708 -14 702 0V306L703 612Q713 625 722 625Q734 625 742 610V0Q734 -14 724 -14H722Z"></path>
|
|
20
|
+
</defs>
|
|
21
|
+
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
|
22
|
+
<use xlink:href="#E1-MJMATHI-3C3" x="0" y="0"></use>
|
|
23
|
+
<use xlink:href="#E1-MJMAIN-3D" x="850" y="0"></use>
|
|
24
|
+
<g transform="translate(1906,0)">
|
|
25
|
+
<g transform="translate(0,1962)">
|
|
26
|
+
<use xlink:href="#E1-MJSZ4-E001" x="0" y="-606"></use>
|
|
27
|
+
<g transform="translate(0,-1376.566505555847) scale(1,1.2868474529646121)">
|
|
28
|
+
<use xlink:href="#E1-MJSZ4-E000"></use>
|
|
29
|
+
</g>
|
|
30
|
+
<use xlink:href="#E1-MJSZ4-23B7" x="0" y="-2282"></use>
|
|
31
|
+
</g>
|
|
32
|
+
<rect stroke="none" width="6923" height="60" x="1056" y="1902"></rect>
|
|
33
|
+
<g transform="translate(1056,0)">
|
|
34
|
+
<g transform="translate(120,0)">
|
|
35
|
+
<rect stroke="none" width="1008" height="60" x="0" y="220"></rect>
|
|
36
|
+
<use xlink:href="#E1-MJMAIN-31" x="254" y="676"></use>
|
|
37
|
+
<use xlink:href="#E1-MJMATHI-4E" x="60" y="-704"></use>
|
|
38
|
+
</g>
|
|
39
|
+
<g transform="translate(1415,0)">
|
|
40
|
+
<use xlink:href="#E1-MJSZ2-2211" x="44" y="0"></use>
|
|
41
|
+
<g transform="translate(191,-1090)">
|
|
42
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="0" y="0"></use>
|
|
43
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-3D" x="345" y="0"></use>
|
|
44
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-30" x="1124" y="0"></use>
|
|
45
|
+
</g>
|
|
46
|
+
<g transform="translate(0,1151)">
|
|
47
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-4E" x="0" y="0"></use>
|
|
48
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2212" x="888" y="0"></use>
|
|
49
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1667" y="0"></use>
|
|
50
|
+
</g>
|
|
51
|
+
</g>
|
|
52
|
+
<use xlink:href="#E1-MJMAIN-28" x="2947" y="0"></use>
|
|
53
|
+
<g transform="translate(3337,0)">
|
|
54
|
+
<use xlink:href="#E1-MJMATHI-78" x="0" y="0"></use>
|
|
55
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="809" y="-213"></use>
|
|
56
|
+
</g>
|
|
57
|
+
<use xlink:href="#E1-MJMAIN-2212" x="4476" y="0"></use>
|
|
58
|
+
<use xlink:href="#E1-MJMATHI-3BC" x="5477" y="0"></use>
|
|
59
|
+
<g transform="translate(6080,0)">
|
|
60
|
+
<use xlink:href="#E1-MJMAIN-29" x="0" y="0"></use>
|
|
61
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-32" x="550" y="583"></use>
|
|
62
|
+
</g>
|
|
63
|
+
</g>
|
|
64
|
+
</g>
|
|
65
|
+
</g>
|
|
66
|
+
</svg>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="12.918ex" height="7.343ex" style="vertical-align: -3.005ex;" viewBox="0 -1867.7 5561.7 3161.4" role="img" focusable="false" xmlns="http://www.w3.org/2000/svg" aria-labelledby="MathJax-SVG-1-Title">
|
|
2
|
+
<title id="MathJax-SVG-1-Title">x overbar equals StartFraction 1 Over n EndFraction sigma-summation Underscript i equals 0 Overscript n minus 1 Endscripts x Subscript i</title>
|
|
3
|
+
<defs aria-hidden="true">
|
|
4
|
+
<path stroke-width="1" id="E1-MJMATHI-78" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path>
|
|
5
|
+
<path stroke-width="1" id="E1-MJMAIN-AF" d="M69 544V590H430V544H69Z"></path>
|
|
6
|
+
<path stroke-width="1" id="E1-MJMAIN-3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path>
|
|
7
|
+
<path stroke-width="1" id="E1-MJMAIN-31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path>
|
|
8
|
+
<path stroke-width="1" id="E1-MJMATHI-6E" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path>
|
|
9
|
+
<path stroke-width="1" id="E1-MJSZ2-2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path>
|
|
10
|
+
<path stroke-width="1" id="E1-MJMATHI-69" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path>
|
|
11
|
+
<path stroke-width="1" id="E1-MJMAIN-30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path>
|
|
12
|
+
<path stroke-width="1" id="E1-MJMAIN-2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path>
|
|
13
|
+
</defs>
|
|
14
|
+
<g stroke="currentColor" fill="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)" aria-hidden="true">
|
|
15
|
+
<use xlink:href="#E1-MJMATHI-78" x="0" y="0"></use>
|
|
16
|
+
<use xlink:href="#E1-MJMAIN-AF" x="63" y="7"></use>
|
|
17
|
+
<use xlink:href="#E1-MJMAIN-3D" x="850" y="0"></use>
|
|
18
|
+
<g transform="translate(1628,0)">
|
|
19
|
+
<g transform="translate(397,0)">
|
|
20
|
+
<rect stroke="none" width="720" height="60" x="0" y="220"></rect>
|
|
21
|
+
<use xlink:href="#E1-MJMAIN-31" x="110" y="676"></use>
|
|
22
|
+
<use xlink:href="#E1-MJMATHI-6E" x="60" y="-686"></use>
|
|
23
|
+
</g>
|
|
24
|
+
</g>
|
|
25
|
+
<g transform="translate(3033,0)">
|
|
26
|
+
<use xlink:href="#E1-MJSZ2-2211" x="0" y="0"></use>
|
|
27
|
+
<g transform="translate(147,-1090)">
|
|
28
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="0" y="0"></use>
|
|
29
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-3D" x="345" y="0"></use>
|
|
30
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-30" x="1124" y="0"></use>
|
|
31
|
+
</g>
|
|
32
|
+
<g transform="translate(57,1151)">
|
|
33
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-6E" x="0" y="0"></use>
|
|
34
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-2212" x="600" y="0"></use>
|
|
35
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMAIN-31" x="1379" y="0"></use>
|
|
36
|
+
</g>
|
|
37
|
+
</g>
|
|
38
|
+
<g transform="translate(4644,0)">
|
|
39
|
+
<use xlink:href="#E1-MJMATHI-78" x="0" y="0"></use>
|
|
40
|
+
<use transform="scale(0.707)" xlink:href="#E1-MJMATHI-69" x="809" y="-213"></use>
|
|
41
|
+
</g>
|
|
42
|
+
</g>
|
|
43
|
+
</svg>
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @license Apache-2.0
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2020 The Stdlib Authors.
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
// TypeScript Version: 4.1
|
|
20
|
+
|
|
21
|
+
/// <reference types="@stdlib/types"/>
|
|
22
|
+
|
|
23
|
+
import { NumericArray, Collection, AccessorArrayLike } from '@stdlib/types/array';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Input array.
|
|
27
|
+
*/
|
|
28
|
+
type InputArray = NumericArray | Collection<number> | AccessorArrayLike<number>;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Interface describing `nanstdevch`.
|
|
32
|
+
*/
|
|
33
|
+
interface Routine {
|
|
34
|
+
/**
|
|
35
|
+
* Computes the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.
|
|
36
|
+
*
|
|
37
|
+
* @param N - number of indexed elements
|
|
38
|
+
* @param correction - degrees of freedom adjustment
|
|
39
|
+
* @param x - input array
|
|
40
|
+
* @param strideX - stride length
|
|
41
|
+
* @returns standard deviation
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
45
|
+
*
|
|
46
|
+
* var v = nanstdevch( x.length, 1, x, 1 );
|
|
47
|
+
* // returns ~2.0817
|
|
48
|
+
*/
|
|
49
|
+
( N: number, correction: number, x: InputArray, strideX: number ): number;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Computes the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm and alternative indexing semantics.
|
|
53
|
+
*
|
|
54
|
+
* @param N - number of indexed elements
|
|
55
|
+
* @param correction - degrees of freedom adjustment
|
|
56
|
+
* @param x - input array
|
|
57
|
+
* @param strideX - stride length
|
|
58
|
+
* @param offsetX - starting index
|
|
59
|
+
* @returns standard deviation
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
63
|
+
*
|
|
64
|
+
* var v = nanstdevch.ndarray( x.length, 1, x, 1, 0 );
|
|
65
|
+
* // returns ~2.0817
|
|
66
|
+
*/
|
|
67
|
+
ndarray( N: number, correction: number, x: InputArray, strideX: number, offsetX: number ): number;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Computes the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.
|
|
72
|
+
*
|
|
73
|
+
* @param N - number of indexed elements
|
|
74
|
+
* @param correction - degrees of freedom adjustment
|
|
75
|
+
* @param x - input array
|
|
76
|
+
* @param strideX - stride length
|
|
77
|
+
* @returns standard deviation
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
81
|
+
*
|
|
82
|
+
* var v = nanstdevch( x.length, 1, x, 1 );
|
|
83
|
+
* // returns ~2.0817
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
87
|
+
*
|
|
88
|
+
* var v = nanstdevch.ndarray( x.length, 1, x, 1, 0 );
|
|
89
|
+
* // returns ~2.0817
|
|
90
|
+
*/
|
|
91
|
+
declare var nanstdevch: Routine;
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
// EXPORTS //
|
|
95
|
+
|
|
96
|
+
export = nanstdevch;
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Apache-2.0
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2020 The Stdlib Authors.
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
'use strict';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Compute the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.
|
|
23
|
+
*
|
|
24
|
+
* @module @stdlib/stats-strided-nanstdevch
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* var nanstdevch = require( '@stdlib/stats-strided-nanstdevch' );
|
|
28
|
+
*
|
|
29
|
+
* var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
30
|
+
*
|
|
31
|
+
* var v = nanstdevch( x.length, 1, x, 1 );
|
|
32
|
+
* // returns ~2.0817
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* var nanstdevch = require( '@stdlib/stats-strided-nanstdevch' );
|
|
36
|
+
*
|
|
37
|
+
* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];
|
|
38
|
+
*
|
|
39
|
+
* var v = nanstdevch.ndarray( 5, 1, x, 2, 1 );
|
|
40
|
+
* // returns 2.5
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
// MODULES //
|
|
44
|
+
|
|
45
|
+
var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );
|
|
46
|
+
var main = require( './main.js' );
|
|
47
|
+
var ndarray = require( './ndarray.js' );
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
// MAIN //
|
|
51
|
+
|
|
52
|
+
setReadOnly( main, 'ndarray', ndarray );
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// EXPORTS //
|
|
56
|
+
|
|
57
|
+
module.exports = main;
|
package/lib/main.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Apache-2.0
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2020 The Stdlib Authors.
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
'use strict';
|
|
20
|
+
|
|
21
|
+
// MODULES //
|
|
22
|
+
|
|
23
|
+
var stride2offset = require( '@stdlib/strided-base-stride2offset' );
|
|
24
|
+
var ndarray = require( './ndarray.js' );
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// MAIN //
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Computes the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.
|
|
31
|
+
*
|
|
32
|
+
* @param {PositiveInteger} N - number of indexed elements
|
|
33
|
+
* @param {number} correction - degrees of freedom adjustment
|
|
34
|
+
* @param {NumericArray} x - input array
|
|
35
|
+
* @param {integer} strideX - stride length
|
|
36
|
+
* @returns {number} standard deviation
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* var x = [ 1.0, -2.0, NaN, 2.0 ];
|
|
40
|
+
*
|
|
41
|
+
* var v = nanstdevch( x.length, 1, x, 1 );
|
|
42
|
+
* // returns ~2.0817
|
|
43
|
+
*/
|
|
44
|
+
function nanstdevch( N, correction, x, strideX ) {
|
|
45
|
+
return ndarray( N, correction, x, strideX, stride2offset( N, strideX ) );
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
// EXPORTS //
|
|
50
|
+
|
|
51
|
+
module.exports = nanstdevch;
|
package/lib/ndarray.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Apache-2.0
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2020 The Stdlib Authors.
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
'use strict';
|
|
20
|
+
|
|
21
|
+
// MODULES //
|
|
22
|
+
|
|
23
|
+
var nanvariancech = require( '@stdlib/stats-strided-nanvariancech' ).ndarray;
|
|
24
|
+
var sqrt = require( '@stdlib/math-base-special-sqrt' );
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
// MAIN //
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Computes the standard deviation of a strided array ignoring `NaN` values and using a one-pass trial mean algorithm.
|
|
31
|
+
*
|
|
32
|
+
* @param {PositiveInteger} N - number of indexed elements
|
|
33
|
+
* @param {number} correction - degrees of freedom adjustment
|
|
34
|
+
* @param {NumericArray} x - input array
|
|
35
|
+
* @param {integer} strideX - stride length
|
|
36
|
+
* @param {NonNegativeInteger} offsetX - starting index
|
|
37
|
+
* @returns {number} standard deviation
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* var x = [ 2.0, 1.0, 2.0, -2.0, -2.0, 2.0, 3.0, 4.0, NaN, NaN ];
|
|
41
|
+
*
|
|
42
|
+
* var v = nanstdevch( 5, 1, x, 2, 1 );
|
|
43
|
+
* // returns 2.5
|
|
44
|
+
*/
|
|
45
|
+
function nanstdevch( N, correction, x, strideX, offsetX ) {
|
|
46
|
+
return sqrt( nanvariancech( N, correction, x, strideX, offsetX ) );
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
// EXPORTS //
|
|
51
|
+
|
|
52
|
+
module.exports = nanstdevch;
|
package/package.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@stdlib/stats-strided-nanstdevch",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Calculate the standard deviation of a strided array ignoring NaN values and using a one-pass trial mean algorithm.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "The Stdlib Authors",
|
|
8
|
+
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
|
|
9
|
+
},
|
|
10
|
+
"contributors": [
|
|
11
|
+
{
|
|
12
|
+
"name": "The Stdlib Authors",
|
|
13
|
+
"url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
"main": "./lib",
|
|
17
|
+
"directories": {
|
|
18
|
+
"doc": "./docs",
|
|
19
|
+
"lib": "./lib",
|
|
20
|
+
"dist": "./dist"
|
|
21
|
+
},
|
|
22
|
+
"types": "./docs/types",
|
|
23
|
+
"scripts": {},
|
|
24
|
+
"homepage": "https://stdlib.io",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git://github.com/stdlib-js/stats-strided-nanstdevch.git"
|
|
28
|
+
},
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/stdlib-js/stdlib/issues"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@stdlib/math-base-special-sqrt": "^0.2.2",
|
|
34
|
+
"@stdlib/stats-strided-nanvariancech": "github:stdlib-js/stats-strided-nanvariancech#main",
|
|
35
|
+
"@stdlib/strided-base-stride2offset": "^0.1.0",
|
|
36
|
+
"@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {},
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=0.10.0",
|
|
41
|
+
"npm": ">2.7.0"
|
|
42
|
+
},
|
|
43
|
+
"os": [
|
|
44
|
+
"aix",
|
|
45
|
+
"darwin",
|
|
46
|
+
"freebsd",
|
|
47
|
+
"linux",
|
|
48
|
+
"macos",
|
|
49
|
+
"openbsd",
|
|
50
|
+
"sunos",
|
|
51
|
+
"win32",
|
|
52
|
+
"windows"
|
|
53
|
+
],
|
|
54
|
+
"keywords": [
|
|
55
|
+
"stdlib",
|
|
56
|
+
"stdmath",
|
|
57
|
+
"statistics",
|
|
58
|
+
"stats",
|
|
59
|
+
"mathematics",
|
|
60
|
+
"math",
|
|
61
|
+
"variance",
|
|
62
|
+
"var",
|
|
63
|
+
"deviation",
|
|
64
|
+
"dispersion",
|
|
65
|
+
"sample standard deviation",
|
|
66
|
+
"unbiased",
|
|
67
|
+
"stdev",
|
|
68
|
+
"std",
|
|
69
|
+
"standard deviation",
|
|
70
|
+
"strided",
|
|
71
|
+
"strided array",
|
|
72
|
+
"typed",
|
|
73
|
+
"array"
|
|
74
|
+
],
|
|
75
|
+
"funding": {
|
|
76
|
+
"type": "opencollective",
|
|
77
|
+
"url": "https://opencollective.com/stdlib"
|
|
78
|
+
}
|
|
79
|
+
}
|