w-statistic
Version:
A tool for statistical analysis.
345 lines (338 loc) • 18.3 kB
JavaScript
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