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