@@ -161,87 +161,45 @@ end
161
161
162
162
# #### General central moment
163
163
function _moment2 (v:: AbstractArray{<:Real} , m:: Real ; corrected= false )
164
- n = length (v)
165
- s = 0.0
166
- for i = 1 : n
167
- @inbounds z = v[i] - m
168
- s += z * z
169
- end
170
- varcorrection (n, corrected) * s
164
+ s = sum (x-> abs2 (x- m), v)
165
+ return varcorrection (length (v), corrected) * s
171
166
end
172
167
173
168
function _moment2 (v:: AbstractArray{<:Real} , wv:: AbstractWeights , m:: Real ; corrected= false )
174
- n = length (v)
175
- s = 0.0
176
- for i = 1 : n
177
- @inbounds z = v[i] - m
178
- @inbounds s += (z * z) * wv[i]
179
- end
180
-
181
- varcorrection (wv, corrected) * s
169
+ s = sum (i -> (@inbounds abs2 (v[i] - m) * wv[i]), eachindex (v))
170
+ return varcorrection (wv, corrected) * s
182
171
end
183
172
184
173
function _moment3 (v:: AbstractArray{<:Real} , m:: Real )
185
- n = length (v)
186
- s = 0.0
187
- for i = 1 : n
188
- @inbounds z = v[i] - m
189
- s += z * z * z
190
- end
191
- s / n
174
+ s = sum (x-> (x- m)^ 3 , v)
175
+ return s/ length (v)
192
176
end
193
177
194
178
function _moment3 (v:: AbstractArray{<:Real} , wv:: AbstractWeights , m:: Real )
195
- n = length (v)
196
- s = 0.0
197
- for i = 1 : n
198
- @inbounds z = v[i] - m
199
- @inbounds s += (z * z * z) * wv[i]
200
- end
201
- s / sum (wv)
179
+ s = sum (i -> (@inbounds (z = (v[i] - m); z * z * z * wv[i])), eachindex (v))
180
+ return s/ sum (wv)
202
181
end
203
182
204
183
function _moment4 (v:: AbstractArray{<:Real} , m:: Real )
205
- n = length (v)
206
- s = 0.0
207
- for i = 1 : n
208
- @inbounds z = v[i] - m
209
- s += abs2 (z * z)
210
- end
211
- s / n
184
+ s = sum (x-> (z = x- m; abs2 (z* z)), v)
185
+ return s/ length (v)
212
186
end
213
187
214
188
function _moment4 (v:: AbstractArray{<:Real} , wv:: AbstractWeights , m:: Real )
215
- n = length (v)
216
- s = 0.0
217
- for i = 1 : n
218
- @inbounds z = v[i] - m
219
- @inbounds s += abs2 (z * z) * wv[i]
220
- end
221
- s / sum (wv)
189
+ s = sum (i -> (@inbounds (z = (v[i] - m); abs2 (z * z) * wv[i])), eachindex (v))
190
+ return s/ sum (wv)
222
191
end
223
192
224
193
function _momentk (v:: AbstractArray{<:Real} , k:: Int , m:: Real )
225
- n = length (v)
226
- s = 0.0
227
- for i = 1 : n
228
- @inbounds z = v[i] - m
229
- s += (z ^ k)
230
- end
231
- s / n
194
+ s = sum (x -> (x - m)^ k, v)
195
+ return s/ length (v)
232
196
end
233
197
234
198
function _momentk (v:: AbstractArray{<:Real} , k:: Int , wv:: AbstractWeights , m:: Real )
235
- n = length (v)
236
- s = 0.0
237
- for i = 1 : n
238
- @inbounds z = v[i] - m
239
- @inbounds s += (z ^ k) * wv[i]
240
- end
241
- s / sum (wv)
199
+ s = sum (i -> (@inbounds (z = (v[i] - m); z^ k * wv[i])), eachindex (v))
200
+ return s/ sum (wv)
242
201
end
243
202
244
-
245
203
"""
246
204
moment(v, k, [wv::AbstractWeights], m=mean(v))
247
205
0 commit comments