UNPKG

w-statistic

Version:
345 lines (338 loc) 18.3 kB
import arrAverage from './src/arrAverage.mjs' import arrStd from './src/arrStd.mjs' import histGen from './src/histGen.mjs' async function test() { let arr let opt let r arr = [13.8, 19.5, 16.7, 14.3, 17.5, 14.5, 12.6, 15.6, 8.9, 13.3, 17.1, 15, 16.3, 18.3, 18.7, 16.7, 20.9, 12.3, 22.3, 14.6, 20.1, 16.7, 16.8, 24.2, 21.2, 20.7, 18.6, 18.3, 15.9, 17.2, 18.8, 16.3, 20.5, 14.7, 17.5, 24.1, 14.6, 21.1, 17, 19.6, 21.2, 16, 16.5, 9.3, 16.2, 14.9, 16.3, 13.9, 18.4, 19.2, 24.6, 20.2, 12.8, 12.9, 14.1, 18.5, 13.4, 17.1, 9.9, 21.9, 19.6, 18.3, 19.7, 16.6, 21.7, 11.8, 15.9, 11.4, 14.3, 17.4, 16.4, 20.7, 18.6, 22, 17.9, 16.3, 15.4, 17.2, 17.3, 18.3, 16.8, 20.9, 15, 15.1, 18.6, 17.5, 14.7, 17.4, 13.8, 18.3, 17.2, 13.4, 12.5, 22.8, 18.6, 16.3, 16.1, 15.7, 20.8, 16.4] opt = { n: 10, min: 12, max: 23, } r = await histGen(arr, (params) => { // console.log('params', params) let avg = arrAverage(params.arr) let std = arrStd(params.arr) let ry = (std * Math.sqrt(2 * Math.PI)) let curveY = params.curveX.map((x) => { let y = 0 if (ry !== 0) { y = 1 / ry * Math.exp(-((x - avg) ** 2) / (2 * std ** 2)) } return y }) return curveY }, opt) console.log(r) // => { // arr: [ // 13.8, 19.5, 16.7, 14.3, 17.5, 14.5, 12.6, 15.6, 8.9, 13.3, // 17.1, 15, 16.3, 18.3, 18.7, 16.7, 20.9, 12.3, 22.3, 14.6, // 20.1, 16.7, 16.8, 24.2, 21.2, 20.7, 18.6, 18.3, 15.9, 17.2, // 18.8, 16.3, 20.5, 14.7, 17.5, 24.1, 14.6, 21.1, 17, 19.6, // 21.2, 16, 16.5, 9.3, 16.2, 14.9, 16.3, 13.9, 18.4, 19.2, // 24.6, 20.2, 12.8, 12.9, 14.1, 18.5, 13.4, 17.1, 9.9, 21.9, // 19.6, 18.3, 19.7, 16.6, 21.7, 11.8, 15.9, 11.4, 14.3, 17.4, // 16.4, 20.7, 18.6, 22, 17.9, 16.3, 15.4, 17.2, 17.3, 18.3, // 16.8, 20.9, 15, 15.1, 18.6, 17.5, 14.7, 17.4, 13.8, 18.3, // 17.2, 13.4, 12.5, 22.8, 18.6, 16.3, 16.1, 15.7, 20.8, 16.4 // ], // min: 12, // max: 23.000000000000007, // barWidth: 1.0999999999999996, // bins: [ // { min: 12, max: 13.1, avg: 12.55, arr: [Array], counts: 5 }, // { // min: 13.1, // max: 14.2, // avg: 13.649999999999999, // arr: [Array], // counts: 7 // }, // { // min: 14.2, // max: 15.299999999999999, // avg: 14.75, // arr: [Array], // counts: 11 // }, // { // min: 15.299999999999999, // max: 16.4, // avg: 15.849999999999998, // arr: [Array], // counts: 15 // }, // { min: 16.4, max: 17.5, avg: 16.95, arr: [Array], counts: 19 }, // { min: 17.5, max: 18.6, avg: 18.05, arr: [Array], counts: 12 }, // { // min: 18.6, // max: 19.700000000000003, // avg: 19.150000000000002, // arr: [Array], // counts: 7 // }, // { // min: 19.700000000000003, // max: 20.800000000000004, // avg: 20.250000000000004, // arr: [Array], // counts: 6 // }, // { // min: 20.800000000000004, // max: 21.900000000000006, // avg: 21.350000000000005, // arr: [Array], // counts: 7 // }, // { // min: 21.900000000000006, // max: 23.000000000000007, // avg: 22.450000000000006, // arr: [Array], // counts: 3 // } // ], // counts: [ // 5, 7, 11, 15, 19, // 12, 7, 6, 7, 3 // ], // pdfs: [ // 0.04940711462450595, // 0.06916996047430833, // 0.10869565217391308, // 0.14822134387351785, // 0.1877470355731226, // 0.11857707509881428, // 0.06916996047430833, // 0.05928853754940714, // 0.06916996047430833, // 0.02964426877470357 // ], // ratioForCountToPdf: 0.00988142292490119, // curveX: [ // 12, 12.11, 12.219999999999999, // 12.329999999999998, 12.439999999999998, 12.549999999999997, // 12.659999999999997, 12.769999999999996, 12.879999999999995, // 12.989999999999995, 13.099999999999994, 13.209999999999994, // 13.319999999999993, 13.429999999999993, 13.539999999999992, // 13.649999999999991, 13.759999999999991, 13.86999999999999, // 13.97999999999999, 14.08999999999999, 14.199999999999989, // 14.309999999999988, 14.419999999999987, 14.529999999999987, // 14.639999999999986, 14.749999999999986, 14.859999999999985, // 14.969999999999985, 15.079999999999984, 15.189999999999984, // 15.299999999999983, 15.409999999999982, 15.519999999999982, // 15.629999999999981, 15.73999999999998, 15.84999999999998, // 15.95999999999998, 16.06999999999998, 16.17999999999998, // 16.289999999999978, 16.399999999999977, 16.509999999999977, // 16.619999999999976, 16.729999999999976, 16.839999999999975, // 16.949999999999974, 17.059999999999974, 17.169999999999973, // 17.279999999999973, 17.389999999999972, 17.49999999999997, // 17.60999999999997, 17.71999999999997, 17.82999999999997, // 17.93999999999997, 18.04999999999997, 18.159999999999968, // 18.269999999999968, 18.379999999999967, 18.489999999999966, // 18.599999999999966, 18.709999999999965, 18.819999999999965, // 18.929999999999964, 19.039999999999964, 19.149999999999963, // 19.259999999999962, 19.369999999999962, 19.47999999999996, // 19.58999999999996, 19.69999999999996, 19.80999999999996, // 19.91999999999996, 20.02999999999996, 20.139999999999958, // 20.249999999999957, 20.359999999999957, 20.469999999999956, // 20.579999999999956, 20.689999999999955, 20.799999999999955, // 20.909999999999954, 21.019999999999953, 21.129999999999953, // 21.239999999999952, 21.34999999999995, 21.45999999999995, // 21.56999999999995, 21.67999999999995, 21.78999999999995, // 21.89999999999995, 22.00999999999995, 22.119999999999948, // 22.229999999999947, 22.339999999999947, 22.449999999999946, // 22.559999999999945, 22.669999999999945, 22.779999999999944, // 22.889999999999944, // ... 1 more item // ], // curveY: [ // 0.03539347632001737, 0.037383482855803, 0.039437822053457874, // 0.04155494476232438, 0.043732984782065484, 0.04596975107654172, // 0.04826272158141871, 0.05060903873486474, 0.053005506852505095, // 0.05544859145799284, 0.057934420669161386, 0.06045878872679094, // 0.06301716173861893, 0.06560468569544393, 0.06821619679912554, // 0.07084623412410286, 0.07348905461489254, 0.07613865040205554, // 0.07878876839852786, 0.08143293211719617, 0.08406446562938243, // 0.08667651956270586, 0.0892620990158537, 0.09181409324734967, // 0.09432530697570551, 0.09678849310961433, 0.09919638670933023, // 0.10154173996430707, 0.10381735795775265, 0.10601613497619995, // 0.10813109111168648, 0.11015540889583084, 0.11208246969914742, // 0.11390588962545672, 0.11561955463032393, 0.11721765459414842, // 0.11869471608486172, 0.120045633552169, 0.12126569870485275, // 0.12235062783478269, 0.12329658686584205, 0.12410021392285919, // 0.124758639234666, 0.12526950220640412, 0.1256309655189545, // 0.12584172613764152, 0.1259010231379035, 0.12580864228215807, // 0.12556491730933672, 0.12517072792622605, 0.12462749451753433, // 0.12393716961919929, 0.1231022262265693, 0.12212564303543284, // 0.1210108867391587, 0.11976189152917438, 0.11838303596840025, // 0.11687911742784585, 0.11525532429515117, 0.11351720618024314, // 0.11167064235732105, 0.10972180869396257, 0.10767714332716188, // 0.10554331135251384, 0.10332716879651553, 0.1010357261430725, // 0.09867611168380674, 0.09625553495773567, 0.09378125053941684, // 0.0912605224258574, 0.08870058926151618, 0.0861086306277478, // 0.08349173460824426, 0.08085686682562278, 0.07821084112651096, // 0.0755602920735203, 0.07291164938261302, 0.07027111442379702, // 0.06764463888206981, 0.06503790565431186, 0.06245631203663879, // 0.05990495523578081, 0.057388620217582655, 0.054911769885907534, // 0.05247853756626619, 0.050092721750548005, 0.04775778304244922, // 0.045476843227705024, 0.04325268637914335, 0.04108776189397607, // 0.03898418934969129, 0.03694376505545445, 0.03496797016808652, // 0.03305798023546953, 0.031214676025614625, 0.029438655496583702, // 0.027730246760929483, 0.026089521898245954, 0.02451631147072182, // 0.023010219599172477, // ... 1 more item // ] // } arr = [13.8, 19.5, 16.7, 14.3, 17.5, 14.5, 12.6, 15.6, 8.9, 13.3, 17.1, 15, 16.3, 18.3, 18.7, 16.7, 20.9, 12.3, 22.3, 14.6, 20.1, 16.7, 16.8, 24.2, 21.2, 20.7, 18.6, 18.3, 15.9, 17.2, 18.8, 16.3, 20.5, 14.7, 17.5, 24.1, 14.6, 21.1, 17, 19.6, 21.2, 16, 16.5, 9.3, 16.2, 14.9, 16.3, 13.9, 18.4, 19.2, 24.6, 20.2, 12.8, 12.9, 14.1, 18.5, 13.4, 17.1, 9.9, 21.9, 19.6, 18.3, 19.7, 16.6, 21.7, 11.8, 15.9, 11.4, 14.3, 17.4, 16.4, 20.7, 18.6, 22, 17.9, 16.3, 15.4, 17.2, 17.3, 18.3, 16.8, 20.9, 15, 15.1, 18.6, 17.5, 14.7, 17.4, 13.8, 18.3, 17.2, 13.4, 12.5, 22.8, 18.6, 16.3, 16.1, 15.7, 20.8, 16.4] opt = { dx: 1, } r = await histGen(arr, (params) => { // console.log('params', params) let avg = arrAverage(params.arr) let std = arrStd(params.arr) let ry = (std * Math.sqrt(2 * Math.PI)) let curveY = params.curveX.map((x) => { let y = 0 if (ry !== 0) { y = 1 / ry * Math.exp(-((x - avg) ** 2) / (2 * std ** 2)) } return y }) return curveY }, opt) console.log(r) // => { // arr: [ // 13.8, 19.5, 16.7, 14.3, 17.5, 14.5, 12.6, 15.6, 8.9, 13.3, // 17.1, 15, 16.3, 18.3, 18.7, 16.7, 20.9, 12.3, 22.3, 14.6, // 20.1, 16.7, 16.8, 24.2, 21.2, 20.7, 18.6, 18.3, 15.9, 17.2, // 18.8, 16.3, 20.5, 14.7, 17.5, 24.1, 14.6, 21.1, 17, 19.6, // 21.2, 16, 16.5, 9.3, 16.2, 14.9, 16.3, 13.9, 18.4, 19.2, // 24.6, 20.2, 12.8, 12.9, 14.1, 18.5, 13.4, 17.1, 9.9, 21.9, // 19.6, 18.3, 19.7, 16.6, 21.7, 11.8, 15.9, 11.4, 14.3, 17.4, // 16.4, 20.7, 18.6, 22, 17.9, 16.3, 15.4, 17.2, 17.3, 18.3, // 16.8, 20.9, 15, 15.1, 18.6, 17.5, 14.7, 17.4, 13.8, 18.3, // 17.2, 13.4, 12.5, 22.8, 18.6, 16.3, 16.1, 15.7, 20.8, 16.4 // ], // min: 8, // max: 25, // barWidth: 1, // bins: [ // { min: 8, max: 9, avg: 8.5, arr: [Array], counts: 1 }, // { min: 9, max: 10, avg: 9.5, arr: [Array], counts: 2 }, // { min: 10, max: 11, avg: 10.5, arr: [], counts: 0 }, // { min: 11, max: 12, avg: 11.5, arr: [Array], counts: 2 }, // { min: 12, max: 13, avg: 12.5, arr: [Array], counts: 5 }, // { min: 13, max: 14, avg: 13.5, arr: [Array], counts: 6 }, // { min: 14, max: 15, avg: 14.5, arr: [Array], counts: 11 }, // { min: 15, max: 16, avg: 15.5, arr: [Array], counts: 7 }, // { min: 16, max: 17, avg: 16.5, arr: [Array], counts: 17 }, // { min: 17, max: 18, avg: 17.5, arr: [Array], counts: 12 }, // { min: 18, max: 19, avg: 18.5, arr: [Array], counts: 13 }, // { min: 19, max: 20, avg: 19.5, arr: [Array], counts: 5 }, // { min: 20, max: 21, avg: 20.5, arr: [Array], counts: 8 }, // { min: 21, max: 22, avg: 21.5, arr: [Array], counts: 6 }, // { min: 22, max: 23, avg: 22.5, arr: [Array], counts: 2 }, // { min: 23, max: 24, avg: 23.5, arr: [], counts: 0 }, // { min: 24, max: 25, avg: 24.5, arr: [Array], counts: 3 } // ], // counts: [ // 1, 2, 0, 2, 5, 6, 11, // 7, 17, 12, 13, 5, 8, 6, // 2, 0, 3 // ], // pdfs: [ // 0.01, 0.02, 0, 0.02, // 0.05, 0.06, 0.11, 0.07, // 0.17, 0.12, 0.13, 0.05, // 0.08, 0.06, 0.02, 0, // 0.03 // ], // ratioForCountToPdf: 0.01, // curveX: [ // 8, 8.17, 8.34, // 8.51, 8.68, 8.85, // 9.02, 9.19, 9.36, // 9.53, 9.7, 9.87, // 10.04, 10.209999999999999, 10.379999999999999, // 10.549999999999999, 10.719999999999999, 10.889999999999999, // 11.059999999999999, 11.229999999999999, 11.399999999999999, // 11.569999999999999, 11.739999999999998, 11.909999999999998, // 12.079999999999998, 12.249999999999998, 12.419999999999998, // 12.589999999999998, 12.759999999999998, 12.929999999999998, // 13.099999999999998, 13.269999999999998, 13.439999999999998, // 13.609999999999998, 13.779999999999998, 13.949999999999998, // 14.119999999999997, 14.289999999999997, 14.459999999999997, // 14.629999999999997, 14.799999999999997, 14.969999999999997, // 15.139999999999997, 15.309999999999997, 15.479999999999997, // 15.649999999999997, 15.819999999999997, 15.989999999999997, // 16.159999999999997, 16.33, 16.5, // 16.67, 16.840000000000003, 17.010000000000005, // 17.180000000000007, 17.35000000000001, 17.52000000000001, // 17.690000000000012, 17.860000000000014, 18.030000000000015, // 18.200000000000017, 18.37000000000002, 18.54000000000002, // 18.710000000000022, 18.880000000000024, 19.050000000000026, // 19.220000000000027, 19.39000000000003, 19.56000000000003, // 19.730000000000032, 19.900000000000034, 20.070000000000036, // 20.240000000000038, 20.41000000000004, 20.58000000000004, // 20.750000000000043, 20.920000000000044, 21.090000000000046, // 21.260000000000048, 21.43000000000005, 21.60000000000005, // 21.770000000000053, 21.940000000000055, 22.110000000000056, // 22.280000000000058, 22.45000000000006, 22.62000000000006, // 22.790000000000063, 22.960000000000065, 23.130000000000067, // 23.300000000000068, 23.47000000000007, 23.64000000000007, // 23.810000000000073, 23.980000000000075, 24.150000000000077, // 24.32000000000008, 24.49000000000008, 24.660000000000082, // 24.830000000000084, // ... 1 more item // ], // curveY: [ // 0.0021354972114315455, 0.0024854553367063114, 0.002884449034450822, // 0.003337872380944044, 0.0038514701648785558, 0.004431321905571833, // 0.0050838182198556505, 0.005815628799539062, 0.006633661330116091, // 0.0075450107769740975, 0.008556898589091914, 0.009676601522769147, // 0.010911369969185285, 0.01226833587853811, 0.013754410608161986, // 0.015376173279331162, 0.01713975050327831, 0.01905068862608071, // 0.021113819938210935, 0.023333124590469153, 0.025711590245619025, // 0.028251071765571685, 0.03095215347817955, 0.03381401677618344, // 0.036834315964264425, 0.04000906537955066, 0.043332540858125594, // 0.04679719859796993, 0.05039361437165339, 0.0541104458660219, // 0.05793442066916147, 0.06185035208737739, 0.06584118455954233, // 0.06988806994820053, 0.07397047543406945, 0.07806632313332741, // 0.0821521609078912, 0.08620336316240158, 0.09019435973417045, // 0.09409889030150907, 0.0978902810800305, 0.10154173996430735, // 0.10502666572190945, 0.10831896637561805, 0.11139338153321302, // 0.11422580315622657, 0.11679358911035241, 0.11907586381860297, // 0.12105380044817005, 0.12271087930392413, 0.12403311747242914, // 0.1250092652532888, 0.12563096551895458, 0.12589287284579317, // 0.12579273004121988, 0.12533140053453878, 0.1245128559813781, // 0.12334411933061673, 0.121835164495286, 0.11999877463212202, // 0.11785036184618489, 0.1154077518768104, 0.11269093797091934, // 0.10972180869396155, 0.10652385485533912, 0.10312186102540377, // 0.09954158729019578, 0.09580944692694326, 0.09195218559069512, // 0.0879965673866187, 0.08396907287302384, 0.07989561360951453, // 0.07580126734763307, 0.07171003737459185, 0.06764463888206779, // 0.06362631456008193, 0.05967468092925172, 0.055807606241205086, // 0.05204112011363684, 0.048389354438805716, 0.04486451452574493, // 0.04147687891841765, 0.03823482588341427, 0.03514488418795729, // 0.03221180549581274, 0.0294386554965819, 0.026826920751808408, // 0.024376628186298006, 0.022086474170060474, 0.01995396021882945, // 0.01797553248144704, 0.016146722371868524, 0.014462285932951442, // 0.012916339779114184, 0.011502491746033568, 0.01021396466879877, // 0.0090437120069321, 0.007984524327785068, 0.007029125942297158, // 0.006170261253265365, // ... 1 more item // ] // } } test() .catch((err) => { console.log(err) }) //node g.histGen.mjs