@@ -161,87 +161,57 @@ 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, init= zero (m))
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), init= zero (m))
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, init= zero (m))
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 (
180
+ i -> (@inbounds (z = (v[i] - m); z * z * z * wv[i])),
181
+ eachindex (v),
182
+ init= zero (m),
183
+ )
184
+ return s/ sum (wv)
202
185
end
203
186
204
187
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
188
+ s = sum (x-> (z = x- m; abs2 (z* z)), v, init= zero (m))
189
+ return s/ length (v)
212
190
end
213
191
214
192
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)
193
+ s = sum (
194
+ i -> (@inbounds (z = (v[i] - m); abs2 (z * z) * wv[i])),
195
+ eachindex (v),
196
+ init= zero (m),
197
+ )
198
+ return s/ sum (wv)
222
199
end
223
200
224
201
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
202
+ s = sum (x -> (x - m)^ k, v, init= zero (m))
203
+ return s/ length (v)
232
204
end
233
205
234
206
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)
207
+ s = sum (
208
+ i -> (@inbounds (z = (v[i] - m); z^ k * wv[i])),
209
+ eachindex (v),
210
+ init= zero (m),
211
+ )
212
+ return s/ sum (wv)
242
213
end
243
214
244
-
245
215
"""
246
216
moment(v, k, [wv::AbstractWeights], m=mean(v))
247
217
0 commit comments