lakutata 2.0.81 → 2.0.82
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/orm.cjs +731 -731
- package/orm.mjs +835 -835
- package/package.json +1 -1
- package/src/components/Database.cjs +2 -2
- package/src/components/Database.mjs +6 -6
- package/src/components/cacher/Cacher.cjs +129 -129
- package/src/components/cacher/Cacher.mjs +117 -117
- package/src/components/cacher/adapters/CreateFileCacheAdapter.cjs +94 -94
- package/src/components/cacher/adapters/CreateFileCacheAdapter.mjs +100 -100
- package/src/components/cacher/adapters/CreateMemcacheCacheAdapter.cjs +12 -12
- package/src/components/cacher/adapters/CreateMemcacheCacheAdapter.mjs +11 -11
- package/src/components/cacher/adapters/CreateMongoCacheAdapter.cjs +16 -16
- package/src/components/cacher/adapters/CreateMongoCacheAdapter.mjs +14 -14
- package/src/components/cacher/adapters/CreateMysqlCacheAdapter.cjs +11 -11
- package/src/components/cacher/adapters/CreateMysqlCacheAdapter.mjs +11 -11
- package/src/components/cacher/adapters/CreatePostgresCacheAdapter.cjs +12 -12
- package/src/components/cacher/adapters/CreatePostgresCacheAdapter.mjs +13 -13
- package/src/components/cacher/adapters/CreateRedisCacheAdapter.cjs +2 -2
- package/src/components/cacher/adapters/CreateRedisCacheAdapter.mjs +2 -2
- package/src/components/cacher/adapters/CreateSqliteCacheAdapter.cjs +10 -10
- package/src/components/cacher/adapters/CreateSqliteCacheAdapter.mjs +10 -10
- package/src/components/cacher/lib/IsDriverPackageInstalled.cjs +2 -2
- package/src/components/cacher/lib/IsDriverPackageInstalled.mjs +5 -5
- package/src/components/docker/ConnectionOptionsBuilder.cjs +10 -10
- package/src/components/docker/ConnectionOptionsBuilder.mjs +6 -6
- package/src/components/docker/Docker.cjs +1687 -1687
- package/src/components/docker/Docker.mjs +1563 -1563
- package/src/components/docker/lib/ParseEnvToRecord.cjs +2 -2
- package/src/components/docker/lib/ParseEnvToRecord.mjs +12 -12
- package/src/components/docker/lib/ParseRepositoryTag.cjs +9 -9
- package/src/components/docker/lib/ParseRepositoryTag.mjs +11 -11
- package/src/components/entrypoint/Entrypoint.cjs +1789 -1789
- package/src/components/entrypoint/Entrypoint.mjs +1632 -1632
- package/src/components/monitor/AliveMonitor.cjs +2 -2
- package/src/components/monitor/AliveMonitor.mjs +2 -2
- package/src/components/monitor/MemoryMonitor.cjs +3 -3
- package/src/decorators/asst/After.cjs +3 -3
- package/src/decorators/asst/After.mjs +2 -2
- package/src/decorators/asst/Before.cjs +2 -2
- package/src/decorators/asst/Before.mjs +4 -4
- package/src/decorators/ctrl/CLIAction.cjs +2 -2
- package/src/decorators/ctrl/CLIAction.mjs +7 -7
- package/src/decorators/ctrl/HTTPAction.cjs +6 -6
- package/src/decorators/ctrl/HTTPAction.mjs +4 -4
- package/src/decorators/ctrl/ServiceAction.cjs +3 -3
- package/src/decorators/ctrl/ServiceAction.mjs +4 -4
- package/src/decorators/ctrl/http/DELETE.cjs +2 -2
- package/src/decorators/ctrl/http/DELETE.mjs +2 -2
- package/src/decorators/ctrl/http/GET.cjs +2 -2
- package/src/decorators/ctrl/http/GET.mjs +2 -2
- package/src/decorators/ctrl/http/HEAD.cjs +2 -2
- package/src/decorators/ctrl/http/HEAD.mjs +2 -2
- package/src/decorators/ctrl/http/OPTIONS.cjs +2 -2
- package/src/decorators/ctrl/http/OPTIONS.mjs +2 -2
- package/src/decorators/ctrl/http/PATCH.cjs +2 -2
- package/src/decorators/ctrl/http/PATCH.mjs +2 -2
- package/src/decorators/ctrl/http/POST.cjs +2 -2
- package/src/decorators/ctrl/http/POST.mjs +2 -2
- package/src/decorators/ctrl/http/PUT.cjs +2 -2
- package/src/decorators/ctrl/http/PUT.mjs +2 -2
- package/src/decorators/di/Autoload.cjs +2 -2
- package/src/decorators/di/Autoload.mjs +2 -2
- package/src/decorators/di/Configurable.cjs +3 -3
- package/src/decorators/di/Configurable.mjs +2 -2
- package/src/decorators/di/Inject.cjs +6 -6
- package/src/decorators/di/Inject.mjs +11 -11
- package/src/decorators/di/Lifetime.cjs +18 -18
- package/src/decorators/di/Lifetime.mjs +13 -13
- package/src/decorators/dto/Accept.cjs +3 -3
- package/src/decorators/dto/Accept.mjs +2 -2
- package/src/decorators/dto/Expect.cjs +2 -2
- package/src/decorators/dto/Expect.mjs +3 -3
- package/src/decorators/dto/IndexSignature.cjs +2 -2
- package/src/decorators/dto/IndexSignature.mjs +3 -3
- package/src/decorators/dto/Return.cjs +3 -3
- package/src/decorators/dto/Return.mjs +2 -2
- package/src/lib/base/EventEmitter.cjs +238 -238
- package/src/lib/base/EventEmitter.mjs +221 -221
- package/src/lib/base/async-constructor/Append.cjs +11 -11
- package/src/lib/base/async-constructor/Append.mjs +7 -7
- package/src/lib/base/internal/BasicInfo.cjs +10 -10
- package/src/lib/base/internal/BasicInfo.mjs +9 -9
- package/src/lib/base/internal/CamelCase.cjs +4 -4
- package/src/lib/base/internal/CamelCase.mjs +11 -11
- package/src/lib/base/internal/ConfigurableRecordsInjection.cjs +19 -19
- package/src/lib/base/internal/ConfigurableRecordsInjection.mjs +18 -18
- package/src/lib/base/internal/ConstructorSymbol.cjs +10 -10
- package/src/lib/base/internal/ConstructorSymbol.mjs +8 -8
- package/src/lib/base/internal/ControllerEntrypoint.cjs +65 -65
- package/src/lib/base/internal/ControllerEntrypoint.mjs +36 -36
- package/src/lib/base/internal/DataValidator.cjs +70 -70
- package/src/lib/base/internal/DataValidator.mjs +137 -137
- package/src/lib/base/internal/GetActionDTOAndOptions.cjs +9 -9
- package/src/lib/base/internal/GetActionDTOAndOptions.mjs +10 -10
- package/src/lib/base/internal/IEEE754.cjs +74 -74
- package/src/lib/base/internal/IEEE754.mjs +70 -70
- package/src/lib/base/internal/MethodAssistantFunction.cjs +28 -28
- package/src/lib/base/internal/MethodAssistantFunction.mjs +38 -38
- package/src/lib/base/internal/MethodValidation.cjs +25 -25
- package/src/lib/base/internal/MethodValidation.mjs +20 -20
- package/src/lib/base/internal/ObjectConfiguration.cjs +10 -10
- package/src/lib/base/internal/ObjectConfiguration.mjs +15 -15
- package/src/lib/base/internal/ObjectContainer.cjs +7 -7
- package/src/lib/base/internal/ObjectContainer.mjs +6 -6
- package/src/lib/base/internal/ObjectInjection.cjs +16 -16
- package/src/lib/base/internal/ObjectInjection.mjs +13 -13
- package/src/lib/base/internal/ObjectLifetime.cjs +10 -10
- package/src/lib/base/internal/ObjectLifetime.mjs +9 -9
- package/src/lib/base/internal/ObjectWeakRefs.cjs +11 -11
- package/src/lib/base/internal/ObjectWeakRefs.mjs +9 -9
- package/src/lib/base/internal/PatternManager.cjs +235 -235
- package/src/lib/base/internal/PatternManager.mjs +233 -233
- package/src/lib/base/internal/StringifyPattern.cjs +26 -26
- package/src/lib/base/internal/StringifyPattern.mjs +26 -26
- package/src/lib/base/internal/ThrowWarning.cjs +2 -2
- package/src/lib/base/internal/ThrowWarning.mjs +2 -2
- package/src/lib/core/Alias.cjs +5 -5
- package/src/lib/core/Application.cjs +57 -57
- package/src/lib/core/Application.mjs +63 -63
- package/src/lib/helpers/ArrayToSet.cjs +2 -2
- package/src/lib/helpers/ArrayToSet.mjs +3 -3
- package/src/lib/helpers/As.cjs +2 -2
- package/src/lib/helpers/As.mjs +2 -2
- package/src/lib/helpers/ConvertArrayLikeToIterable.cjs +3 -3
- package/src/lib/helpers/ConvertArrayLikeToIterable.mjs +3 -3
- package/src/lib/helpers/ConvertArrayLikeToStream.cjs +2 -2
- package/src/lib/helpers/ConvertArrayLikeToStream.mjs +2 -2
- package/src/lib/helpers/Delay.cjs +2 -2
- package/src/lib/helpers/Delay.mjs +2 -2
- package/src/lib/helpers/DevNull.cjs +2 -2
- package/src/lib/helpers/DevNull.mjs +2 -2
- package/src/lib/helpers/GetObjectNestingDepth.cjs +12 -12
- package/src/lib/helpers/GetObjectNestingDepth.mjs +11 -11
- package/src/lib/helpers/GetObjectPropertyPaths.cjs +7 -7
- package/src/lib/helpers/GetObjectPropertyPaths.mjs +9 -9
- package/src/lib/helpers/Glob.cjs +890 -890
- package/src/lib/helpers/Glob.mjs +889 -889
- package/src/lib/helpers/GraceExit.cjs +3 -3
- package/src/lib/helpers/GraceExit.mjs +7 -7
- package/src/lib/helpers/HexToIEEE754.cjs +4 -4
- package/src/lib/helpers/HexToIEEE754.mjs +2 -2
- package/src/lib/helpers/HexToSigned.cjs +5 -5
- package/src/lib/helpers/HexToSigned.mjs +4 -4
- package/src/lib/helpers/HexToUnsigned.cjs +2 -2
- package/src/lib/helpers/HexToUnsigned.mjs +2 -2
- package/src/lib/helpers/IEEE754ToHex.cjs +5 -5
- package/src/lib/helpers/IEEE754ToHex.mjs +5 -5
- package/src/lib/helpers/IsAbortError.cjs +2 -2
- package/src/lib/helpers/IsAbortError.mjs +3 -3
- package/src/lib/helpers/IsEmptyObject.cjs +3 -3
- package/src/lib/helpers/IsEmptyObject.mjs +3 -3
- package/src/lib/helpers/IsExists.cjs +5 -5
- package/src/lib/helpers/IsExists.mjs +4 -4
- package/src/lib/helpers/IsHtml.cjs +23 -7
- package/src/lib/helpers/IsHtml.mjs +23 -7
- package/src/lib/helpers/IsNativeFunction.cjs +2 -2
- package/src/lib/helpers/IsNativeFunction.mjs +2 -2
- package/src/lib/helpers/IsPath.cjs +2 -2
- package/src/lib/helpers/IsPath.mjs +5 -5
- package/src/lib/helpers/IsPromise.cjs +2 -2
- package/src/lib/helpers/IsPromise.mjs +2 -2
- package/src/lib/helpers/IsPromiseLike.cjs +5 -5
- package/src/lib/helpers/IsPromiseLike.mjs +6 -6
- package/src/lib/helpers/IsXML.cjs +1502 -1650
- package/src/lib/helpers/IsXML.mjs +1500 -1648
- package/src/lib/helpers/MD5.cjs +2 -2
- package/src/lib/helpers/MD5.mjs +2 -2
- package/src/lib/helpers/MergeArray.cjs +3 -3
- package/src/lib/helpers/MergeArray.mjs +3 -3
- package/src/lib/helpers/MergeMap.cjs +3 -3
- package/src/lib/helpers/MergeMap.mjs +3 -3
- package/src/lib/helpers/MergeSet.cjs +2 -2
- package/src/lib/helpers/MergeSet.mjs +3 -3
- package/src/lib/helpers/NoCase.cjs +27 -27
- package/src/lib/helpers/NoCase.mjs +24 -24
- package/src/lib/helpers/NonceStr.cjs +2 -2
- package/src/lib/helpers/NonceStr.mjs +2 -2
- package/src/lib/helpers/ObjectConstructor.cjs +2 -2
- package/src/lib/helpers/ObjectConstructor.mjs +4 -4
- package/src/lib/helpers/ObjectHash.cjs +234 -234
- package/src/lib/helpers/ObjectHash.mjs +227 -227
- package/src/lib/helpers/ObjectParentConstructor.cjs +2 -2
- package/src/lib/helpers/ObjectParentConstructor.mjs +5 -5
- package/src/lib/helpers/ObjectParentConstructors.cjs +6 -6
- package/src/lib/helpers/ObjectParentConstructors.mjs +2 -2
- package/src/lib/helpers/ObjectPrototype.cjs +2 -2
- package/src/lib/helpers/ObjectPrototype.mjs +2 -2
- package/src/lib/helpers/ObjectToMap.cjs +2 -2
- package/src/lib/helpers/ObjectToMap.mjs +3 -3
- package/src/lib/helpers/Paginator.cjs +2 -2
- package/src/lib/helpers/Paginator.mjs +6 -6
- package/src/lib/helpers/RandomString.cjs +82 -82
- package/src/lib/helpers/RandomString.mjs +67 -67
- package/src/lib/helpers/SHA1.cjs +2 -2
- package/src/lib/helpers/SHA1.mjs +2 -2
- package/src/lib/helpers/SHA256.cjs +2 -2
- package/src/lib/helpers/SHA256.mjs +2 -2
- package/src/lib/helpers/SetToArray.cjs +2 -2
- package/src/lib/helpers/SetToArray.mjs +2 -2
- package/src/lib/helpers/SignedToHex.cjs +4 -4
- package/src/lib/helpers/SignedToHex.mjs +4 -4
- package/src/lib/helpers/SortArray.cjs +16 -16
- package/src/lib/helpers/SortArray.mjs +15 -15
- package/src/lib/helpers/SortKeys.cjs +41 -41
- package/src/lib/helpers/SortKeys.mjs +41 -41
- package/src/lib/helpers/SortObject.cjs +2 -2
- package/src/lib/helpers/SortObject.mjs +2 -2
- package/src/lib/helpers/Templating.cjs +25 -25
- package/src/lib/helpers/Templating.mjs +25 -25
- package/src/lib/helpers/URLBuilder.cjs +234 -234
- package/src/lib/helpers/URLBuilder.mjs +231 -231
- package/src/lib/helpers/UniqueArray.cjs +3 -3
- package/src/lib/helpers/UniqueArray.mjs +2 -2
- package/src/lib/helpers/UnsignedToHex.cjs +3 -3
- package/src/lib/helpers/UnsignedToHex.mjs +3 -3
- package/src/lib/ioc/DependencyInjectionContainer.cjs +106 -106
- package/src/lib/ioc/DependencyInjectionContainer.mjs +122 -122
- package/src/lib/ioc/FunctionTokenizer.cjs +115 -115
- package/src/lib/ioc/FunctionTokenizer.mjs +102 -102
- package/src/lib/ioc/Lifetime.cjs +5 -5
- package/src/lib/ioc/Lifetime.mjs +5 -5
- package/src/lib/ioc/ListModules.cjs +3359 -3359
- package/src/lib/ioc/ListModules.mjs +2274 -2274
- package/src/lib/ioc/LoadModules.cjs +56 -56
- package/src/lib/ioc/LoadModules.mjs +69 -69
- package/src/lib/ioc/ParamParser.cjs +30 -30
- package/src/lib/ioc/ParamParser.mjs +41 -41
- package/src/lib/ioc/Resolvers.cjs +87 -87
- package/src/lib/ioc/Resolvers.mjs +109 -109
- package/src/lib/ioc/Utils.cjs +12 -12
- package/src/lib/ioc/Utils.mjs +18 -18
- package/src/lib/validation/VLD.cjs +1124 -1124
- package/src/lib/validation/VLD.mjs +1113 -1113
- package/src/providers/Database.cjs +2 -2
- package/src/providers/Database.mjs +7 -7
- package/src/providers/PasswordHash.cjs +330 -330
- package/src/providers/PasswordHash.mjs +397 -397
- package/vendor/Package.1.cjs +256 -256
- package/vendor/Package.1.mjs +254 -254
- package/vendor/Package.112.cjs +32208 -32208
- package/vendor/Package.112.mjs +32111 -32111
- package/vendor/Package.13.cjs +36 -36
- package/vendor/Package.13.mjs +24 -24
- package/vendor/Package.16.cjs +10312 -10312
- package/vendor/Package.16.mjs +10309 -10309
- package/vendor/Package.17.cjs +924 -924
- package/vendor/Package.17.mjs +943 -943
- package/vendor/Package.18.cjs +19 -19
- package/vendor/Package.18.mjs +21 -21
- package/vendor/Package.19.cjs +19 -19
- package/vendor/Package.19.mjs +20 -20
- package/vendor/Package.2.cjs +3913 -3913
- package/vendor/Package.2.mjs +3931 -3931
- package/vendor/Package.20.cjs +16 -16
- package/vendor/Package.20.mjs +12 -12
- package/vendor/Package.21.cjs +19 -19
- package/vendor/Package.21.mjs +17 -17
- package/vendor/Package.22.cjs +11 -11
- package/vendor/Package.22.mjs +12 -12
- package/vendor/Package.23.cjs +8 -8
- package/vendor/Package.23.mjs +12 -12
- package/vendor/Package.24.cjs +16 -16
- package/vendor/Package.24.mjs +14 -14
- package/vendor/Package.25.cjs +11 -11
- package/vendor/Package.25.mjs +12 -12
- package/vendor/Package.26.cjs +19 -19
- package/vendor/Package.26.mjs +12 -12
- package/vendor/Package.27.cjs +16 -16
- package/vendor/Package.27.mjs +6 -6
- package/vendor/Package.28.cjs +19 -19
- package/vendor/Package.28.mjs +17 -17
- package/vendor/Package.29.cjs +15 -15
- package/vendor/Package.29.mjs +13 -13
- package/vendor/Package.3.cjs +60 -60
- package/vendor/Package.3.mjs +85 -85
- package/vendor/Package.30.cjs +9 -9
- package/vendor/Package.30.mjs +9 -9
- package/vendor/Package.31.cjs +14 -14
- package/vendor/Package.31.mjs +27 -27
- package/vendor/Package.32.cjs +11 -11
- package/vendor/Package.32.mjs +11 -11
- package/vendor/Package.33.cjs +4 -4
- package/vendor/Package.33.mjs +6 -6
- package/vendor/Package.34.cjs +10 -10
- package/vendor/Package.34.mjs +23 -23
- package/vendor/Package.35.cjs +6 -6
- package/vendor/Package.35.mjs +16 -16
- package/vendor/Package.36.cjs +17 -17
- package/vendor/Package.36.mjs +21 -21
- package/vendor/Package.37.cjs +15 -15
- package/vendor/Package.37.mjs +17 -17
- package/vendor/Package.38.cjs +12 -12
- package/vendor/Package.38.mjs +16 -16
- package/vendor/Package.39.cjs +17 -17
- package/vendor/Package.39.mjs +13 -13
- package/vendor/Package.4.cjs +412 -412
- package/vendor/Package.4.mjs +537 -537
- package/vendor/Package.40.cjs +5 -5
- package/vendor/Package.40.mjs +6 -6
- package/vendor/Package.41.cjs +18 -18
- package/vendor/Package.41.mjs +17 -17
- package/vendor/Package.42.cjs +24 -24
- package/vendor/Package.42.mjs +17 -17
- package/vendor/Package.43.cjs +5 -5
- package/vendor/Package.43.mjs +19 -19
- package/vendor/Package.44.cjs +16 -16
- package/vendor/Package.44.mjs +13 -13
- package/vendor/Package.45.cjs +21 -21
- package/vendor/Package.45.mjs +22 -22
- package/vendor/Package.46.cjs +6 -6
- package/vendor/Package.46.mjs +22 -22
- package/vendor/Package.47.cjs +16 -16
- package/vendor/Package.47.mjs +29 -29
- package/vendor/Package.48.cjs +8 -8
- package/vendor/Package.48.mjs +16 -16
- package/vendor/Package.49.cjs +6 -6
- package/vendor/Package.49.mjs +20 -20
- package/vendor/Package.5.cjs +10 -10
- package/vendor/Package.5.mjs +9 -9
- package/vendor/Package.50.cjs +13 -13
- package/vendor/Package.50.mjs +14 -14
- package/vendor/Package.51.cjs +18 -18
- package/vendor/Package.51.mjs +23 -23
- package/vendor/Package.52.cjs +4 -4
- package/vendor/Package.52.mjs +5 -5
- package/vendor/Package.53.cjs +6 -6
- package/vendor/Package.53.mjs +8 -8
- package/vendor/Package.54.cjs +30 -30
- package/vendor/Package.54.mjs +29 -29
- package/vendor/Package.55.cjs +16 -16
- package/vendor/Package.55.mjs +20 -20
- package/vendor/Package.56.cjs +14 -14
- package/vendor/Package.56.mjs +18 -18
- package/vendor/Package.57.cjs +6 -6
- package/vendor/Package.57.mjs +17 -17
- package/vendor/Package.58.cjs +22 -22
- package/vendor/Package.58.mjs +19 -19
- package/vendor/Package.59.cjs +18 -18
- package/vendor/Package.59.mjs +13 -13
- package/vendor/Package.6.cjs +1739 -1739
- package/vendor/Package.6.mjs +1739 -1739
- package/vendor/Package.60.cjs +13553 -13553
- package/vendor/Package.60.mjs +13562 -13562
- package/vendor/Package.610.cjs +9 -9
- package/vendor/Package.611.cjs +39 -39
- package/vendor/Package.611.mjs +22 -22
- package/vendor/Package.612.cjs +33 -33
- package/vendor/Package.612.mjs +17 -17
- package/vendor/Package.613.cjs +62 -62
- package/vendor/Package.613.mjs +29 -29
- package/vendor/Package.62.cjs +292 -292
- package/vendor/Package.62.mjs +312 -312
- package/vendor/Package.63.cjs +354 -354
- package/vendor/Package.63.mjs +229 -229
- package/vendor/Package.64.cjs +74 -74
- package/vendor/Package.64.mjs +74 -74
- package/vendor/Package.65.cjs +1833 -1833
- package/vendor/Package.65.mjs +1656 -1656
- package/vendor/Package.66.cjs +16 -16
- package/vendor/Package.66.mjs +16 -16
- package/vendor/Package.67.cjs +87 -87
- package/vendor/Package.67.mjs +85 -85
- package/vendor/Package.68.cjs +115 -256
- package/vendor/Package.68.mjs +134 -268
- package/vendor/Package.69.cjs +8 -8
- package/vendor/Package.7.cjs +3 -3
- package/vendor/Package.7.mjs +3 -3
- package/vendor/Package.9.cjs +45 -45
- package/vendor/Package.9.mjs +79 -79
package/vendor/Package.17.cjs
CHANGED
|
@@ -1,563 +1,563 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function
|
|
4
|
-
var t;
|
|
3
|
+
function linearRegression(r) {
|
|
5
4
|
var e;
|
|
5
|
+
var t;
|
|
6
6
|
var n = r.length;
|
|
7
7
|
if (n === 1) {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
e = 0;
|
|
9
|
+
t = r[0][1];
|
|
10
10
|
} else {
|
|
11
11
|
var a = 0;
|
|
12
|
-
var o = 0;
|
|
13
12
|
var i = 0;
|
|
13
|
+
var o = 0;
|
|
14
14
|
var u = 0;
|
|
15
|
+
var s;
|
|
16
|
+
var l;
|
|
15
17
|
var f;
|
|
16
|
-
var v;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
f =
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
t = (n * u - a * o) / (n * i - a * a);
|
|
28
|
-
e = o / n - t * a / n;
|
|
18
|
+
for (var v = 0; v < n; v++) {
|
|
19
|
+
s = r[v];
|
|
20
|
+
l = s[0];
|
|
21
|
+
f = s[1];
|
|
22
|
+
a += l;
|
|
23
|
+
i += f;
|
|
24
|
+
o += l * l;
|
|
25
|
+
u += l * f;
|
|
26
|
+
}
|
|
27
|
+
e = (n * u - a * i) / (n * o - a * a);
|
|
28
|
+
t = i / n - e * a / n;
|
|
29
29
|
}
|
|
30
30
|
return {
|
|
31
|
-
m:
|
|
32
|
-
b:
|
|
31
|
+
m: e,
|
|
32
|
+
b: t
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
function
|
|
37
|
-
return function(
|
|
38
|
-
return r.b + r.m *
|
|
36
|
+
function linearRegressionLine(r) {
|
|
37
|
+
return function(e) {
|
|
38
|
+
return r.b + r.m * e;
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
function
|
|
42
|
+
function sum(r) {
|
|
43
43
|
if (r.length === 0) {
|
|
44
44
|
return 0;
|
|
45
45
|
}
|
|
46
|
-
var
|
|
47
|
-
var
|
|
46
|
+
var e = r[0];
|
|
47
|
+
var t = 0;
|
|
48
48
|
var n;
|
|
49
|
-
if (typeof
|
|
49
|
+
if (typeof e !== "number") {
|
|
50
50
|
return Number.NaN;
|
|
51
51
|
}
|
|
52
52
|
for (var a = 1; a < r.length; a++) {
|
|
53
53
|
if (typeof r[a] !== "number") {
|
|
54
54
|
return Number.NaN;
|
|
55
55
|
}
|
|
56
|
-
n =
|
|
57
|
-
if (Math.abs(
|
|
58
|
-
|
|
56
|
+
n = e + r[a];
|
|
57
|
+
if (Math.abs(e) >= Math.abs(r[a])) {
|
|
58
|
+
t += e - n + r[a];
|
|
59
59
|
} else {
|
|
60
|
-
|
|
60
|
+
t += r[a] - n + e;
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
e = n;
|
|
63
63
|
}
|
|
64
|
-
return
|
|
64
|
+
return e + t;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
function
|
|
67
|
+
function mean(r) {
|
|
68
68
|
if (r.length === 0) {
|
|
69
69
|
throw new Error("mean requires at least one data point");
|
|
70
70
|
}
|
|
71
|
-
return
|
|
71
|
+
return sum(r) / r.length;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
function
|
|
75
|
-
var
|
|
76
|
-
var
|
|
77
|
-
var
|
|
74
|
+
function sumNthPowerDeviations(r, e) {
|
|
75
|
+
var t = mean(r);
|
|
76
|
+
var n = 0;
|
|
77
|
+
var a;
|
|
78
78
|
var i;
|
|
79
|
-
if (
|
|
79
|
+
if (e === 2) {
|
|
80
80
|
for (i = 0; i < r.length; i++) {
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
a = r[i] - t;
|
|
82
|
+
n += a * a;
|
|
83
83
|
}
|
|
84
84
|
} else {
|
|
85
85
|
for (i = 0; i < r.length; i++) {
|
|
86
|
-
|
|
86
|
+
n += Math.pow(r[i] - t, e);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
return
|
|
89
|
+
return n;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
function
|
|
92
|
+
function variance(r) {
|
|
93
93
|
if (r.length === 0) {
|
|
94
94
|
throw new Error("variance requires at least one data point");
|
|
95
95
|
}
|
|
96
|
-
return
|
|
96
|
+
return sumNthPowerDeviations(r, 2) / r.length;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
function
|
|
99
|
+
function standardDeviation(r) {
|
|
100
100
|
if (r.length === 1) {
|
|
101
101
|
return 0;
|
|
102
102
|
}
|
|
103
|
-
var
|
|
104
|
-
return Math.sqrt(
|
|
103
|
+
var e = variance(r);
|
|
104
|
+
return Math.sqrt(e);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
function
|
|
107
|
+
function rSquared(r, e) {
|
|
108
108
|
if (r.length < 2) {
|
|
109
109
|
return 1;
|
|
110
110
|
}
|
|
111
|
-
var
|
|
111
|
+
var t = 0;
|
|
112
112
|
for (var n = 0; n < r.length; n++) {
|
|
113
|
-
|
|
113
|
+
t += r[n][1];
|
|
114
114
|
}
|
|
115
|
-
var a =
|
|
116
|
-
var
|
|
117
|
-
for (var
|
|
118
|
-
|
|
115
|
+
var a = t / r.length;
|
|
116
|
+
var i = 0;
|
|
117
|
+
for (var o = 0; o < r.length; o++) {
|
|
118
|
+
i += Math.pow(a - r[o][1], 2);
|
|
119
119
|
}
|
|
120
120
|
var u = 0;
|
|
121
|
-
for (var
|
|
122
|
-
u += Math.pow(r[
|
|
121
|
+
for (var s = 0; s < r.length; s++) {
|
|
122
|
+
u += Math.pow(r[s][1] - e(r[s][0]), 2);
|
|
123
123
|
}
|
|
124
|
-
return 1 - u /
|
|
124
|
+
return 1 - u / i;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
function
|
|
127
|
+
function modeSorted(r) {
|
|
128
128
|
if (r.length === 0) {
|
|
129
129
|
throw new Error("mode requires at least one data point");
|
|
130
130
|
}
|
|
131
131
|
if (r.length === 1) {
|
|
132
132
|
return r[0];
|
|
133
133
|
}
|
|
134
|
-
var
|
|
135
|
-
var
|
|
134
|
+
var e = r[0];
|
|
135
|
+
var t = Number.NaN;
|
|
136
136
|
var n = 0;
|
|
137
137
|
var a = 1;
|
|
138
|
-
for (var
|
|
139
|
-
if (r[
|
|
138
|
+
for (var i = 1; i < r.length + 1; i++) {
|
|
139
|
+
if (r[i] !== e) {
|
|
140
140
|
if (a > n) {
|
|
141
141
|
n = a;
|
|
142
|
-
|
|
142
|
+
t = e;
|
|
143
143
|
}
|
|
144
144
|
a = 1;
|
|
145
|
-
|
|
145
|
+
e = r[i];
|
|
146
146
|
} else {
|
|
147
147
|
a++;
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
-
return
|
|
150
|
+
return t;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
function
|
|
154
|
-
return r.slice().sort((function(r,
|
|
155
|
-
return r -
|
|
153
|
+
function numericSort(r) {
|
|
154
|
+
return r.slice().sort((function(r, e) {
|
|
155
|
+
return r - e;
|
|
156
156
|
}));
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
-
function
|
|
160
|
-
return
|
|
159
|
+
function mode(r) {
|
|
160
|
+
return modeSorted(numericSort(r));
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
function
|
|
164
|
-
var
|
|
165
|
-
var
|
|
163
|
+
function modeFast(r) {
|
|
164
|
+
var e = new Map;
|
|
165
|
+
var t;
|
|
166
166
|
var n = 0;
|
|
167
167
|
for (var a = 0; a < r.length; a++) {
|
|
168
|
-
var
|
|
169
|
-
if (
|
|
170
|
-
|
|
168
|
+
var i = e.get(r[a]);
|
|
169
|
+
if (i === undefined) {
|
|
170
|
+
i = 1;
|
|
171
171
|
} else {
|
|
172
|
-
|
|
172
|
+
i++;
|
|
173
173
|
}
|
|
174
|
-
if (
|
|
175
|
-
|
|
176
|
-
n =
|
|
174
|
+
if (i > n) {
|
|
175
|
+
t = r[a];
|
|
176
|
+
n = i;
|
|
177
177
|
}
|
|
178
|
-
|
|
178
|
+
e.set(r[a], i);
|
|
179
179
|
}
|
|
180
180
|
if (n === 0) {
|
|
181
181
|
throw new Error("mode requires at last one data point");
|
|
182
182
|
}
|
|
183
|
-
return
|
|
183
|
+
return t;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
function
|
|
186
|
+
function min(r) {
|
|
187
187
|
if (r.length === 0) {
|
|
188
188
|
throw new Error("min requires at least one data point");
|
|
189
189
|
}
|
|
190
|
-
var
|
|
191
|
-
for (var
|
|
192
|
-
if (r[
|
|
193
|
-
|
|
190
|
+
var e = r[0];
|
|
191
|
+
for (var t = 1; t < r.length; t++) {
|
|
192
|
+
if (r[t] < e) {
|
|
193
|
+
e = r[t];
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
|
-
return
|
|
196
|
+
return e;
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
function
|
|
199
|
+
function max(r) {
|
|
200
200
|
if (r.length === 0) {
|
|
201
201
|
throw new Error("max requires at least one data point");
|
|
202
202
|
}
|
|
203
|
-
var
|
|
204
|
-
for (var
|
|
205
|
-
if (r[
|
|
206
|
-
|
|
203
|
+
var e = r[0];
|
|
204
|
+
for (var t = 1; t < r.length; t++) {
|
|
205
|
+
if (r[t] > e) {
|
|
206
|
+
e = r[t];
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
|
-
return
|
|
209
|
+
return e;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
function
|
|
212
|
+
function extent(r) {
|
|
213
213
|
if (r.length === 0) {
|
|
214
214
|
throw new Error("extent requires at least one data point");
|
|
215
215
|
}
|
|
216
|
-
var t = r[0];
|
|
217
216
|
var e = r[0];
|
|
217
|
+
var t = r[0];
|
|
218
218
|
for (var n = 1; n < r.length; n++) {
|
|
219
|
-
if (r[n] >
|
|
220
|
-
e = r[n];
|
|
221
|
-
}
|
|
222
|
-
if (r[n] < t) {
|
|
219
|
+
if (r[n] > t) {
|
|
223
220
|
t = r[n];
|
|
224
221
|
}
|
|
222
|
+
if (r[n] < e) {
|
|
223
|
+
e = r[n];
|
|
224
|
+
}
|
|
225
225
|
}
|
|
226
|
-
return [
|
|
226
|
+
return [ e, t ];
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
function
|
|
229
|
+
function minSorted(r) {
|
|
230
230
|
return r[0];
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
function
|
|
233
|
+
function maxSorted(r) {
|
|
234
234
|
return r[r.length - 1];
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
-
function
|
|
237
|
+
function extentSorted(r) {
|
|
238
238
|
return [ r[0], r[r.length - 1] ];
|
|
239
239
|
}
|
|
240
240
|
|
|
241
|
-
function
|
|
242
|
-
var
|
|
243
|
-
for (var
|
|
244
|
-
if (typeof r[
|
|
241
|
+
function sumSimple(r) {
|
|
242
|
+
var e = 0;
|
|
243
|
+
for (var t = 0; t < r.length; t++) {
|
|
244
|
+
if (typeof r[t] !== "number") {
|
|
245
245
|
return Number.NaN;
|
|
246
246
|
}
|
|
247
|
-
|
|
247
|
+
e += r[t];
|
|
248
248
|
}
|
|
249
|
-
return
|
|
249
|
+
return e;
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
function
|
|
253
|
-
var
|
|
254
|
-
for (var
|
|
255
|
-
|
|
252
|
+
function product(r) {
|
|
253
|
+
var e = 1;
|
|
254
|
+
for (var t = 0; t < r.length; t++) {
|
|
255
|
+
e *= r[t];
|
|
256
256
|
}
|
|
257
|
-
return
|
|
257
|
+
return e;
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
-
function
|
|
261
|
-
var
|
|
260
|
+
function quantileSorted(r, e) {
|
|
261
|
+
var t = r.length * e;
|
|
262
262
|
if (r.length === 0) {
|
|
263
263
|
throw new Error("quantile requires at least one data point.");
|
|
264
|
-
} else if (
|
|
264
|
+
} else if (e < 0 || e > 1) {
|
|
265
265
|
throw new Error("quantiles must be between 0 and 1");
|
|
266
|
-
} else if (
|
|
266
|
+
} else if (e === 1) {
|
|
267
267
|
return r[r.length - 1];
|
|
268
|
-
} else if (
|
|
268
|
+
} else if (e === 0) {
|
|
269
269
|
return r[0];
|
|
270
|
-
} else if (
|
|
271
|
-
return r[Math.ceil(
|
|
270
|
+
} else if (t % 1 !== 0) {
|
|
271
|
+
return r[Math.ceil(t) - 1];
|
|
272
272
|
} else if (r.length % 2 === 0) {
|
|
273
|
-
return (r[
|
|
273
|
+
return (r[t - 1] + r[t]) / 2;
|
|
274
274
|
} else {
|
|
275
|
-
return r[
|
|
275
|
+
return r[t];
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
-
function
|
|
280
|
-
|
|
279
|
+
function quickselect(r, e, t, n) {
|
|
280
|
+
t = t || 0;
|
|
281
281
|
n = n || r.length - 1;
|
|
282
|
-
while (n >
|
|
283
|
-
if (n -
|
|
284
|
-
var a = n -
|
|
285
|
-
var
|
|
286
|
-
var
|
|
287
|
-
var u = .5 * Math.exp(2 *
|
|
288
|
-
var
|
|
289
|
-
if (
|
|
290
|
-
|
|
282
|
+
while (n > t) {
|
|
283
|
+
if (n - t > 600) {
|
|
284
|
+
var a = n - t + 1;
|
|
285
|
+
var i = e - t + 1;
|
|
286
|
+
var o = Math.log(a);
|
|
287
|
+
var u = .5 * Math.exp(2 * o / 3);
|
|
288
|
+
var s = .5 * Math.sqrt(o * u * (a - u) / a);
|
|
289
|
+
if (i - a / 2 < 0) {
|
|
290
|
+
s *= -1;
|
|
291
291
|
}
|
|
292
|
-
var
|
|
293
|
-
var
|
|
294
|
-
|
|
292
|
+
var l = Math.max(t, Math.floor(e - i * u / a + s));
|
|
293
|
+
var f = Math.min(n, Math.floor(e + (a - i) * u / a + s));
|
|
294
|
+
quickselect(r, e, l, f);
|
|
295
295
|
}
|
|
296
|
-
var
|
|
297
|
-
var
|
|
296
|
+
var v = r[e];
|
|
297
|
+
var h = t;
|
|
298
298
|
var c = n;
|
|
299
|
-
|
|
300
|
-
if (r[n] >
|
|
301
|
-
|
|
299
|
+
swap(r, t, e);
|
|
300
|
+
if (r[n] > v) {
|
|
301
|
+
swap(r, t, n);
|
|
302
302
|
}
|
|
303
|
-
while (
|
|
304
|
-
|
|
305
|
-
|
|
303
|
+
while (h < c) {
|
|
304
|
+
swap(r, h, c);
|
|
305
|
+
h++;
|
|
306
306
|
c--;
|
|
307
|
-
while (r[
|
|
308
|
-
|
|
307
|
+
while (r[h] < v) {
|
|
308
|
+
h++;
|
|
309
309
|
}
|
|
310
|
-
while (r[c] >
|
|
310
|
+
while (r[c] > v) {
|
|
311
311
|
c--;
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
|
-
if (r[
|
|
315
|
-
|
|
314
|
+
if (r[t] === v) {
|
|
315
|
+
swap(r, t, c);
|
|
316
316
|
} else {
|
|
317
317
|
c++;
|
|
318
|
-
|
|
318
|
+
swap(r, c, n);
|
|
319
319
|
}
|
|
320
|
-
if (c <=
|
|
321
|
-
|
|
320
|
+
if (c <= e) {
|
|
321
|
+
t = c + 1;
|
|
322
322
|
}
|
|
323
|
-
if (
|
|
323
|
+
if (e <= c) {
|
|
324
324
|
n = c - 1;
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
-
function
|
|
330
|
-
var n = r[
|
|
331
|
-
r[
|
|
332
|
-
r[
|
|
329
|
+
function swap(r, e, t) {
|
|
330
|
+
var n = r[e];
|
|
331
|
+
r[e] = r[t];
|
|
332
|
+
r[t] = n;
|
|
333
333
|
}
|
|
334
334
|
|
|
335
|
-
function
|
|
336
|
-
var
|
|
337
|
-
if (Array.isArray(
|
|
338
|
-
|
|
335
|
+
function quantile(r, e) {
|
|
336
|
+
var t = r.slice();
|
|
337
|
+
if (Array.isArray(e)) {
|
|
338
|
+
multiQuantileSelect(t, e);
|
|
339
339
|
var n = [];
|
|
340
|
-
for (var a = 0; a <
|
|
341
|
-
n[a] =
|
|
340
|
+
for (var a = 0; a < e.length; a++) {
|
|
341
|
+
n[a] = quantileSorted(t, e[a]);
|
|
342
342
|
}
|
|
343
343
|
return n;
|
|
344
344
|
} else {
|
|
345
|
-
var
|
|
346
|
-
|
|
347
|
-
return
|
|
345
|
+
var i = quantileIndex(t.length, e);
|
|
346
|
+
quantileSelect(t, i, 0, t.length - 1);
|
|
347
|
+
return quantileSorted(t, e);
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
350
|
|
|
351
|
-
function
|
|
352
|
-
if (
|
|
353
|
-
|
|
351
|
+
function quantileSelect(r, e, t, n) {
|
|
352
|
+
if (e % 1 === 0) {
|
|
353
|
+
quickselect(r, e, t, n);
|
|
354
354
|
} else {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
355
|
+
e = Math.floor(e);
|
|
356
|
+
quickselect(r, e, t, n);
|
|
357
|
+
quickselect(r, e + 1, e + 1, n);
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
360
|
|
|
361
|
-
function
|
|
362
|
-
var
|
|
363
|
-
for (var n = 0; n <
|
|
364
|
-
|
|
361
|
+
function multiQuantileSelect(r, e) {
|
|
362
|
+
var t = [ 0 ];
|
|
363
|
+
for (var n = 0; n < e.length; n++) {
|
|
364
|
+
t.push(quantileIndex(r.length, e[n]));
|
|
365
365
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
var a = [ 0,
|
|
366
|
+
t.push(r.length - 1);
|
|
367
|
+
t.sort(compare);
|
|
368
|
+
var a = [ 0, t.length - 1 ];
|
|
369
369
|
while (a.length) {
|
|
370
|
-
var
|
|
371
|
-
var
|
|
372
|
-
if (
|
|
370
|
+
var i = Math.ceil(a.pop());
|
|
371
|
+
var o = Math.floor(a.pop());
|
|
372
|
+
if (i - o <= 1) {
|
|
373
373
|
continue;
|
|
374
374
|
}
|
|
375
|
-
var u = Math.floor((
|
|
376
|
-
|
|
377
|
-
a.push(
|
|
375
|
+
var u = Math.floor((o + i) / 2);
|
|
376
|
+
quantileSelect(r, t[u], Math.floor(t[o]), Math.ceil(t[i]));
|
|
377
|
+
a.push(o, u, u, i);
|
|
378
378
|
}
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
-
function
|
|
382
|
-
return r -
|
|
381
|
+
function compare(r, e) {
|
|
382
|
+
return r - e;
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
function
|
|
386
|
-
var
|
|
387
|
-
if (
|
|
385
|
+
function quantileIndex(r, e) {
|
|
386
|
+
var t = r * e;
|
|
387
|
+
if (e === 1) {
|
|
388
388
|
return r - 1;
|
|
389
|
-
} else if (
|
|
389
|
+
} else if (e === 0) {
|
|
390
390
|
return 0;
|
|
391
|
-
} else if (
|
|
392
|
-
return Math.ceil(
|
|
391
|
+
} else if (t % 1 !== 0) {
|
|
392
|
+
return Math.ceil(t) - 1;
|
|
393
393
|
} else if (r % 2 === 0) {
|
|
394
|
-
return
|
|
394
|
+
return t - .5;
|
|
395
395
|
} else {
|
|
396
|
-
return
|
|
396
|
+
return t;
|
|
397
397
|
}
|
|
398
398
|
}
|
|
399
399
|
|
|
400
|
-
function
|
|
401
|
-
if (
|
|
400
|
+
function quantileRankSorted(r, e) {
|
|
401
|
+
if (e < r[0]) {
|
|
402
402
|
return 0;
|
|
403
403
|
}
|
|
404
|
-
if (
|
|
404
|
+
if (e > r[r.length - 1]) {
|
|
405
405
|
return 1;
|
|
406
406
|
}
|
|
407
|
-
var
|
|
408
|
-
if (r[
|
|
409
|
-
return
|
|
407
|
+
var t = lowerBound(r, e);
|
|
408
|
+
if (r[t] !== e) {
|
|
409
|
+
return t / r.length;
|
|
410
410
|
}
|
|
411
|
-
|
|
412
|
-
var n =
|
|
413
|
-
if (n ===
|
|
414
|
-
return
|
|
411
|
+
t++;
|
|
412
|
+
var n = upperBound(r, e);
|
|
413
|
+
if (n === t) {
|
|
414
|
+
return t / r.length;
|
|
415
415
|
}
|
|
416
|
-
var a = n -
|
|
417
|
-
var
|
|
418
|
-
var
|
|
419
|
-
return
|
|
416
|
+
var a = n - t + 1;
|
|
417
|
+
var i = a * (n + t) / 2;
|
|
418
|
+
var o = i / a;
|
|
419
|
+
return o / r.length;
|
|
420
420
|
}
|
|
421
421
|
|
|
422
|
-
function
|
|
423
|
-
var
|
|
422
|
+
function lowerBound(r, e) {
|
|
423
|
+
var t = 0;
|
|
424
424
|
var n = 0;
|
|
425
425
|
var a = r.length;
|
|
426
426
|
while (n < a) {
|
|
427
|
-
|
|
428
|
-
if (
|
|
429
|
-
a =
|
|
427
|
+
t = n + a >>> 1;
|
|
428
|
+
if (e <= r[t]) {
|
|
429
|
+
a = t;
|
|
430
430
|
} else {
|
|
431
|
-
n = -~
|
|
431
|
+
n = -~t;
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
434
|
return n;
|
|
435
435
|
}
|
|
436
436
|
|
|
437
|
-
function
|
|
438
|
-
var
|
|
437
|
+
function upperBound(r, e) {
|
|
438
|
+
var t = 0;
|
|
439
439
|
var n = 0;
|
|
440
440
|
var a = r.length;
|
|
441
441
|
while (n < a) {
|
|
442
|
-
|
|
443
|
-
if (
|
|
444
|
-
n = -~
|
|
442
|
+
t = n + a >>> 1;
|
|
443
|
+
if (e >= r[t]) {
|
|
444
|
+
n = -~t;
|
|
445
445
|
} else {
|
|
446
|
-
a =
|
|
446
|
+
a = t;
|
|
447
447
|
}
|
|
448
448
|
}
|
|
449
449
|
return n;
|
|
450
450
|
}
|
|
451
451
|
|
|
452
|
-
function
|
|
453
|
-
var
|
|
454
|
-
return
|
|
452
|
+
function quantileRank(r, e) {
|
|
453
|
+
var t = numericSort(r);
|
|
454
|
+
return quantileRankSorted(t, e);
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
-
function
|
|
458
|
-
var
|
|
459
|
-
var
|
|
460
|
-
if (typeof
|
|
461
|
-
return
|
|
457
|
+
function interquartileRange(r) {
|
|
458
|
+
var e = quantile(r, .75);
|
|
459
|
+
var t = quantile(r, .25);
|
|
460
|
+
if (typeof e === "number" && typeof t === "number") {
|
|
461
|
+
return e - t;
|
|
462
462
|
}
|
|
463
463
|
}
|
|
464
464
|
|
|
465
|
-
function
|
|
466
|
-
return +
|
|
465
|
+
function median(r) {
|
|
466
|
+
return +quantile(r, .5);
|
|
467
467
|
}
|
|
468
468
|
|
|
469
|
-
function
|
|
470
|
-
var
|
|
471
|
-
var
|
|
469
|
+
function medianAbsoluteDeviation(r) {
|
|
470
|
+
var e = median(r);
|
|
471
|
+
var t = [];
|
|
472
472
|
for (var n = 0; n < r.length; n++) {
|
|
473
|
-
|
|
473
|
+
t.push(Math.abs(r[n] - e));
|
|
474
474
|
}
|
|
475
|
-
return
|
|
475
|
+
return median(t);
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
-
function
|
|
479
|
-
var
|
|
480
|
-
if (
|
|
478
|
+
function chunk(r, e) {
|
|
479
|
+
var t = [];
|
|
480
|
+
if (e < 1) {
|
|
481
481
|
throw new Error("chunk size must be a positive number");
|
|
482
482
|
}
|
|
483
|
-
if (Math.floor(
|
|
483
|
+
if (Math.floor(e) !== e) {
|
|
484
484
|
throw new Error("chunk size must be an integer");
|
|
485
485
|
}
|
|
486
|
-
for (var n = 0; n < r.length; n +=
|
|
487
|
-
|
|
486
|
+
for (var n = 0; n < r.length; n += e) {
|
|
487
|
+
t.push(r.slice(n, n + e));
|
|
488
488
|
}
|
|
489
|
-
return
|
|
489
|
+
return t;
|
|
490
490
|
}
|
|
491
491
|
|
|
492
|
-
function
|
|
492
|
+
function sampleWithReplacement(r, e, t) {
|
|
493
493
|
if (r.length === 0) {
|
|
494
494
|
return [];
|
|
495
495
|
}
|
|
496
|
-
|
|
496
|
+
t = t || Math.random;
|
|
497
497
|
var n = r.length;
|
|
498
498
|
var a = [];
|
|
499
|
-
for (var
|
|
500
|
-
var
|
|
501
|
-
a.push(r[
|
|
499
|
+
for (var i = 0; i < e; i++) {
|
|
500
|
+
var o = Math.floor(t() * n);
|
|
501
|
+
a.push(r[o]);
|
|
502
502
|
}
|
|
503
503
|
return a;
|
|
504
504
|
}
|
|
505
505
|
|
|
506
|
-
function
|
|
507
|
-
|
|
508
|
-
var
|
|
506
|
+
function shuffleInPlace(r, e) {
|
|
507
|
+
e = e || Math.random;
|
|
508
|
+
var t = r.length;
|
|
509
509
|
var n;
|
|
510
510
|
var a;
|
|
511
|
-
while (
|
|
512
|
-
a = Math.floor(
|
|
513
|
-
n = r[
|
|
514
|
-
r[
|
|
511
|
+
while (t > 0) {
|
|
512
|
+
a = Math.floor(e() * t--);
|
|
513
|
+
n = r[t];
|
|
514
|
+
r[t] = r[a];
|
|
515
515
|
r[a] = n;
|
|
516
516
|
}
|
|
517
517
|
return r;
|
|
518
518
|
}
|
|
519
519
|
|
|
520
|
-
function
|
|
521
|
-
var
|
|
522
|
-
return
|
|
520
|
+
function shuffle(r, e) {
|
|
521
|
+
var t = r.slice();
|
|
522
|
+
return shuffleInPlace(t, e);
|
|
523
523
|
}
|
|
524
524
|
|
|
525
|
-
function
|
|
526
|
-
var n =
|
|
527
|
-
return n.slice(0,
|
|
525
|
+
function sample(r, e, t) {
|
|
526
|
+
var n = shuffle(r, t);
|
|
527
|
+
return n.slice(0, e);
|
|
528
528
|
}
|
|
529
529
|
|
|
530
|
-
function
|
|
531
|
-
var
|
|
530
|
+
function makeMatrix(r, e) {
|
|
531
|
+
var t = [];
|
|
532
532
|
for (var n = 0; n < r; n++) {
|
|
533
533
|
var a = [];
|
|
534
|
-
for (var
|
|
534
|
+
for (var i = 0; i < e; i++) {
|
|
535
535
|
a.push(0);
|
|
536
536
|
}
|
|
537
|
-
|
|
537
|
+
t.push(a);
|
|
538
538
|
}
|
|
539
|
-
return
|
|
539
|
+
return t;
|
|
540
540
|
}
|
|
541
541
|
|
|
542
|
-
function
|
|
543
|
-
var
|
|
544
|
-
var
|
|
542
|
+
function uniqueCountSorted(r) {
|
|
543
|
+
var e = 0;
|
|
544
|
+
var t;
|
|
545
545
|
for (var n = 0; n < r.length; n++) {
|
|
546
|
-
if (n === 0 || r[n] !==
|
|
547
|
-
|
|
548
|
-
|
|
546
|
+
if (n === 0 || r[n] !== t) {
|
|
547
|
+
t = r[n];
|
|
548
|
+
e++;
|
|
549
549
|
}
|
|
550
550
|
}
|
|
551
|
-
return
|
|
551
|
+
return e;
|
|
552
552
|
}
|
|
553
553
|
|
|
554
|
-
function
|
|
554
|
+
function ssq(r, e, t, n) {
|
|
555
555
|
var a;
|
|
556
556
|
if (r > 0) {
|
|
557
|
-
var
|
|
558
|
-
a = n[
|
|
557
|
+
var i = (t[e] - t[r - 1]) / (e - r + 1);
|
|
558
|
+
a = n[e] - n[r - 1] - (e - r + 1) * i * i;
|
|
559
559
|
} else {
|
|
560
|
-
a = n[
|
|
560
|
+
a = n[e] - t[e] * t[e] / (e + 1);
|
|
561
561
|
}
|
|
562
562
|
if (a < 0) {
|
|
563
563
|
return 0;
|
|
@@ -565,573 +565,573 @@ function X(r, t, e, n) {
|
|
|
565
565
|
return a;
|
|
566
566
|
}
|
|
567
567
|
|
|
568
|
-
function
|
|
569
|
-
if (r >
|
|
568
|
+
function fillMatrixColumn(r, e, t, n, a, i, o) {
|
|
569
|
+
if (r > e) {
|
|
570
570
|
return;
|
|
571
571
|
}
|
|
572
|
-
var u = Math.floor((r +
|
|
573
|
-
n[
|
|
574
|
-
a[
|
|
575
|
-
var
|
|
576
|
-
if (r >
|
|
577
|
-
|
|
572
|
+
var u = Math.floor((r + e) / 2);
|
|
573
|
+
n[t][u] = n[t - 1][u - 1];
|
|
574
|
+
a[t][u] = u;
|
|
575
|
+
var s = t;
|
|
576
|
+
if (r > t) {
|
|
577
|
+
s = Math.max(s, a[t][r - 1] || 0);
|
|
578
578
|
}
|
|
579
|
-
|
|
580
|
-
var
|
|
581
|
-
if (
|
|
582
|
-
|
|
579
|
+
s = Math.max(s, a[t - 1][u] || 0);
|
|
580
|
+
var l = u - 1;
|
|
581
|
+
if (e < n[0].length - 1) {
|
|
582
|
+
l = Math.min(l, a[t][e + 1] || 0);
|
|
583
583
|
}
|
|
584
|
+
var f;
|
|
585
|
+
var v;
|
|
584
586
|
var h;
|
|
585
|
-
var s;
|
|
586
|
-
var l;
|
|
587
587
|
var c;
|
|
588
|
-
for (var p =
|
|
589
|
-
|
|
590
|
-
if (
|
|
588
|
+
for (var p = l; p >= s; --p) {
|
|
589
|
+
f = ssq(p, u, i, o);
|
|
590
|
+
if (f + n[t - 1][s - 1] >= n[t][u]) {
|
|
591
591
|
break;
|
|
592
592
|
}
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
if (
|
|
596
|
-
n[
|
|
597
|
-
a[
|
|
593
|
+
v = ssq(s, u, i, o);
|
|
594
|
+
h = v + n[t - 1][s - 1];
|
|
595
|
+
if (h < n[t][u]) {
|
|
596
|
+
n[t][u] = h;
|
|
597
|
+
a[t][u] = s;
|
|
598
598
|
}
|
|
599
|
-
|
|
600
|
-
c =
|
|
601
|
-
if (c < n[
|
|
602
|
-
n[
|
|
603
|
-
a[
|
|
599
|
+
s++;
|
|
600
|
+
c = f + n[t - 1][p - 1];
|
|
601
|
+
if (c < n[t][u]) {
|
|
602
|
+
n[t][u] = c;
|
|
603
|
+
a[t][u] = p;
|
|
604
604
|
}
|
|
605
605
|
}
|
|
606
|
-
|
|
607
|
-
|
|
606
|
+
fillMatrixColumn(r, u - 1, t, n, a, i, o);
|
|
607
|
+
fillMatrixColumn(u + 1, e, t, n, a, i, o);
|
|
608
608
|
}
|
|
609
609
|
|
|
610
|
-
function
|
|
611
|
-
var n =
|
|
610
|
+
function fillMatrices(r, e, t) {
|
|
611
|
+
var n = e[0].length;
|
|
612
612
|
var a = r[Math.floor(n / 2)];
|
|
613
|
-
var o = [];
|
|
614
613
|
var i = [];
|
|
615
|
-
|
|
616
|
-
|
|
614
|
+
var o = [];
|
|
615
|
+
for (var u = 0, s = void 0; u < n; ++u) {
|
|
616
|
+
s = r[u] - a;
|
|
617
617
|
if (u === 0) {
|
|
618
|
-
|
|
619
|
-
|
|
618
|
+
i.push(s);
|
|
619
|
+
o.push(s * s);
|
|
620
620
|
} else {
|
|
621
|
-
|
|
622
|
-
|
|
621
|
+
i.push(i[u - 1] + s);
|
|
622
|
+
o.push(o[u - 1] + s * s);
|
|
623
623
|
}
|
|
624
|
-
|
|
625
|
-
|
|
624
|
+
e[0][u] = ssq(0, u, i, o);
|
|
625
|
+
t[0][u] = 0;
|
|
626
626
|
}
|
|
627
|
-
var
|
|
628
|
-
for (var
|
|
629
|
-
if (
|
|
630
|
-
|
|
627
|
+
var l;
|
|
628
|
+
for (var f = 1; f < e.length; ++f) {
|
|
629
|
+
if (f < e.length - 1) {
|
|
630
|
+
l = f;
|
|
631
631
|
} else {
|
|
632
|
-
|
|
632
|
+
l = n - 1;
|
|
633
633
|
}
|
|
634
|
-
|
|
634
|
+
fillMatrixColumn(l, n - 1, f, e, t, i, o);
|
|
635
635
|
}
|
|
636
636
|
}
|
|
637
637
|
|
|
638
|
-
function
|
|
639
|
-
if (
|
|
638
|
+
function ckmeans(r, e) {
|
|
639
|
+
if (e > r.length) {
|
|
640
640
|
throw new Error("cannot generate more classes than there are data values");
|
|
641
641
|
}
|
|
642
|
-
var
|
|
643
|
-
var n =
|
|
642
|
+
var t = numericSort(r);
|
|
643
|
+
var n = uniqueCountSorted(t);
|
|
644
644
|
if (n === 1) {
|
|
645
|
-
return [
|
|
645
|
+
return [ t ];
|
|
646
646
|
}
|
|
647
|
-
var a =
|
|
648
|
-
var
|
|
649
|
-
|
|
650
|
-
var
|
|
651
|
-
var u =
|
|
652
|
-
for (var
|
|
653
|
-
var
|
|
654
|
-
|
|
655
|
-
if (
|
|
656
|
-
u =
|
|
647
|
+
var a = makeMatrix(e, t.length);
|
|
648
|
+
var i = makeMatrix(e, t.length);
|
|
649
|
+
fillMatrices(t, a, i);
|
|
650
|
+
var o = [];
|
|
651
|
+
var u = i[0].length - 1;
|
|
652
|
+
for (var s = i.length - 1; s >= 0; s--) {
|
|
653
|
+
var l = i[s][u];
|
|
654
|
+
o[s] = t.slice(l, u + 1);
|
|
655
|
+
if (s > 0) {
|
|
656
|
+
u = l - 1;
|
|
657
657
|
}
|
|
658
658
|
}
|
|
659
|
-
return
|
|
659
|
+
return o;
|
|
660
660
|
}
|
|
661
661
|
|
|
662
|
-
function
|
|
662
|
+
function jenksBreaks(r, e, t) {
|
|
663
663
|
var n = r.length;
|
|
664
664
|
var a = [];
|
|
665
|
-
var
|
|
666
|
-
a[
|
|
667
|
-
while (
|
|
668
|
-
a[
|
|
669
|
-
n =
|
|
670
|
-
|
|
665
|
+
var i = t;
|
|
666
|
+
a[t] = r[r.length - 1];
|
|
667
|
+
while (i > 0) {
|
|
668
|
+
a[i - 1] = r[e[n][i] - 1];
|
|
669
|
+
n = e[n][i] - 1;
|
|
670
|
+
i--;
|
|
671
671
|
}
|
|
672
672
|
return a;
|
|
673
673
|
}
|
|
674
674
|
|
|
675
|
-
function
|
|
676
|
-
var
|
|
675
|
+
function jenksMatrices(r, e) {
|
|
676
|
+
var t = [];
|
|
677
677
|
var n = [];
|
|
678
678
|
var a;
|
|
679
|
-
var
|
|
680
|
-
var
|
|
679
|
+
var i;
|
|
680
|
+
var o = 0;
|
|
681
681
|
for (a = 0; a < r.length + 1; a++) {
|
|
682
682
|
var u = [];
|
|
683
|
-
var
|
|
684
|
-
for (
|
|
683
|
+
var s = [];
|
|
684
|
+
for (i = 0; i < e + 1; i++) {
|
|
685
685
|
u.push(0);
|
|
686
|
-
|
|
686
|
+
s.push(0);
|
|
687
687
|
}
|
|
688
|
-
|
|
689
|
-
n.push(
|
|
688
|
+
t.push(u);
|
|
689
|
+
n.push(s);
|
|
690
690
|
}
|
|
691
|
-
for (a = 1; a <
|
|
692
|
-
|
|
691
|
+
for (a = 1; a < e + 1; a++) {
|
|
692
|
+
t[1][a] = 1;
|
|
693
693
|
n[1][a] = 0;
|
|
694
|
-
for (
|
|
695
|
-
n[
|
|
694
|
+
for (i = 2; i < r.length + 1; i++) {
|
|
695
|
+
n[i][a] = Number.POSITIVE_INFINITY;
|
|
696
696
|
}
|
|
697
697
|
}
|
|
698
|
-
for (var
|
|
698
|
+
for (var l = 2; l < r.length + 1; l++) {
|
|
699
|
+
var f = 0;
|
|
700
|
+
var v = 0;
|
|
699
701
|
var h = 0;
|
|
700
|
-
var s = 0;
|
|
701
|
-
var l = 0;
|
|
702
702
|
var c = 0;
|
|
703
|
-
for (var p = 1; p <
|
|
704
|
-
var
|
|
705
|
-
var
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
c =
|
|
703
|
+
for (var p = 1; p < l + 1; p++) {
|
|
704
|
+
var m = l - p + 1;
|
|
705
|
+
var g = r[m - 1];
|
|
706
|
+
h++;
|
|
707
|
+
f += g;
|
|
708
|
+
v += g * g;
|
|
709
|
+
o = v - f * f / h;
|
|
710
|
+
c = m - 1;
|
|
711
711
|
if (c !== 0) {
|
|
712
|
-
for (
|
|
713
|
-
if (n[
|
|
714
|
-
|
|
715
|
-
n[
|
|
712
|
+
for (i = 2; i < e + 1; i++) {
|
|
713
|
+
if (n[l][i] >= o + n[c][i - 1]) {
|
|
714
|
+
t[l][i] = m;
|
|
715
|
+
n[l][i] = o + n[c][i - 1];
|
|
716
716
|
}
|
|
717
717
|
}
|
|
718
718
|
}
|
|
719
719
|
}
|
|
720
|
-
|
|
721
|
-
n[
|
|
720
|
+
t[l][1] = 1;
|
|
721
|
+
n[l][1] = o;
|
|
722
722
|
}
|
|
723
723
|
return {
|
|
724
|
-
lowerClassLimits:
|
|
724
|
+
lowerClassLimits: t,
|
|
725
725
|
varianceCombinations: n
|
|
726
726
|
};
|
|
727
727
|
}
|
|
728
728
|
|
|
729
|
-
function
|
|
730
|
-
if (
|
|
729
|
+
function jenks(r, e) {
|
|
730
|
+
if (e > r.length) {
|
|
731
731
|
return null;
|
|
732
732
|
}
|
|
733
|
-
r = r.slice().sort((function(r,
|
|
734
|
-
return r -
|
|
733
|
+
r = r.slice().sort((function(r, e) {
|
|
734
|
+
return r - e;
|
|
735
735
|
}));
|
|
736
|
-
var
|
|
737
|
-
var n =
|
|
738
|
-
return
|
|
736
|
+
var t = jenksMatrices(r, e);
|
|
737
|
+
var n = t.lowerClassLimits;
|
|
738
|
+
return jenksBreaks(r, n, e);
|
|
739
739
|
}
|
|
740
740
|
|
|
741
|
-
function
|
|
741
|
+
function equalIntervalBreaks(r, e) {
|
|
742
742
|
if (r.length < 2) {
|
|
743
743
|
return r;
|
|
744
744
|
}
|
|
745
|
-
var
|
|
746
|
-
var n =
|
|
747
|
-
var a = [
|
|
748
|
-
var
|
|
749
|
-
for (var
|
|
750
|
-
a.push(a[0] +
|
|
745
|
+
var t = min(r);
|
|
746
|
+
var n = max(r);
|
|
747
|
+
var a = [ t ];
|
|
748
|
+
var i = (n - t) / e;
|
|
749
|
+
for (var o = 1; o < e; o++) {
|
|
750
|
+
a.push(a[0] + i * o);
|
|
751
751
|
}
|
|
752
752
|
a.push(n);
|
|
753
753
|
return a;
|
|
754
754
|
}
|
|
755
755
|
|
|
756
|
-
function
|
|
757
|
-
if (r.length !==
|
|
756
|
+
function sampleCovariance(r, e) {
|
|
757
|
+
if (r.length !== e.length) {
|
|
758
758
|
throw new Error("sampleCovariance requires samples with equal lengths");
|
|
759
759
|
}
|
|
760
760
|
if (r.length < 2) {
|
|
761
761
|
throw new Error("sampleCovariance requires at least two data points in each sample");
|
|
762
762
|
}
|
|
763
|
-
var
|
|
764
|
-
var
|
|
765
|
-
var
|
|
763
|
+
var t = mean(r);
|
|
764
|
+
var n = mean(e);
|
|
765
|
+
var a = 0;
|
|
766
766
|
for (var i = 0; i < r.length; i++) {
|
|
767
|
-
|
|
767
|
+
a += (r[i] - t) * (e[i] - n);
|
|
768
768
|
}
|
|
769
|
-
var
|
|
770
|
-
return
|
|
769
|
+
var o = r.length - 1;
|
|
770
|
+
return a / o;
|
|
771
771
|
}
|
|
772
772
|
|
|
773
|
-
function
|
|
773
|
+
function sampleVariance(r) {
|
|
774
774
|
if (r.length < 2) {
|
|
775
775
|
throw new Error("sampleVariance requires at least two data points");
|
|
776
776
|
}
|
|
777
|
-
var
|
|
778
|
-
var
|
|
779
|
-
return
|
|
777
|
+
var e = sumNthPowerDeviations(r, 2);
|
|
778
|
+
var t = r.length - 1;
|
|
779
|
+
return e / t;
|
|
780
780
|
}
|
|
781
781
|
|
|
782
|
-
function
|
|
783
|
-
var
|
|
784
|
-
return Math.sqrt(
|
|
782
|
+
function sampleStandardDeviation(r) {
|
|
783
|
+
var e = sampleVariance(r);
|
|
784
|
+
return Math.sqrt(e);
|
|
785
785
|
}
|
|
786
786
|
|
|
787
|
-
function
|
|
788
|
-
var
|
|
789
|
-
var n =
|
|
790
|
-
var a =
|
|
791
|
-
return
|
|
787
|
+
function sampleCorrelation(r, e) {
|
|
788
|
+
var t = sampleCovariance(r, e);
|
|
789
|
+
var n = sampleStandardDeviation(r);
|
|
790
|
+
var a = sampleStandardDeviation(e);
|
|
791
|
+
return t / n / a;
|
|
792
792
|
}
|
|
793
793
|
|
|
794
|
-
function
|
|
795
|
-
var
|
|
796
|
-
return [ r,
|
|
797
|
-
})).sort((function(r,
|
|
798
|
-
return r[0] -
|
|
794
|
+
function sampleRankCorrelation(r, e) {
|
|
795
|
+
var t = r.map((function(r, e) {
|
|
796
|
+
return [ r, e ];
|
|
797
|
+
})).sort((function(r, e) {
|
|
798
|
+
return r[0] - e[0];
|
|
799
799
|
})).map((function(r) {
|
|
800
800
|
return r[1];
|
|
801
801
|
}));
|
|
802
|
-
var n =
|
|
803
|
-
return [ r,
|
|
804
|
-
})).sort((function(r,
|
|
805
|
-
return r[0] -
|
|
802
|
+
var n = e.map((function(r, e) {
|
|
803
|
+
return [ r, e ];
|
|
804
|
+
})).sort((function(r, e) {
|
|
805
|
+
return r[0] - e[0];
|
|
806
806
|
})).map((function(r) {
|
|
807
807
|
return r[1];
|
|
808
808
|
}));
|
|
809
|
-
var a = Array(
|
|
810
|
-
var
|
|
811
|
-
for (var
|
|
812
|
-
a[
|
|
813
|
-
|
|
809
|
+
var a = Array(t.length);
|
|
810
|
+
var i = Array(t.length);
|
|
811
|
+
for (var o = 0; o < t.length; o++) {
|
|
812
|
+
a[t[o]] = o;
|
|
813
|
+
i[n[o]] = o;
|
|
814
814
|
}
|
|
815
|
-
return
|
|
815
|
+
return sampleCorrelation(a, i);
|
|
816
816
|
}
|
|
817
817
|
|
|
818
|
-
function
|
|
818
|
+
function sampleSkewness(r) {
|
|
819
819
|
if (r.length < 3) {
|
|
820
820
|
throw new Error("sampleSkewness requires at least three data points");
|
|
821
821
|
}
|
|
822
|
-
var
|
|
823
|
-
var
|
|
822
|
+
var e = mean(r);
|
|
823
|
+
var t;
|
|
824
|
+
var n = 0;
|
|
824
825
|
var a = 0;
|
|
825
|
-
var o = 0;
|
|
826
826
|
for (var i = 0; i < r.length; i++) {
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
827
|
+
t = r[i] - e;
|
|
828
|
+
n += t * t;
|
|
829
|
+
a += t * t * t;
|
|
830
830
|
}
|
|
831
|
-
var
|
|
832
|
-
var
|
|
833
|
-
var
|
|
834
|
-
var
|
|
835
|
-
return
|
|
831
|
+
var o = r.length - 1;
|
|
832
|
+
var u = Math.sqrt(n / o);
|
|
833
|
+
var s = r.length;
|
|
834
|
+
var l = Math.pow(u, 3);
|
|
835
|
+
return s * a / ((s - 1) * (s - 2) * l);
|
|
836
836
|
}
|
|
837
837
|
|
|
838
|
-
function
|
|
839
|
-
var
|
|
840
|
-
if (
|
|
838
|
+
function sampleKurtosis(r) {
|
|
839
|
+
var e = r.length;
|
|
840
|
+
if (e < 4) {
|
|
841
841
|
throw new Error("sampleKurtosis requires at least four data points");
|
|
842
842
|
}
|
|
843
|
-
var
|
|
844
|
-
var
|
|
845
|
-
var
|
|
843
|
+
var t = mean(r);
|
|
844
|
+
var n;
|
|
845
|
+
var a = 0;
|
|
846
846
|
var i = 0;
|
|
847
|
-
for (var
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
i +=
|
|
847
|
+
for (var o = 0; o < e; o++) {
|
|
848
|
+
n = r[o] - t;
|
|
849
|
+
a += n * n;
|
|
850
|
+
i += n * n * n * n;
|
|
851
851
|
}
|
|
852
|
-
return (
|
|
852
|
+
return (e - 1) / ((e - 2) * (e - 3)) * (e * (e + 1) * i / (a * a) - 3 * (e - 1));
|
|
853
853
|
}
|
|
854
854
|
|
|
855
|
-
function
|
|
856
|
-
var
|
|
857
|
-
var
|
|
855
|
+
function permutationsHeap(r) {
|
|
856
|
+
var e = new Array(r.length);
|
|
857
|
+
var t = [ r.slice() ];
|
|
858
858
|
for (var n = 0; n < r.length; n++) {
|
|
859
|
-
|
|
859
|
+
e[n] = 0;
|
|
860
860
|
}
|
|
861
861
|
for (var a = 0; a < r.length; ) {
|
|
862
|
-
if (
|
|
863
|
-
var
|
|
862
|
+
if (e[a] < a) {
|
|
863
|
+
var i = 0;
|
|
864
864
|
if (a % 2 !== 0) {
|
|
865
|
-
|
|
865
|
+
i = e[a];
|
|
866
866
|
}
|
|
867
|
-
var
|
|
868
|
-
r[
|
|
869
|
-
r[a] =
|
|
870
|
-
|
|
871
|
-
|
|
867
|
+
var o = r[i];
|
|
868
|
+
r[i] = r[a];
|
|
869
|
+
r[a] = o;
|
|
870
|
+
t.push(r.slice());
|
|
871
|
+
e[a]++;
|
|
872
872
|
a = 0;
|
|
873
873
|
} else {
|
|
874
|
-
|
|
874
|
+
e[a] = 0;
|
|
875
875
|
a++;
|
|
876
876
|
}
|
|
877
877
|
}
|
|
878
|
-
return
|
|
878
|
+
return t;
|
|
879
879
|
}
|
|
880
880
|
|
|
881
|
-
function
|
|
882
|
-
var
|
|
881
|
+
function combinations(r, e) {
|
|
882
|
+
var t;
|
|
883
883
|
var n;
|
|
884
884
|
var a = [];
|
|
885
|
-
var o;
|
|
886
885
|
var i;
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
886
|
+
var o;
|
|
887
|
+
for (t = 0; t < r.length; t++) {
|
|
888
|
+
if (e === 1) {
|
|
889
|
+
a.push([ r[t] ]);
|
|
890
890
|
} else {
|
|
891
|
-
|
|
892
|
-
for (n = 0; n <
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
a.push(
|
|
891
|
+
i = combinations(r.slice(t + 1, r.length), e - 1);
|
|
892
|
+
for (n = 0; n < i.length; n++) {
|
|
893
|
+
o = i[n];
|
|
894
|
+
o.unshift(r[t]);
|
|
895
|
+
a.push(o);
|
|
896
896
|
}
|
|
897
897
|
}
|
|
898
898
|
}
|
|
899
899
|
return a;
|
|
900
900
|
}
|
|
901
901
|
|
|
902
|
-
function
|
|
903
|
-
var
|
|
902
|
+
function combinationsReplacement(r, e) {
|
|
903
|
+
var t = [];
|
|
904
904
|
for (var n = 0; n < r.length; n++) {
|
|
905
|
-
if (
|
|
906
|
-
|
|
905
|
+
if (e === 1) {
|
|
906
|
+
t.push([ r[n] ]);
|
|
907
907
|
} else {
|
|
908
|
-
var a =
|
|
909
|
-
for (var
|
|
910
|
-
|
|
908
|
+
var a = combinationsReplacement(r.slice(n, r.length), e - 1);
|
|
909
|
+
for (var i = 0; i < a.length; i++) {
|
|
910
|
+
t.push([ r[n] ].concat(a[i]));
|
|
911
911
|
}
|
|
912
912
|
}
|
|
913
913
|
}
|
|
914
|
-
return
|
|
914
|
+
return t;
|
|
915
915
|
}
|
|
916
916
|
|
|
917
|
-
function
|
|
918
|
-
return r + (
|
|
917
|
+
function addToMean(r, e, t) {
|
|
918
|
+
return r + (t - r) / (e + 1);
|
|
919
919
|
}
|
|
920
920
|
|
|
921
|
-
function
|
|
922
|
-
return (r *
|
|
921
|
+
function combineMeans(r, e, t, n) {
|
|
922
|
+
return (r * e + t * n) / (e + n);
|
|
923
923
|
}
|
|
924
924
|
|
|
925
|
-
function
|
|
926
|
-
var
|
|
927
|
-
return (
|
|
925
|
+
function combineVariances(r, e, t, n, a, i) {
|
|
926
|
+
var o = combineMeans(e, t, a, i);
|
|
927
|
+
return (t * (r + Math.pow(e - o, 2)) + i * (n + Math.pow(a - o, 2))) / (t + i);
|
|
928
928
|
}
|
|
929
929
|
|
|
930
|
-
function
|
|
930
|
+
function geometricMean(r) {
|
|
931
931
|
if (r.length === 0) {
|
|
932
932
|
throw new Error("geometricMean requires at least one data point");
|
|
933
933
|
}
|
|
934
|
-
var
|
|
935
|
-
for (var
|
|
936
|
-
if (r[
|
|
934
|
+
var e = 1;
|
|
935
|
+
for (var t = 0; t < r.length; t++) {
|
|
936
|
+
if (r[t] < 0) {
|
|
937
937
|
throw new Error("geometricMean requires only non-negative numbers as input");
|
|
938
938
|
}
|
|
939
|
-
|
|
939
|
+
e *= r[t];
|
|
940
940
|
}
|
|
941
|
-
return Math.pow(
|
|
941
|
+
return Math.pow(e, 1 / r.length);
|
|
942
942
|
}
|
|
943
943
|
|
|
944
|
-
function
|
|
944
|
+
function logAverage(r) {
|
|
945
945
|
if (r.length === 0) {
|
|
946
946
|
throw new Error("logAverage requires at least one data point");
|
|
947
947
|
}
|
|
948
|
-
var
|
|
949
|
-
for (var
|
|
950
|
-
if (r[
|
|
948
|
+
var e = 0;
|
|
949
|
+
for (var t = 0; t < r.length; t++) {
|
|
950
|
+
if (r[t] < 0) {
|
|
951
951
|
throw new Error("logAverage requires only non-negative numbers as input");
|
|
952
952
|
}
|
|
953
|
-
|
|
953
|
+
e += Math.log(r[t]);
|
|
954
954
|
}
|
|
955
|
-
return Math.exp(
|
|
955
|
+
return Math.exp(e / r.length);
|
|
956
956
|
}
|
|
957
957
|
|
|
958
|
-
function
|
|
958
|
+
function harmonicMean(r) {
|
|
959
959
|
if (r.length === 0) {
|
|
960
960
|
throw new Error("harmonicMean requires at least one data point");
|
|
961
961
|
}
|
|
962
|
-
var
|
|
963
|
-
for (var
|
|
964
|
-
if (r[
|
|
962
|
+
var e = 0;
|
|
963
|
+
for (var t = 0; t < r.length; t++) {
|
|
964
|
+
if (r[t] <= 0) {
|
|
965
965
|
throw new Error("harmonicMean requires only positive numbers as input");
|
|
966
966
|
}
|
|
967
|
-
|
|
967
|
+
e += 1 / r[t];
|
|
968
968
|
}
|
|
969
|
-
return r.length /
|
|
969
|
+
return r.length / e;
|
|
970
970
|
}
|
|
971
971
|
|
|
972
|
-
function
|
|
972
|
+
function meanSimple(r) {
|
|
973
973
|
if (r.length === 0) {
|
|
974
974
|
throw new Error("meanSimple requires at least one data point");
|
|
975
975
|
}
|
|
976
|
-
return
|
|
976
|
+
return sumSimple(r) / r.length;
|
|
977
977
|
}
|
|
978
978
|
|
|
979
|
-
function
|
|
980
|
-
return
|
|
979
|
+
function medianSorted(r) {
|
|
980
|
+
return quantileSorted(r, .5);
|
|
981
981
|
}
|
|
982
982
|
|
|
983
|
-
function
|
|
984
|
-
return (r *
|
|
983
|
+
function subtractFromMean(r, e, t) {
|
|
984
|
+
return (r * e - t) / (e - 1);
|
|
985
985
|
}
|
|
986
986
|
|
|
987
|
-
function
|
|
987
|
+
function rootMeanSquare(r) {
|
|
988
988
|
if (r.length === 0) {
|
|
989
989
|
throw new Error("rootMeanSquare requires at least one data point");
|
|
990
990
|
}
|
|
991
|
-
var
|
|
992
|
-
for (var
|
|
993
|
-
|
|
991
|
+
var e = 0;
|
|
992
|
+
for (var t = 0; t < r.length; t++) {
|
|
993
|
+
e += Math.pow(r[t], 2);
|
|
994
994
|
}
|
|
995
|
-
return Math.sqrt(
|
|
995
|
+
return Math.sqrt(e / r.length);
|
|
996
996
|
}
|
|
997
997
|
|
|
998
|
-
function
|
|
999
|
-
return
|
|
998
|
+
function coefficientOfVariation(r) {
|
|
999
|
+
return sampleStandardDeviation(r) / mean(r);
|
|
1000
1000
|
}
|
|
1001
1001
|
|
|
1002
|
-
function
|
|
1003
|
-
var
|
|
1004
|
-
var
|
|
1005
|
-
var
|
|
1006
|
-
return (
|
|
1002
|
+
function tTest(r, e) {
|
|
1003
|
+
var t = mean(r);
|
|
1004
|
+
var n = standardDeviation(r);
|
|
1005
|
+
var a = Math.sqrt(r.length);
|
|
1006
|
+
return (t - e) / (n / a);
|
|
1007
1007
|
}
|
|
1008
1008
|
|
|
1009
|
-
function
|
|
1010
|
-
var
|
|
1011
|
-
var
|
|
1012
|
-
if (!
|
|
1009
|
+
function tTestTwoSample(r, e, t) {
|
|
1010
|
+
var n = r.length;
|
|
1011
|
+
var a = e.length;
|
|
1012
|
+
if (!n || !a) {
|
|
1013
1013
|
return null;
|
|
1014
1014
|
}
|
|
1015
|
-
if (!
|
|
1016
|
-
|
|
1015
|
+
if (!t) {
|
|
1016
|
+
t = 0;
|
|
1017
1017
|
}
|
|
1018
|
-
var i =
|
|
1019
|
-
var
|
|
1020
|
-
var
|
|
1021
|
-
var
|
|
1022
|
-
if (typeof i === "number" && typeof
|
|
1023
|
-
var
|
|
1024
|
-
return (i -
|
|
1018
|
+
var i = mean(r);
|
|
1019
|
+
var o = mean(e);
|
|
1020
|
+
var u = sampleVariance(r);
|
|
1021
|
+
var s = sampleVariance(e);
|
|
1022
|
+
if (typeof i === "number" && typeof o === "number" && typeof u === "number" && typeof s === "number") {
|
|
1023
|
+
var l = ((n - 1) * u + (a - 1) * s) / (n + a - 2);
|
|
1024
|
+
return (i - o - t) / Math.sqrt(l * (1 / n + 1 / a));
|
|
1025
1025
|
}
|
|
1026
1026
|
}
|
|
1027
1027
|
|
|
1028
|
-
function
|
|
1029
|
-
if (!r.length || !
|
|
1028
|
+
function wilcoxonRankSum(r, e) {
|
|
1029
|
+
if (!r.length || !e.length) {
|
|
1030
1030
|
throw new Error("Neither sample can be empty");
|
|
1031
1031
|
}
|
|
1032
|
-
var
|
|
1032
|
+
var t = r.map((function(r) {
|
|
1033
1033
|
return {
|
|
1034
1034
|
label: "x",
|
|
1035
1035
|
value: r
|
|
1036
1036
|
};
|
|
1037
|
-
})).concat(
|
|
1037
|
+
})).concat(e.map((function(r) {
|
|
1038
1038
|
return {
|
|
1039
1039
|
label: "y",
|
|
1040
1040
|
value: r
|
|
1041
1041
|
};
|
|
1042
|
-
}))).sort((function(r,
|
|
1043
|
-
return r.value -
|
|
1042
|
+
}))).sort((function(r, e) {
|
|
1043
|
+
return r.value - e.value;
|
|
1044
1044
|
}));
|
|
1045
|
-
for (var n = 0; n <
|
|
1046
|
-
|
|
1047
|
-
}
|
|
1048
|
-
var a = [
|
|
1049
|
-
for (var
|
|
1050
|
-
if (
|
|
1051
|
-
a.push(
|
|
1052
|
-
if (
|
|
1053
|
-
|
|
1045
|
+
for (var n = 0; n < t.length; n++) {
|
|
1046
|
+
t[n].rank = n;
|
|
1047
|
+
}
|
|
1048
|
+
var a = [ t[0].rank ];
|
|
1049
|
+
for (var i = 1; i < t.length; i++) {
|
|
1050
|
+
if (t[i].value === t[i - 1].value) {
|
|
1051
|
+
a.push(t[i].rank);
|
|
1052
|
+
if (i === t.length - 1) {
|
|
1053
|
+
replaceRanksInPlace(t, a);
|
|
1054
1054
|
}
|
|
1055
1055
|
} else if (a.length > 1) {
|
|
1056
|
-
|
|
1056
|
+
replaceRanksInPlace(t, a);
|
|
1057
1057
|
} else {
|
|
1058
|
-
a = [
|
|
1058
|
+
a = [ t[i].rank ];
|
|
1059
1059
|
}
|
|
1060
1060
|
}
|
|
1061
|
-
function
|
|
1062
|
-
var
|
|
1063
|
-
for (var n = 0; n <
|
|
1064
|
-
r[
|
|
1061
|
+
function replaceRanksInPlace(r, e) {
|
|
1062
|
+
var t = (e[0] + e[e.length - 1]) / 2;
|
|
1063
|
+
for (var n = 0; n < e.length; n++) {
|
|
1064
|
+
r[e[n]].rank = t;
|
|
1065
1065
|
}
|
|
1066
1066
|
}
|
|
1067
|
-
var
|
|
1068
|
-
for (var
|
|
1069
|
-
var
|
|
1070
|
-
if (
|
|
1071
|
-
|
|
1067
|
+
var o = 0;
|
|
1068
|
+
for (var u = 0; u < t.length; u++) {
|
|
1069
|
+
var s = t[u];
|
|
1070
|
+
if (s.label === "x") {
|
|
1071
|
+
o += s.rank + 1;
|
|
1072
1072
|
}
|
|
1073
1073
|
}
|
|
1074
|
-
return
|
|
1074
|
+
return o;
|
|
1075
1075
|
}
|
|
1076
1076
|
|
|
1077
|
-
var
|
|
1077
|
+
var r = function BayesianClassifier() {
|
|
1078
1078
|
this.totalCount = 0;
|
|
1079
1079
|
this.data = {};
|
|
1080
1080
|
};
|
|
1081
1081
|
|
|
1082
|
-
|
|
1082
|
+
r.prototype.train = function train(r, e) {
|
|
1083
1083
|
if (!this.data[e]) {
|
|
1084
1084
|
this.data[e] = {};
|
|
1085
1085
|
}
|
|
1086
|
-
for (var
|
|
1087
|
-
var
|
|
1088
|
-
if (this.data[e][
|
|
1089
|
-
this.data[e][
|
|
1086
|
+
for (var t in r) {
|
|
1087
|
+
var n = r[t];
|
|
1088
|
+
if (this.data[e][t] === undefined) {
|
|
1089
|
+
this.data[e][t] = {};
|
|
1090
1090
|
}
|
|
1091
|
-
if (this.data[e][
|
|
1092
|
-
this.data[e][
|
|
1091
|
+
if (this.data[e][t][n] === undefined) {
|
|
1092
|
+
this.data[e][t][n] = 0;
|
|
1093
1093
|
}
|
|
1094
|
-
this.data[e][
|
|
1094
|
+
this.data[e][t][n]++;
|
|
1095
1095
|
}
|
|
1096
1096
|
this.totalCount++;
|
|
1097
1097
|
};
|
|
1098
1098
|
|
|
1099
|
-
|
|
1099
|
+
r.prototype.score = function score(r) {
|
|
1100
1100
|
var e = {};
|
|
1101
|
-
var
|
|
1102
|
-
for (var
|
|
1103
|
-
var
|
|
1104
|
-
for (
|
|
1105
|
-
e[
|
|
1106
|
-
if (this.data[
|
|
1107
|
-
e[
|
|
1101
|
+
var t;
|
|
1102
|
+
for (var n in r) {
|
|
1103
|
+
var a = r[n];
|
|
1104
|
+
for (t in this.data) {
|
|
1105
|
+
e[t] = {};
|
|
1106
|
+
if (this.data[t][n]) {
|
|
1107
|
+
e[t][n + "_" + a] = (this.data[t][n][a] || 0) / this.totalCount;
|
|
1108
1108
|
} else {
|
|
1109
|
-
e[
|
|
1109
|
+
e[t][n + "_" + a] = 0;
|
|
1110
1110
|
}
|
|
1111
1111
|
}
|
|
1112
1112
|
}
|
|
1113
1113
|
var i = {};
|
|
1114
|
-
for (
|
|
1115
|
-
i[
|
|
1116
|
-
for (var
|
|
1117
|
-
i[
|
|
1114
|
+
for (t in e) {
|
|
1115
|
+
i[t] = 0;
|
|
1116
|
+
for (var o in e[t]) {
|
|
1117
|
+
i[t] += e[t][o];
|
|
1118
1118
|
}
|
|
1119
1119
|
}
|
|
1120
1120
|
return i;
|
|
1121
1121
|
};
|
|
1122
1122
|
|
|
1123
|
-
var
|
|
1123
|
+
var e = function PerceptronModel() {
|
|
1124
1124
|
this.weights = [];
|
|
1125
1125
|
this.bias = 0;
|
|
1126
1126
|
};
|
|
1127
1127
|
|
|
1128
|
-
|
|
1129
|
-
if (
|
|
1128
|
+
e.prototype.predict = function predict(r) {
|
|
1129
|
+
if (r.length !== this.weights.length) {
|
|
1130
1130
|
return null;
|
|
1131
1131
|
}
|
|
1132
1132
|
var e = 0;
|
|
1133
|
-
for (var
|
|
1134
|
-
e += this.weights[
|
|
1133
|
+
for (var t = 0; t < this.weights.length; t++) {
|
|
1134
|
+
e += this.weights[t] * r[t];
|
|
1135
1135
|
}
|
|
1136
1136
|
e += this.bias;
|
|
1137
1137
|
if (e > 0) {
|
|
@@ -1141,121 +1141,121 @@ xr.prototype.predict = function r(t) {
|
|
|
1141
1141
|
}
|
|
1142
1142
|
};
|
|
1143
1143
|
|
|
1144
|
-
|
|
1144
|
+
e.prototype.train = function train(r, e) {
|
|
1145
1145
|
if (e !== 0 && e !== 1) {
|
|
1146
1146
|
return null;
|
|
1147
1147
|
}
|
|
1148
|
-
if (
|
|
1149
|
-
this.weights =
|
|
1148
|
+
if (r.length !== this.weights.length) {
|
|
1149
|
+
this.weights = r;
|
|
1150
1150
|
this.bias = 1;
|
|
1151
1151
|
}
|
|
1152
|
-
var
|
|
1153
|
-
if (typeof
|
|
1154
|
-
var
|
|
1155
|
-
for (var
|
|
1156
|
-
this.weights[
|
|
1152
|
+
var t = this.predict(r);
|
|
1153
|
+
if (typeof t === "number" && t !== e) {
|
|
1154
|
+
var n = e - t;
|
|
1155
|
+
for (var a = 0; a < this.weights.length; a++) {
|
|
1156
|
+
this.weights[a] += n * r[a];
|
|
1157
1157
|
}
|
|
1158
|
-
this.bias +=
|
|
1158
|
+
this.bias += n;
|
|
1159
1159
|
}
|
|
1160
1160
|
return this;
|
|
1161
1161
|
};
|
|
1162
1162
|
|
|
1163
|
-
var
|
|
1163
|
+
var t = 1e-4;
|
|
1164
1164
|
|
|
1165
|
-
function
|
|
1165
|
+
function factorial(r) {
|
|
1166
1166
|
if (r < 0) {
|
|
1167
1167
|
throw new Error("factorial requires a non-negative value");
|
|
1168
1168
|
}
|
|
1169
1169
|
if (Math.floor(r) !== r) {
|
|
1170
1170
|
throw new Error("factorial requires an integer input");
|
|
1171
1171
|
}
|
|
1172
|
-
var
|
|
1173
|
-
for (var
|
|
1174
|
-
|
|
1172
|
+
var e = 1;
|
|
1173
|
+
for (var t = 2; t <= r; t++) {
|
|
1174
|
+
e *= t;
|
|
1175
1175
|
}
|
|
1176
|
-
return
|
|
1176
|
+
return e;
|
|
1177
1177
|
}
|
|
1178
1178
|
|
|
1179
|
-
function
|
|
1179
|
+
function gamma(r) {
|
|
1180
1180
|
if (Number.isInteger(r)) {
|
|
1181
1181
|
if (r <= 0) {
|
|
1182
1182
|
return Number.NaN;
|
|
1183
1183
|
} else {
|
|
1184
|
-
return
|
|
1184
|
+
return factorial(r - 1);
|
|
1185
1185
|
}
|
|
1186
1186
|
}
|
|
1187
1187
|
r--;
|
|
1188
1188
|
if (r < 0) {
|
|
1189
|
-
return Math.PI / (Math.sin(Math.PI * -r) *
|
|
1189
|
+
return Math.PI / (Math.sin(Math.PI * -r) * gamma(-r));
|
|
1190
1190
|
} else {
|
|
1191
|
-
var
|
|
1192
|
-
var
|
|
1193
|
-
var n = 1 + 1 / 144 / Math.pow(
|
|
1194
|
-
return
|
|
1191
|
+
var e = Math.pow(r / Math.E, r) * Math.sqrt(2 * Math.PI * (r + 1 / 6));
|
|
1192
|
+
var t = r + 1 / 4;
|
|
1193
|
+
var n = 1 + 1 / 144 / Math.pow(t, 2) - 1 / 12960 / Math.pow(t, 3) - 257 / 207360 / Math.pow(t, 4) - 52 / 2612736 / Math.pow(t, 5) + 5741173 / 9405849600 / Math.pow(t, 6) + 37529 / 18811699200 / Math.pow(t, 7);
|
|
1194
|
+
return e * n;
|
|
1195
1195
|
}
|
|
1196
1196
|
}
|
|
1197
1197
|
|
|
1198
|
-
var
|
|
1198
|
+
var n = [ .9999999999999971, 57.15623566586292, -59.59796035547549, 14.136097974741746, -.4919138160976202, 3399464998481189e-20, 4652362892704858e-20, -9837447530487956e-20, .0001580887032249125, -.00021026444172410488, .00021743961811521265, -.0001643181065367639, 8441822398385275e-20, -26190838401581408e-21, 36899182659531625e-22 ];
|
|
1199
1199
|
|
|
1200
|
-
var
|
|
1200
|
+
var a = 607 / 128;
|
|
1201
1201
|
|
|
1202
|
-
var
|
|
1202
|
+
var i = Math.log(Math.sqrt(2 * Math.PI));
|
|
1203
1203
|
|
|
1204
|
-
function
|
|
1204
|
+
function gammaln(r) {
|
|
1205
1205
|
if (r <= 0) {
|
|
1206
1206
|
return Number.POSITIVE_INFINITY;
|
|
1207
1207
|
}
|
|
1208
1208
|
r--;
|
|
1209
|
-
var
|
|
1210
|
-
for (var
|
|
1211
|
-
|
|
1209
|
+
var e = n[0];
|
|
1210
|
+
for (var t = 1; t < 15; t++) {
|
|
1211
|
+
e += n[t] / (r + t);
|
|
1212
1212
|
}
|
|
1213
|
-
var
|
|
1214
|
-
return
|
|
1213
|
+
var o = a + .5 + r;
|
|
1214
|
+
return i + Math.log(e) - o + (r + .5) * Math.log(o);
|
|
1215
1215
|
}
|
|
1216
1216
|
|
|
1217
|
-
function
|
|
1217
|
+
function bernoulliDistribution(r) {
|
|
1218
1218
|
if (r < 0 || r > 1) {
|
|
1219
1219
|
throw new Error("bernoulliDistribution requires probability to be between 0 and 1 inclusive");
|
|
1220
1220
|
}
|
|
1221
1221
|
return [ 1 - r, r ];
|
|
1222
1222
|
}
|
|
1223
1223
|
|
|
1224
|
-
function
|
|
1225
|
-
if (
|
|
1224
|
+
function binomialDistribution(r, e) {
|
|
1225
|
+
if (e < 0 || e > 1 || r <= 0 || r % 1 !== 0) {
|
|
1226
1226
|
return undefined;
|
|
1227
1227
|
}
|
|
1228
|
-
var e = 0;
|
|
1229
1228
|
var n = 0;
|
|
1230
|
-
var a =
|
|
1229
|
+
var a = 0;
|
|
1230
|
+
var i = [];
|
|
1231
1231
|
var o = 1;
|
|
1232
1232
|
do {
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
o = o * (r -
|
|
1237
|
-
} while (
|
|
1238
|
-
return
|
|
1233
|
+
i[n] = o * Math.pow(e, n) * Math.pow(1 - e, r - n);
|
|
1234
|
+
a += i[n];
|
|
1235
|
+
n++;
|
|
1236
|
+
o = o * (r - n + 1) / n;
|
|
1237
|
+
} while (a < 1 - t);
|
|
1238
|
+
return i;
|
|
1239
1239
|
}
|
|
1240
1240
|
|
|
1241
|
-
function
|
|
1241
|
+
function poissonDistribution(r) {
|
|
1242
1242
|
if (r <= 0) {
|
|
1243
1243
|
return undefined;
|
|
1244
1244
|
}
|
|
1245
|
-
var t = 0;
|
|
1246
1245
|
var e = 0;
|
|
1247
|
-
var n =
|
|
1248
|
-
var a =
|
|
1246
|
+
var n = 0;
|
|
1247
|
+
var a = [];
|
|
1248
|
+
var i = 1;
|
|
1249
1249
|
do {
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
} while (
|
|
1255
|
-
return
|
|
1250
|
+
a[e] = Math.exp(-r) * Math.pow(r, e) / i;
|
|
1251
|
+
n += a[e];
|
|
1252
|
+
e++;
|
|
1253
|
+
i *= e;
|
|
1254
|
+
} while (n < 1 - t);
|
|
1255
|
+
return a;
|
|
1256
1256
|
}
|
|
1257
1257
|
|
|
1258
|
-
var
|
|
1258
|
+
var o = {
|
|
1259
1259
|
1: {
|
|
1260
1260
|
.995: 0,
|
|
1261
1261
|
.99: 0,
|
|
@@ -1739,215 +1739,215 @@ var _r = {
|
|
|
1739
1739
|
}
|
|
1740
1740
|
};
|
|
1741
1741
|
|
|
1742
|
-
function
|
|
1743
|
-
var
|
|
1744
|
-
var
|
|
1742
|
+
function chiSquaredGoodnessOfFit(r, e, t) {
|
|
1743
|
+
var n = mean(r);
|
|
1744
|
+
var a = 0;
|
|
1745
1745
|
var i = 1;
|
|
1746
|
-
var u =
|
|
1747
|
-
var
|
|
1748
|
-
var
|
|
1749
|
-
for (var
|
|
1750
|
-
if (
|
|
1751
|
-
|
|
1746
|
+
var u = e(n);
|
|
1747
|
+
var s = [];
|
|
1748
|
+
var l = [];
|
|
1749
|
+
for (var f = 0; f < r.length; f++) {
|
|
1750
|
+
if (s[r[f]] === undefined) {
|
|
1751
|
+
s[r[f]] = 0;
|
|
1752
1752
|
}
|
|
1753
|
-
|
|
1753
|
+
s[r[f]]++;
|
|
1754
1754
|
}
|
|
1755
|
-
for (var
|
|
1756
|
-
if (
|
|
1757
|
-
|
|
1755
|
+
for (var v = 0; v < s.length; v++) {
|
|
1756
|
+
if (s[v] === undefined) {
|
|
1757
|
+
s[v] = 0;
|
|
1758
1758
|
}
|
|
1759
1759
|
}
|
|
1760
|
-
for (var
|
|
1761
|
-
if (
|
|
1762
|
-
|
|
1760
|
+
for (var h in u) {
|
|
1761
|
+
if (h in s) {
|
|
1762
|
+
l[+h] = u[h] * r.length;
|
|
1763
1763
|
}
|
|
1764
1764
|
}
|
|
1765
|
-
for (var c =
|
|
1766
|
-
if (
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1765
|
+
for (var c = l.length - 1; c >= 0; c--) {
|
|
1766
|
+
if (l[c] < 3) {
|
|
1767
|
+
l[c - 1] += l[c];
|
|
1768
|
+
l.pop();
|
|
1769
|
+
s[c - 1] += s[c];
|
|
1770
|
+
s.pop();
|
|
1771
1771
|
}
|
|
1772
1772
|
}
|
|
1773
|
-
for (var p = 0; p <
|
|
1774
|
-
|
|
1773
|
+
for (var p = 0; p < s.length; p++) {
|
|
1774
|
+
a += Math.pow(s[p] - l[p], 2) / l[p];
|
|
1775
1775
|
}
|
|
1776
|
-
var
|
|
1777
|
-
return
|
|
1776
|
+
var m = s.length - i - 1;
|
|
1777
|
+
return o[m][t] < a;
|
|
1778
1778
|
}
|
|
1779
1779
|
|
|
1780
|
-
var
|
|
1780
|
+
var u = Math.sqrt(2 * Math.PI);
|
|
1781
1781
|
|
|
1782
|
-
var
|
|
1782
|
+
var s = {
|
|
1783
1783
|
gaussian: function(r) {
|
|
1784
|
-
return Math.exp(-.5 * r * r) /
|
|
1784
|
+
return Math.exp(-.5 * r * r) / u;
|
|
1785
1785
|
}
|
|
1786
1786
|
};
|
|
1787
1787
|
|
|
1788
|
-
var
|
|
1788
|
+
var l = {
|
|
1789
1789
|
nrd: function(r) {
|
|
1790
|
-
var
|
|
1791
|
-
var
|
|
1792
|
-
if (typeof
|
|
1793
|
-
|
|
1790
|
+
var e = sampleStandardDeviation(r);
|
|
1791
|
+
var t = interquartileRange(r);
|
|
1792
|
+
if (typeof t === "number") {
|
|
1793
|
+
e = Math.min(e, t / 1.34);
|
|
1794
1794
|
}
|
|
1795
|
-
return 1.06 *
|
|
1795
|
+
return 1.06 * e * Math.pow(r.length, -.2);
|
|
1796
1796
|
}
|
|
1797
1797
|
};
|
|
1798
1798
|
|
|
1799
|
-
function
|
|
1799
|
+
function kernelDensityEstimation(r, e, t) {
|
|
1800
1800
|
var n;
|
|
1801
|
-
if (
|
|
1802
|
-
n =
|
|
1803
|
-
} else if (typeof
|
|
1804
|
-
if (!
|
|
1805
|
-
throw new Error('Unknown kernel "' +
|
|
1801
|
+
if (e === undefined) {
|
|
1802
|
+
n = s.gaussian;
|
|
1803
|
+
} else if (typeof e === "string") {
|
|
1804
|
+
if (!s[e]) {
|
|
1805
|
+
throw new Error('Unknown kernel "' + e + '"');
|
|
1806
1806
|
}
|
|
1807
|
-
n =
|
|
1807
|
+
n = s[e];
|
|
1808
1808
|
} else {
|
|
1809
|
-
n =
|
|
1809
|
+
n = e;
|
|
1810
1810
|
}
|
|
1811
1811
|
var a;
|
|
1812
|
-
if (typeof
|
|
1813
|
-
a =
|
|
1814
|
-
} else if (typeof
|
|
1815
|
-
if (!
|
|
1816
|
-
throw new Error('Unknown bandwidth method "' +
|
|
1812
|
+
if (typeof t === "undefined") {
|
|
1813
|
+
a = l.nrd(r);
|
|
1814
|
+
} else if (typeof t === "string") {
|
|
1815
|
+
if (!l[t]) {
|
|
1816
|
+
throw new Error('Unknown bandwidth method "' + t + '"');
|
|
1817
1817
|
}
|
|
1818
|
-
a =
|
|
1818
|
+
a = l[t](r);
|
|
1819
1819
|
} else {
|
|
1820
|
-
a =
|
|
1820
|
+
a = t;
|
|
1821
1821
|
}
|
|
1822
|
-
return function(
|
|
1823
|
-
var
|
|
1824
|
-
var
|
|
1825
|
-
for (
|
|
1826
|
-
|
|
1822
|
+
return function(e) {
|
|
1823
|
+
var t = 0;
|
|
1824
|
+
var i = 0;
|
|
1825
|
+
for (t = 0; t < r.length; t++) {
|
|
1826
|
+
i += n((e - r[t]) / a);
|
|
1827
1827
|
}
|
|
1828
|
-
return
|
|
1828
|
+
return i / a / r.length;
|
|
1829
1829
|
};
|
|
1830
1830
|
}
|
|
1831
1831
|
|
|
1832
|
-
function
|
|
1833
|
-
return (r -
|
|
1832
|
+
function zScore(r, e, t) {
|
|
1833
|
+
return (r - e) / t;
|
|
1834
1834
|
}
|
|
1835
1835
|
|
|
1836
|
-
var
|
|
1836
|
+
var f = Math.sqrt(2 * Math.PI);
|
|
1837
1837
|
|
|
1838
|
-
function
|
|
1839
|
-
var t = r;
|
|
1838
|
+
function cumulativeDistribution(r) {
|
|
1840
1839
|
var e = r;
|
|
1840
|
+
var t = r;
|
|
1841
1841
|
for (var n = 1; n < 15; n++) {
|
|
1842
|
-
|
|
1843
|
-
|
|
1842
|
+
t *= r * r / (2 * n + 1);
|
|
1843
|
+
e += t;
|
|
1844
1844
|
}
|
|
1845
|
-
return Math.round((.5 +
|
|
1845
|
+
return Math.round((.5 + e / f * Math.exp(-r * r / 2)) * 1e4) / 1e4;
|
|
1846
1846
|
}
|
|
1847
1847
|
|
|
1848
|
-
var
|
|
1848
|
+
var v = [];
|
|
1849
1849
|
|
|
1850
|
-
for (var
|
|
1851
|
-
|
|
1850
|
+
for (var h = 0; h <= 3.09; h += .01) {
|
|
1851
|
+
v.push(cumulativeDistribution(h));
|
|
1852
1852
|
}
|
|
1853
1853
|
|
|
1854
|
-
function
|
|
1855
|
-
var
|
|
1856
|
-
var
|
|
1854
|
+
function cumulativeStdNormalProbability(r) {
|
|
1855
|
+
var e = Math.abs(r);
|
|
1856
|
+
var t = Math.min(Math.round(e * 100), v.length - 1);
|
|
1857
1857
|
if (r >= 0) {
|
|
1858
|
-
return
|
|
1858
|
+
return v[t];
|
|
1859
1859
|
} else {
|
|
1860
|
-
return Math.round((1 -
|
|
1860
|
+
return Math.round((1 - v[t]) * 1e4) / 1e4;
|
|
1861
1861
|
}
|
|
1862
1862
|
}
|
|
1863
1863
|
|
|
1864
|
-
function
|
|
1864
|
+
function cumulativeStdLogisticProbability(r) {
|
|
1865
1865
|
return 1 / (Math.exp(-r) + 1);
|
|
1866
1866
|
}
|
|
1867
1867
|
|
|
1868
|
-
function
|
|
1869
|
-
var
|
|
1870
|
-
var
|
|
1868
|
+
function errorFunction(r) {
|
|
1869
|
+
var e = 1 / (1 + .5 * Math.abs(r));
|
|
1870
|
+
var t = e * Math.exp(-r * r + ((((((((.17087277 * e - .82215223) * e + 1.48851587) * e - 1.13520398) * e + .27886807) * e - .18628806) * e + .09678418) * e + .37409196) * e + 1.00002368) * e - 1.26551223);
|
|
1871
1871
|
if (r >= 0) {
|
|
1872
|
-
return 1 -
|
|
1872
|
+
return 1 - t;
|
|
1873
1873
|
} else {
|
|
1874
|
-
return
|
|
1874
|
+
return t - 1;
|
|
1875
1875
|
}
|
|
1876
1876
|
}
|
|
1877
1877
|
|
|
1878
|
-
function
|
|
1879
|
-
var
|
|
1880
|
-
var
|
|
1878
|
+
function inverseErrorFunction(r) {
|
|
1879
|
+
var e = 8 * (Math.PI - 3) / (3 * Math.PI * (4 - Math.PI));
|
|
1880
|
+
var t = Math.sqrt(Math.sqrt(Math.pow(2 / (Math.PI * e) + Math.log(1 - r * r) / 2, 2) - Math.log(1 - r * r) / e) - (2 / (Math.PI * e) + Math.log(1 - r * r) / 2));
|
|
1881
1881
|
if (r >= 0) {
|
|
1882
|
-
return
|
|
1882
|
+
return t;
|
|
1883
1883
|
} else {
|
|
1884
|
-
return -
|
|
1884
|
+
return -t;
|
|
1885
1885
|
}
|
|
1886
1886
|
}
|
|
1887
1887
|
|
|
1888
|
-
function
|
|
1888
|
+
function probit(r) {
|
|
1889
1889
|
if (r === 0) {
|
|
1890
|
-
r =
|
|
1890
|
+
r = t;
|
|
1891
1891
|
} else if (r >= 1) {
|
|
1892
|
-
r = 1 -
|
|
1892
|
+
r = 1 - t;
|
|
1893
1893
|
}
|
|
1894
|
-
return Math.sqrt(2) *
|
|
1894
|
+
return Math.sqrt(2) * inverseErrorFunction(2 * r - 1);
|
|
1895
1895
|
}
|
|
1896
1896
|
|
|
1897
|
-
function
|
|
1897
|
+
function logit(r) {
|
|
1898
1898
|
if (r <= 0 || r >= 1) {
|
|
1899
1899
|
throw new Error("p must be strictly between zero and one");
|
|
1900
1900
|
}
|
|
1901
1901
|
return Math.log(r / (1 - r));
|
|
1902
1902
|
}
|
|
1903
1903
|
|
|
1904
|
-
function
|
|
1905
|
-
if (
|
|
1906
|
-
|
|
1904
|
+
function permutationTest(r, e, t, n, a) {
|
|
1905
|
+
if (n === undefined) {
|
|
1906
|
+
n = 1e4;
|
|
1907
1907
|
}
|
|
1908
|
-
if (
|
|
1909
|
-
|
|
1908
|
+
if (t === undefined) {
|
|
1909
|
+
t = "two_side";
|
|
1910
1910
|
}
|
|
1911
|
-
if (
|
|
1911
|
+
if (t !== "two_side" && t !== "greater" && t !== "less") {
|
|
1912
1912
|
throw new Error("`alternative` must be either 'two_side', 'greater', or 'less'.");
|
|
1913
1913
|
}
|
|
1914
|
-
var i =
|
|
1915
|
-
var
|
|
1916
|
-
var
|
|
1917
|
-
var
|
|
1918
|
-
var
|
|
1919
|
-
var
|
|
1920
|
-
for (var
|
|
1921
|
-
|
|
1922
|
-
var
|
|
1923
|
-
var
|
|
1924
|
-
var
|
|
1925
|
-
v
|
|
1926
|
-
}
|
|
1927
|
-
var
|
|
1928
|
-
if (
|
|
1929
|
-
for (var
|
|
1930
|
-
if (Math.abs(
|
|
1931
|
-
|
|
1914
|
+
var i = mean(r);
|
|
1915
|
+
var o = mean(e);
|
|
1916
|
+
var u = i - o;
|
|
1917
|
+
var s = new Array(n);
|
|
1918
|
+
var l = r.concat(e);
|
|
1919
|
+
var f = Math.floor(l.length / 2);
|
|
1920
|
+
for (var v = 0; v < n; v++) {
|
|
1921
|
+
shuffleInPlace(l, a);
|
|
1922
|
+
var h = l.slice(0, f);
|
|
1923
|
+
var c = l.slice(f, l.length);
|
|
1924
|
+
var p = mean(h) - mean(c);
|
|
1925
|
+
s[v] = p;
|
|
1926
|
+
}
|
|
1927
|
+
var m = 0;
|
|
1928
|
+
if (t === "two_side") {
|
|
1929
|
+
for (var g = 0; g <= n; g++) {
|
|
1930
|
+
if (Math.abs(s[g]) >= Math.abs(u)) {
|
|
1931
|
+
m += 1;
|
|
1932
1932
|
}
|
|
1933
1933
|
}
|
|
1934
|
-
} else if (
|
|
1935
|
-
for (var
|
|
1936
|
-
if (
|
|
1937
|
-
|
|
1934
|
+
} else if (t === "greater") {
|
|
1935
|
+
for (var d = 0; d <= n; d++) {
|
|
1936
|
+
if (s[d] >= u) {
|
|
1937
|
+
m += 1;
|
|
1938
1938
|
}
|
|
1939
1939
|
}
|
|
1940
1940
|
} else {
|
|
1941
|
-
for (var
|
|
1942
|
-
if (
|
|
1943
|
-
|
|
1941
|
+
for (var w = 0; w <= n; w++) {
|
|
1942
|
+
if (s[w] <= u) {
|
|
1943
|
+
m += 1;
|
|
1944
1944
|
}
|
|
1945
1945
|
}
|
|
1946
1946
|
}
|
|
1947
|
-
return
|
|
1947
|
+
return m / n;
|
|
1948
1948
|
}
|
|
1949
1949
|
|
|
1950
|
-
function
|
|
1950
|
+
function sign(r) {
|
|
1951
1951
|
if (typeof r === "number") {
|
|
1952
1952
|
if (r < 0) {
|
|
1953
1953
|
return -1;
|
|
@@ -1961,59 +1961,59 @@ function Jr(r) {
|
|
|
1961
1961
|
}
|
|
1962
1962
|
}
|
|
1963
1963
|
|
|
1964
|
-
function
|
|
1964
|
+
function bisect(r, e, t, n, a) {
|
|
1965
1965
|
if (typeof r !== "function") {
|
|
1966
1966
|
throw new TypeError("func must be a function");
|
|
1967
1967
|
}
|
|
1968
|
-
for (var
|
|
1969
|
-
var
|
|
1970
|
-
if (r(
|
|
1971
|
-
return
|
|
1968
|
+
for (var i = 0; i < n; i++) {
|
|
1969
|
+
var o = (e + t) / 2;
|
|
1970
|
+
if (r(o) === 0 || Math.abs((t - e) / 2) < a) {
|
|
1971
|
+
return o;
|
|
1972
1972
|
}
|
|
1973
|
-
if (
|
|
1974
|
-
|
|
1973
|
+
if (sign(r(o)) === sign(r(e))) {
|
|
1974
|
+
e = o;
|
|
1975
1975
|
} else {
|
|
1976
|
-
|
|
1976
|
+
t = o;
|
|
1977
1977
|
}
|
|
1978
1978
|
}
|
|
1979
1979
|
throw new Error("maximum number of iterations exceeded");
|
|
1980
1980
|
}
|
|
1981
1981
|
|
|
1982
|
-
function
|
|
1983
|
-
var
|
|
1982
|
+
function euclideanDistance(r, e) {
|
|
1983
|
+
var t = 0;
|
|
1984
1984
|
for (var n = 0; n < r.length; n++) {
|
|
1985
|
-
var a = r[n] -
|
|
1986
|
-
|
|
1985
|
+
var a = r[n] - e[n];
|
|
1986
|
+
t += a * a;
|
|
1987
1987
|
}
|
|
1988
|
-
return Math.sqrt(
|
|
1988
|
+
return Math.sqrt(t);
|
|
1989
1989
|
}
|
|
1990
1990
|
|
|
1991
|
-
function
|
|
1992
|
-
if (
|
|
1991
|
+
function kMeansCluster(r, e, t) {
|
|
1992
|
+
if (t === void 0) t = Math.random;
|
|
1993
1993
|
var n = null;
|
|
1994
|
-
var a =
|
|
1995
|
-
var
|
|
1996
|
-
var
|
|
1997
|
-
while (
|
|
1998
|
-
|
|
1994
|
+
var a = sample(r, e, t);
|
|
1995
|
+
var i = null;
|
|
1996
|
+
var o = Number.MAX_VALUE;
|
|
1997
|
+
while (o !== 0) {
|
|
1998
|
+
i = labelPoints(r, a);
|
|
1999
1999
|
n = a;
|
|
2000
|
-
a =
|
|
2001
|
-
|
|
2000
|
+
a = calculateCentroids(r, i, e);
|
|
2001
|
+
o = calculateChange(a, n);
|
|
2002
2002
|
}
|
|
2003
2003
|
return {
|
|
2004
|
-
labels:
|
|
2004
|
+
labels: i,
|
|
2005
2005
|
centroids: a
|
|
2006
2006
|
};
|
|
2007
2007
|
}
|
|
2008
2008
|
|
|
2009
|
-
function
|
|
2009
|
+
function labelPoints(r, e) {
|
|
2010
2010
|
return r.map((function(r) {
|
|
2011
|
-
var
|
|
2011
|
+
var t = Number.MAX_VALUE;
|
|
2012
2012
|
var n = -1;
|
|
2013
|
-
for (var a = 0; a <
|
|
2014
|
-
var
|
|
2015
|
-
if (
|
|
2016
|
-
|
|
2013
|
+
for (var a = 0; a < e.length; a++) {
|
|
2014
|
+
var i = euclideanDistance(r, e[a]);
|
|
2015
|
+
if (i < t) {
|
|
2016
|
+
t = i;
|
|
2017
2017
|
n = a;
|
|
2018
2018
|
}
|
|
2019
2019
|
}
|
|
@@ -2021,229 +2021,229 @@ function rt(r, t) {
|
|
|
2021
2021
|
}));
|
|
2022
2022
|
}
|
|
2023
2023
|
|
|
2024
|
-
function
|
|
2024
|
+
function calculateCentroids(r, e, t) {
|
|
2025
2025
|
var n = r[0].length;
|
|
2026
|
-
var a =
|
|
2027
|
-
var
|
|
2028
|
-
var
|
|
2029
|
-
for (var u = 0; u <
|
|
2030
|
-
var
|
|
2031
|
-
var
|
|
2032
|
-
var
|
|
2033
|
-
for (var
|
|
2034
|
-
|
|
2035
|
-
}
|
|
2036
|
-
|
|
2037
|
-
}
|
|
2038
|
-
for (var
|
|
2039
|
-
if (
|
|
2040
|
-
throw new Error("Centroid " +
|
|
2041
|
-
}
|
|
2042
|
-
var c = a[
|
|
2026
|
+
var a = makeMatrix(t, n);
|
|
2027
|
+
var i = Array(t).fill(0);
|
|
2028
|
+
var o = r.length;
|
|
2029
|
+
for (var u = 0; u < o; u++) {
|
|
2030
|
+
var s = r[u];
|
|
2031
|
+
var l = e[u];
|
|
2032
|
+
var f = a[l];
|
|
2033
|
+
for (var v = 0; v < n; v++) {
|
|
2034
|
+
f[v] += s[v];
|
|
2035
|
+
}
|
|
2036
|
+
i[l] += 1;
|
|
2037
|
+
}
|
|
2038
|
+
for (var h = 0; h < t; h++) {
|
|
2039
|
+
if (i[h] === 0) {
|
|
2040
|
+
throw new Error("Centroid " + h + " has no friends");
|
|
2041
|
+
}
|
|
2042
|
+
var c = a[h];
|
|
2043
2043
|
for (var p = 0; p < n; p++) {
|
|
2044
|
-
c[p] /=
|
|
2044
|
+
c[p] /= i[h];
|
|
2045
2045
|
}
|
|
2046
2046
|
}
|
|
2047
2047
|
return a;
|
|
2048
2048
|
}
|
|
2049
2049
|
|
|
2050
|
-
function
|
|
2051
|
-
var
|
|
2050
|
+
function calculateChange(r, e) {
|
|
2051
|
+
var t = 0;
|
|
2052
2052
|
for (var n = 0; n < r.length; n++) {
|
|
2053
|
-
|
|
2053
|
+
t += euclideanDistance(r[n], e[n]);
|
|
2054
2054
|
}
|
|
2055
|
-
return
|
|
2055
|
+
return t;
|
|
2056
2056
|
}
|
|
2057
2057
|
|
|
2058
|
-
function
|
|
2059
|
-
if (r.length !==
|
|
2058
|
+
function silhouette(r, e) {
|
|
2059
|
+
if (r.length !== e.length) {
|
|
2060
2060
|
throw new Error("must have exactly as many labels as points");
|
|
2061
2061
|
}
|
|
2062
|
-
var
|
|
2063
|
-
var n =
|
|
2062
|
+
var t = createGroups(e);
|
|
2063
|
+
var n = calculateAllDistances(r);
|
|
2064
2064
|
var a = [];
|
|
2065
|
-
for (var
|
|
2066
|
-
var
|
|
2067
|
-
if (e[
|
|
2068
|
-
var u =
|
|
2069
|
-
var
|
|
2070
|
-
|
|
2065
|
+
for (var i = 0; i < r.length; i++) {
|
|
2066
|
+
var o = 0;
|
|
2067
|
+
if (t[e[i]].length > 1) {
|
|
2068
|
+
var u = meanDistanceFromPointToGroup(i, t[e[i]], n);
|
|
2069
|
+
var s = meanDistanceToNearestGroup(i, e, t, n);
|
|
2070
|
+
o = (s - u) / Math.max(u, s);
|
|
2071
2071
|
}
|
|
2072
|
-
a.push(
|
|
2072
|
+
a.push(o);
|
|
2073
2073
|
}
|
|
2074
2074
|
return a;
|
|
2075
2075
|
}
|
|
2076
2076
|
|
|
2077
|
-
function
|
|
2078
|
-
var
|
|
2079
|
-
var
|
|
2077
|
+
function createGroups(r) {
|
|
2078
|
+
var e = 1 + max(r);
|
|
2079
|
+
var t = Array(e);
|
|
2080
2080
|
for (var n = 0; n < r.length; n++) {
|
|
2081
2081
|
var a = r[n];
|
|
2082
|
-
if (
|
|
2083
|
-
|
|
2082
|
+
if (t[a] === undefined) {
|
|
2083
|
+
t[a] = [];
|
|
2084
2084
|
}
|
|
2085
|
-
|
|
2085
|
+
t[a].push(n);
|
|
2086
2086
|
}
|
|
2087
|
-
return
|
|
2087
|
+
return t;
|
|
2088
2088
|
}
|
|
2089
2089
|
|
|
2090
|
-
function
|
|
2091
|
-
var
|
|
2092
|
-
var
|
|
2093
|
-
for (var n = 0; n <
|
|
2090
|
+
function calculateAllDistances(r) {
|
|
2091
|
+
var e = r.length;
|
|
2092
|
+
var t = makeMatrix(e, e);
|
|
2093
|
+
for (var n = 0; n < e; n++) {
|
|
2094
2094
|
for (var a = 0; a < n; a++) {
|
|
2095
|
-
|
|
2096
|
-
|
|
2095
|
+
t[n][a] = euclideanDistance(r[n], r[a]);
|
|
2096
|
+
t[a][n] = t[n][a];
|
|
2097
2097
|
}
|
|
2098
2098
|
}
|
|
2099
|
-
return
|
|
2099
|
+
return t;
|
|
2100
2100
|
}
|
|
2101
2101
|
|
|
2102
|
-
function
|
|
2103
|
-
var a =
|
|
2104
|
-
var
|
|
2105
|
-
for (var
|
|
2106
|
-
if (
|
|
2107
|
-
var u =
|
|
2108
|
-
if (u <
|
|
2109
|
-
|
|
2102
|
+
function meanDistanceToNearestGroup(r, e, t, n) {
|
|
2103
|
+
var a = e[r];
|
|
2104
|
+
var i = Number.MAX_VALUE;
|
|
2105
|
+
for (var o = 0; o < t.length; o++) {
|
|
2106
|
+
if (o !== a) {
|
|
2107
|
+
var u = meanDistanceFromPointToGroup(r, t[o], n);
|
|
2108
|
+
if (u < i) {
|
|
2109
|
+
i = u;
|
|
2110
2110
|
}
|
|
2111
2111
|
}
|
|
2112
2112
|
}
|
|
2113
|
-
return
|
|
2113
|
+
return i;
|
|
2114
2114
|
}
|
|
2115
2115
|
|
|
2116
|
-
function
|
|
2116
|
+
function meanDistanceFromPointToGroup(r, e, t) {
|
|
2117
2117
|
var n = 0;
|
|
2118
|
-
for (var a = 0; a <
|
|
2119
|
-
n +=
|
|
2118
|
+
for (var a = 0; a < e.length; a++) {
|
|
2119
|
+
n += t[r][e[a]];
|
|
2120
2120
|
}
|
|
2121
|
-
return n /
|
|
2121
|
+
return n / e.length;
|
|
2122
2122
|
}
|
|
2123
2123
|
|
|
2124
|
-
function
|
|
2125
|
-
var
|
|
2126
|
-
return
|
|
2124
|
+
function silhouetteMetric(r, e) {
|
|
2125
|
+
var t = silhouette(r, e);
|
|
2126
|
+
return max(t);
|
|
2127
2127
|
}
|
|
2128
2128
|
|
|
2129
|
-
function
|
|
2130
|
-
if (r === 0 &&
|
|
2129
|
+
function relativeError(r, e) {
|
|
2130
|
+
if (r === 0 && e === 0) {
|
|
2131
2131
|
return 0;
|
|
2132
2132
|
}
|
|
2133
|
-
return Math.abs((r -
|
|
2133
|
+
return Math.abs((r - e) / e);
|
|
2134
2134
|
}
|
|
2135
2135
|
|
|
2136
|
-
function
|
|
2137
|
-
if (
|
|
2138
|
-
return
|
|
2136
|
+
function approxEqual(r, e, n) {
|
|
2137
|
+
if (n === void 0) n = t;
|
|
2138
|
+
return relativeError(r, e) <= n;
|
|
2139
2139
|
}
|
|
2140
2140
|
|
|
2141
|
-
exports.addToMean =
|
|
2141
|
+
exports.addToMean = addToMean;
|
|
2142
2142
|
|
|
2143
|
-
exports.approxEqual =
|
|
2143
|
+
exports.approxEqual = approxEqual;
|
|
2144
2144
|
|
|
2145
|
-
exports.bernoulliDistribution =
|
|
2145
|
+
exports.bernoulliDistribution = bernoulliDistribution;
|
|
2146
2146
|
|
|
2147
|
-
exports.binomialDistribution =
|
|
2147
|
+
exports.binomialDistribution = binomialDistribution;
|
|
2148
2148
|
|
|
2149
|
-
exports.bisect =
|
|
2149
|
+
exports.bisect = bisect;
|
|
2150
2150
|
|
|
2151
|
-
exports.chunk =
|
|
2151
|
+
exports.chunk = chunk;
|
|
2152
2152
|
|
|
2153
|
-
exports.coefficientOfVariation =
|
|
2153
|
+
exports.coefficientOfVariation = coefficientOfVariation;
|
|
2154
2154
|
|
|
2155
|
-
exports.combinations =
|
|
2155
|
+
exports.combinations = combinations;
|
|
2156
2156
|
|
|
2157
|
-
exports.combinationsReplacement =
|
|
2157
|
+
exports.combinationsReplacement = combinationsReplacement;
|
|
2158
2158
|
|
|
2159
|
-
exports.combineMeans =
|
|
2159
|
+
exports.combineMeans = combineMeans;
|
|
2160
2160
|
|
|
2161
|
-
exports.combineVariances =
|
|
2161
|
+
exports.combineVariances = combineVariances;
|
|
2162
2162
|
|
|
2163
|
-
exports.cumulativeStdLogisticProbability =
|
|
2163
|
+
exports.cumulativeStdLogisticProbability = cumulativeStdLogisticProbability;
|
|
2164
2164
|
|
|
2165
|
-
exports.epsilon =
|
|
2165
|
+
exports.epsilon = t;
|
|
2166
2166
|
|
|
2167
|
-
exports.extent =
|
|
2167
|
+
exports.extent = extent;
|
|
2168
2168
|
|
|
2169
|
-
exports.factorial =
|
|
2169
|
+
exports.factorial = factorial;
|
|
2170
2170
|
|
|
2171
|
-
exports.gamma =
|
|
2171
|
+
exports.gamma = gamma;
|
|
2172
2172
|
|
|
2173
|
-
exports.gammaln =
|
|
2173
|
+
exports.gammaln = gammaln;
|
|
2174
2174
|
|
|
2175
|
-
exports.geometricMean =
|
|
2175
|
+
exports.geometricMean = geometricMean;
|
|
2176
2176
|
|
|
2177
|
-
exports.harmonicMean =
|
|
2177
|
+
exports.harmonicMean = harmonicMean;
|
|
2178
2178
|
|
|
2179
|
-
exports.interquartileRange =
|
|
2179
|
+
exports.interquartileRange = interquartileRange;
|
|
2180
2180
|
|
|
2181
|
-
exports.jenks =
|
|
2181
|
+
exports.jenks = jenks;
|
|
2182
2182
|
|
|
2183
|
-
exports.linearRegression =
|
|
2183
|
+
exports.linearRegression = linearRegression;
|
|
2184
2184
|
|
|
2185
|
-
exports.linearRegressionLine =
|
|
2185
|
+
exports.linearRegressionLine = linearRegressionLine;
|
|
2186
2186
|
|
|
2187
|
-
exports.logAverage =
|
|
2187
|
+
exports.logAverage = logAverage;
|
|
2188
2188
|
|
|
2189
|
-
exports.logit =
|
|
2189
|
+
exports.logit = logit;
|
|
2190
2190
|
|
|
2191
|
-
exports.max =
|
|
2191
|
+
exports.max = max;
|
|
2192
2192
|
|
|
2193
|
-
exports.mean =
|
|
2193
|
+
exports.mean = mean;
|
|
2194
2194
|
|
|
2195
|
-
exports.median =
|
|
2195
|
+
exports.median = median;
|
|
2196
2196
|
|
|
2197
|
-
exports.medianAbsoluteDeviation =
|
|
2197
|
+
exports.medianAbsoluteDeviation = medianAbsoluteDeviation;
|
|
2198
2198
|
|
|
2199
|
-
exports.min =
|
|
2199
|
+
exports.min = min;
|
|
2200
2200
|
|
|
2201
|
-
exports.mode =
|
|
2201
|
+
exports.mode = mode;
|
|
2202
2202
|
|
|
2203
|
-
exports.poissonDistribution =
|
|
2203
|
+
exports.poissonDistribution = poissonDistribution;
|
|
2204
2204
|
|
|
2205
|
-
exports.probit =
|
|
2205
|
+
exports.probit = probit;
|
|
2206
2206
|
|
|
2207
|
-
exports.product =
|
|
2207
|
+
exports.product = product;
|
|
2208
2208
|
|
|
2209
|
-
exports.quantile =
|
|
2209
|
+
exports.quantile = quantile;
|
|
2210
2210
|
|
|
2211
|
-
exports.quantileRank =
|
|
2211
|
+
exports.quantileRank = quantileRank;
|
|
2212
2212
|
|
|
2213
|
-
exports.quickselect =
|
|
2213
|
+
exports.quickselect = quickselect;
|
|
2214
2214
|
|
|
2215
|
-
exports.rSquared =
|
|
2215
|
+
exports.rSquared = rSquared;
|
|
2216
2216
|
|
|
2217
|
-
exports.rootMeanSquare =
|
|
2217
|
+
exports.rootMeanSquare = rootMeanSquare;
|
|
2218
2218
|
|
|
2219
|
-
exports.sample =
|
|
2219
|
+
exports.sample = sample;
|
|
2220
2220
|
|
|
2221
|
-
exports.sampleCorrelation =
|
|
2221
|
+
exports.sampleCorrelation = sampleCorrelation;
|
|
2222
2222
|
|
|
2223
|
-
exports.sampleCovariance =
|
|
2223
|
+
exports.sampleCovariance = sampleCovariance;
|
|
2224
2224
|
|
|
2225
|
-
exports.sampleSkewness =
|
|
2225
|
+
exports.sampleSkewness = sampleSkewness;
|
|
2226
2226
|
|
|
2227
|
-
exports.sampleStandardDeviation =
|
|
2227
|
+
exports.sampleStandardDeviation = sampleStandardDeviation;
|
|
2228
2228
|
|
|
2229
|
-
exports.sampleVariance =
|
|
2229
|
+
exports.sampleVariance = sampleVariance;
|
|
2230
2230
|
|
|
2231
|
-
exports.sampleWithReplacement =
|
|
2231
|
+
exports.sampleWithReplacement = sampleWithReplacement;
|
|
2232
2232
|
|
|
2233
|
-
exports.shuffle =
|
|
2233
|
+
exports.shuffle = shuffle;
|
|
2234
2234
|
|
|
2235
|
-
exports.standardDeviation =
|
|
2235
|
+
exports.standardDeviation = standardDeviation;
|
|
2236
2236
|
|
|
2237
|
-
exports.subtractFromMean =
|
|
2237
|
+
exports.subtractFromMean = subtractFromMean;
|
|
2238
2238
|
|
|
2239
|
-
exports.sum =
|
|
2239
|
+
exports.sum = sum;
|
|
2240
2240
|
|
|
2241
|
-
exports.sumNthPowerDeviations =
|
|
2241
|
+
exports.sumNthPowerDeviations = sumNthPowerDeviations;
|
|
2242
2242
|
|
|
2243
|
-
exports.tTest =
|
|
2243
|
+
exports.tTest = tTest;
|
|
2244
2244
|
|
|
2245
|
-
exports.tTestTwoSample =
|
|
2245
|
+
exports.tTestTwoSample = tTestTwoSample;
|
|
2246
2246
|
|
|
2247
|
-
exports.variance =
|
|
2247
|
+
exports.variance = variance;
|
|
2248
2248
|
|
|
2249
|
-
exports.zScore =
|
|
2249
|
+
exports.zScore = zScore;
|