{"version":3,"file":"js/4408-520bd7a78c2d70db1d85.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/app/stats/lib/math.js"],"sourcesContent":["import { getIn, is } from './helpers'\n\nconst { abs, exp, log, pow, sqrt, PI } = Math\nconst SQ2PI = sqrt(2 * PI) // eslint-disable-line no-unused-vars\nconst EPS = 1e-8\nconst fpmin = 1e-30\nconst visibleProbability = [200, 100, 50, 20, 10, 1]\nconst zScore = {\n 200: 1.282,\n 100: 1.645,\n 50: 1.96,\n 20: 2.33,\n 10: 2.576,\n 1: 3.291\n}\n\nconst constants = {\n visibleProbability,\n confidenceLevels: visibleProbability.map((_, i) => 1 - visibleProbability[i] / 1000),\n zScore\n}\n\n//normal-distribution (-\\infty, z]\nconst normaldist = to => {\n const z = to / sqrt(2)\n const t = 1 / (1 + 0.3275911 * abs(z))\n const a1 = 0.254829592\n const a2 = -0.284496736\n const a3 = 1.421413741\n const a4 = -1.453152027\n const a5 = 1.061405429\n const erf = 1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * exp(-z * z)\n const sign = z < 0 ? -1 : 1\n return (1 / 2) * (1 + sign * erf)\n}\n\n/*\ntwo-sample z-test for difference in proportion;\n'N-1' correction applied (Doi: 10.1002/sim.2832)\nSmall sample if n1<30 or n2<30 or chi-square expected values <1\nconf is expressed in 1/1000s, so 50 means .05\n*/\nconst pValueByZ = z => 2 * (1 - normaldist(abs(z)))\n\nconst sigTest = (x1, x2, n1, n2, conf = 50) => {\n const p1 = x1 / n1\n const p2 = x2 / n2\n const n = n1 + n2\n const chiSquareCellExpectedValue1_1 = ((x1 + x2) * n1) / n\n const chiSquareCellExpectedValue1_2 = ((x1 + x2) * n2) / n\n const chiSquareCellExpectedValue2_1 = ((n - x1 - x2) * n1) / n\n const chiSquareCellExpectedValue2_2 = ((n - x1 - x2) * n2) / n\n if (\n n < 1 ||\n n1 < 30 ||\n n2 < 30 ||\n chiSquareCellExpectedValue1_1 < 1 ||\n chiSquareCellExpectedValue1_2 < 1 ||\n chiSquareCellExpectedValue2_1 < 1 ||\n chiSquareCellExpectedValue2_2 < 1\n ) {\n // small sample case\n return false\n }\n const pooledP = (x1 + x2) / (n1 + n2)\n const se = sqrt(pooledP * (1 - pooledP) * (1 / n1 + 1 / n2))\n const z = (sqrt((n - 1) / n) * (p1 - p2)) / se\n const pValue = pValueByZ(z)\n return pValue < conf / 1000\n}\n\nconst gammaln = x => {\n let j = 0\n const cof = [\n 76.18009172947146, -86.50532032941678, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2,\n -0.5395239384953e-5\n ]\n let ser = 1.000000000190015\n let xx\n let y\n let tmp = (y = xx = x) + 5.5\n tmp -= (xx + 0.5) * log(tmp)\n for (; j < 6; j++) ser += cof[j] / ++y\n return log((2.5066282746310007 * ser) / xx) - tmp\n}\n\nconst betacf = (x, a, b) => {\n let m = 1\n const qab = a + b\n const qap = a + 1\n const qam = a - 1\n let c = 1\n let d = 1 - (qab * x) / qap\n let m2\n let aa\n let del\n let h\n\n // These q's will be used in factors that occur in the coefficients\n if (abs(d) < fpmin) d = fpmin\n d = 1 / d\n h = d\n\n for (; m <= 100; m++) {\n m2 = 2 * m\n aa = (m * (b - m) * x) / ((qam + m2) * (a + m2))\n // One step (the even one) of the recurrence\n d = 1 + aa * d\n if (abs(d) < fpmin) d = fpmin\n c = 1 + aa / c\n if (abs(c) < fpmin) c = fpmin\n d = 1 / d\n h *= d * c\n aa = (-(a + m) * (qab + m) * x) / ((a + m2) * (qap + m2))\n // Next step of the recurrence (the odd one)\n d = 1 + aa * d\n if (abs(d) < fpmin) d = fpmin\n c = 1 + aa / c\n if (abs(c) < fpmin) c = fpmin\n d = 1 / d\n del = d * c\n h *= del\n if (abs(del - 1) < 3e-7) break\n }\n\n return h\n}\n\nconst ibeta = (x, a, b) => {\n // Returns the incomplete beta function I_x(a,b)\n // Factors in front of the continued fraction.\n const bt = 0 === x || 1 === x ? 0 : exp(gammaln(a + b) - gammaln(a) - gammaln(b) + a * log(x) + b * log(1 - x))\n if (0 > x || 1 < x) return false\n if (x < (a + 1) / (a + b + 2))\n // Use continued fraction directly.\n return (bt * betacf(x, a, b)) / a\n // else use continued fraction after making the symmetry transformation.\n return 1 - (bt * betacf(1 - x, b, a)) / b\n}\n\nconst ibetainv = (p, a, b) => {\n // Returns the inverse of the incomplete beta function\n const a1 = a - 1\n const b1 = b - 1\n let j = 0\n let lna\n let lnb\n let pp\n let t\n let u\n let err\n let x\n let al\n let h\n let w\n if (p <= 0) return 0\n if (p >= 1) return 1\n if (a >= 1 && b >= 1) {\n pp = p < 0.5 ? p : 1 - p\n t = sqrt(-2 * log(pp))\n x = (2.30753 + t * 0.27061) / (1 + t * (0.99229 + t * 0.04481)) - t\n if (p < 0.5) x = -x\n al = (x * x - 3) / 6\n h = 2 / (1 / (2 * a - 1) + 1 / (2 * b - 1))\n w = (x * sqrt(al + h)) / h - (1 / (2 * b - 1) - 1 / (2 * a - 1)) * (al + 5 / 6 - 2 / (3 * h))\n x = a / (a + b * exp(2 * w))\n } else {\n lna = log(a / (a + b))\n lnb = log(b / (a + b))\n t = exp(a * lna) / a\n u = exp(b * lnb) / b\n w = t + u\n x = p < t / w ? pow(a * w * p, 1 / a) : 1 - pow(b * w * (1 - p), 1 / b)\n }\n const afac = -gammaln(a) - gammaln(b) + gammaln(a + b)\n for (; j < 10; j++) {\n if (0 === x || 1 === x) return x\n err = ibeta(x, a, b) - p\n t = exp(a1 * log(x) + b1 * log(1 - x) + afac)\n u = err / t\n x -= t = u / (1 - 0.5 * Math.min(1, u * (a1 / x - b1 / (1 - x))))\n if (x <= 0) x = 0.5 * (x + t)\n if (x >= 1) x = 0.5 * (x + t + 1)\n if (abs(t) < EPS * x && j > 0) break\n }\n return x\n}\nconst qbeta = ibetainv\n\nconst Betinc = (X, A, B) => {\n let A0 = 0\n let B0 = 1\n let A1 = 1\n let B1 = 1\n let M9 = 0\n let A2 = 0\n let C9\n while (abs((A1 - A2) / A1) > 0.00001) {\n A2 = A1\n C9 = (-(A + M9) * (A + B + M9) * X) / (A + 2 * M9) / (A + 2 * M9 + 1)\n A0 = A1 + C9 * A0\n B0 = B1 + C9 * B0\n M9 = M9 + 1\n C9 = (M9 * (B - M9) * X) / (A + 2 * M9 - 1) / (A + 2 * M9)\n A1 = A0 + C9 * A1\n B1 = B0 + C9 * B1\n A0 = A0 / B1\n B0 = B0 / B1\n A1 = A1 / B1\n B1 = 1\n }\n return A1 / A\n}\n\nconst tcdf = (X, df) => {\n if (0 >= df) {\n throw new Error('Degrees of freedom must be positive')\n }\n const A = df / 2\n const S = A + 0.5\n const Z = df / (df + X * X)\n const BT = exp(gammaln(S) - gammaln(0.5) - gammaln(A) + A * log(Z) + 0.5 * log(1 - Z))\n const betacdf = Z < (A + 1) / (S + 2) ? BT * Betinc(Z, A, 0.5) : 1 - BT * Betinc(1 - Z, 0.5, A)\n let res = X < 0 ? betacdf / 2 : 1 - betacdf / 2\n res = Math.round(res * 100000) / 100000\n return res\n}\n\nconst tScoreCritical = (significanceLevel, df) => {\n // come up with t that is on edge of significance\n let tLeft\n let tRight\n let pvalLeft\n let pvalRight\n let t = 500\n let epsilon = 100\n if (df > 10) {\n t = 2\n epsilon = 2\n }\n for (let i = 0; i < 1000; i++) {\n tLeft = t - epsilon\n if (tLeft < 0.0001) {\n tLeft = 0.0001\n }\n tRight = t + epsilon\n if (tRight < 0.001) {\n tRight = 0.001\n }\n pvalLeft = 2 * (1 - tcdf(tLeft, df))\n pvalRight = 2 * (1 - tcdf(tRight, df))\n if (pvalLeft > significanceLevel && pvalRight > significanceLevel) {\n t += epsilon\n }\n if (pvalLeft <= significanceLevel && pvalRight <= significanceLevel) {\n t -= epsilon\n }\n if (pvalLeft > significanceLevel && pvalRight <= significanceLevel) {\n epsilon = epsilon / 5\n }\n if (epsilon < 0.0001) {\n break\n }\n }\n return t\n}\n\n// eslint-disable-next-line no-unused-vars\nconst sigTestGetErrorMeanTwoSample = (averageN, averageSd, confidenceLevel = 0.95) => {\n const significanceLevel = 1 - (isNaN(Number(confidenceLevel)) ? 0.95 : Number(confidenceLevel))\n const se = sqrt(pow(averageSd, 2) / averageN + pow(averageSd, 2) / averageN)\n const df = Math.round(\n pow(se, 4) /\n (pow(pow(averageSd, 2) / averageN, 2) / (averageN - 1) + pow(pow(averageSd, 2) / averageN, 2) / (averageN - 1))\n )\n const tScore = tScoreCritical(significanceLevel, df)\n const marginOfError = tScore * se\n return marginOfError\n}\n\nconst sigTestGetErrorMeanOneSample = (n, sd, confidenceLevel = 0.95) => {\n const significanceLevel = 1 - (isNaN(Number(confidenceLevel)) ? 0.95 : Number(confidenceLevel))\n const se = sd / sqrt(n)\n const df = Math.round(n) - 1\n const tScore = tScoreCritical(significanceLevel, df)\n const marginOfError = tScore * se\n return marginOfError\n}\n\n// eslint-disable-next-line max-params\nconst sigTestMeanTwoSample = (mu1, mu2, sd1, sd2, n1, n2, confidenceLevel = 0.95) => {\n //small sample case:\n if (n1 < 30 || n2 < 30) {\n return false\n }\n const se = sqrt(pow(sd1, 2) / n1 + pow(sd2, 2) / n2)\n const df = Math.round(pow(se, 4) / (pow(pow(sd1, 2) / n1, 2) / (n1 - 1) + pow(pow(sd2, 2) / n2, 2) / (n2 - 1)))\n const t = (mu1 - mu2) / se\n\n const pValue = 2 * (1 - tcdf(abs(t), df))\n const pValLimit = 1 - (isNaN(Number(confidenceLevel)) ? 0.95 : Number(confidenceLevel))\n return pValue < pValLimit\n}\n\n/*\nerror bars (two-sided test) (blue range):\nqbeta=beta quantile function similar to R's qbeta. R\nOnly works with count data (so not scores, not distribute summary, not reorder summary, etc)\n*/\nconst calcErrorForNode = (amount, total, conf = 50) => {\n const conf_level = (1000 - conf) / 1000\n const errLO = amount - total * qbeta((1 - conf_level) / 2, 0.5 + amount, 0.5 + total - amount)\n const errHI = total * qbeta(1 - (1 - conf_level) / 2, 0.5 + amount, 0.5 + total - amount) - amount\n return [Math.max(0, errLO) || 0, Math.max(0, errHI) || 0]\n}\n\nconst calcNodeError = node => {\n if (null === node || Array.isArray(node) || !is(Object)(node)) return\n\n const zScoreKeys = Object.keys(zScore)\n Object.keys(node).forEach(key => {\n if (!node[key]) return\n\n if (Object.hasOwn(node, 'total') && Object.hasOwn(node[key], 'amount')) {\n const total = node[key].base || node.base || node.total\n if (total < node[key].amount) return\n // const effectiveSize = node.effSize ? node.effSize : total\n\n for (const zScoreKey of zScoreKeys) {\n const err = calcErrorForNode(node[key].amount, total, zScoreKey)\n node[key].errLO = Object.assign(node[key].errLO || {}, {\n [String(1000 - zScoreKey)]: { amount: Number(err[0]), percents: Number((100 * err[0]) / total) }\n })\n node[key].errHI = Object.assign(node[key].errHI || {}, {\n [String(1000 - zScoreKey)]: { amount: Number(err[1]), percents: Number((100 * err[1]) / total) }\n })\n if (node.respTotal) {\n const respErr = calcErrorForNode(node[key].amount, node.respTotal, zScoreKey)\n node[key].errLO[String(1000 - zScoreKey)].respAmount = Number(respErr[0])\n node[key].errLO[String(1000 - zScoreKey)].respPercents = Number((100 * respErr[0]) / node.respTotal)\n node[key].errHI[String(1000 - zScoreKey)].respAmount = Number(respErr[1])\n node[key].errHI[String(1000 - zScoreKey)].respPercents = Number((100 * respErr[1]) / node.respTotal)\n }\n }\n }\n\n if (Object.hasOwn(node[key], 'total')) {\n calcNodeError(node[key])\n }\n })\n}\n\n/*\nСигтест максдиффа.\nOnly *utility scores*.\nmarginOfError = sf.sigTestGetErrorMeanOneSample(numberOfRespondentsSelected, mean(sd), confidenceLevel)\nгде sd = массив standard deviation, по элементу на каждый айтем, считается методом sf.sd\nтам есть зависимый метод tScoreCritical который не оптимизирован, если есть желание можно улучшить, заодно и для smart templates\nmarginOfError используется для несимметричного ренджа (band around the column top)\nсравнение колонок делается sf.sigTestMeanTwoSample(mu1, mu2, n1, n2, sd1, sd2, confidenceLevel = 0.95)\nгде mu1 mu2 - средние utility scores\n*/\nconst calcMaxdiffNodeError = node => {\n // console.log('calcMaxdiffNodeError', node)\n const zScoreKeys = Object.keys(zScore)\n if (Object.hasOwn(node, 'total')) {\n const elements = Object.keys(node).filter(k => /^b\\d+/.test(k))\n // console.log('calcMaxdiffNodeError', elements)\n // const mu = elements.map(b => node[b].rawZC)\n // const probs = elements.map(b => node[b].probability / 100)\n for (const zScoreKey of zScoreKeys) {\n const confLevel = (1000 - zScoreKey) / 1000\n elements.forEach(key => {\n if (Object.hasOwn(node[key], 'sd')) {\n const total = node[key].base || node.base || node.total\n if (total <= 1) return\n\n try {\n const error = sigTestGetErrorMeanOneSample(total, node[key].sd, confLevel)\n node[key].errLO = Object.assign(node[key].errLO || {}, {\n [String(1000 - zScoreKey)]: {\n rawAmount: Number(error),\n probAmount: Number(\n 100 *\n (exp(node[key].raw) / (1 + exp(node[key].raw)) -\n exp(node[key].raw - error) / (1 + exp(node[key].raw - error)))\n )\n }\n })\n node[key].errHI = Object.assign(node[key].errHI || {}, {\n [String(1000 - zScoreKey)]: {\n rawAmount: Number(error),\n probAmount: Number(\n 100 *\n (exp(node[key].raw + error) / (1 + exp(node[key].raw + error)) -\n exp(node[key].raw) / (1 + exp(node[key].raw)))\n )\n }\n })\n } catch {\n delete node[key].errLO\n delete node[key].errHI\n }\n }\n })\n }\n // console.log('calcMaxdiffNodeError', node)\n }\n}\n\nconst baseQuestionTypes = ['rb', 'cb']\nconst countableQuestionTypes = ['rb', 'cb', 'mx', 'mp', 'sr', 'se', 'ro', 'aro', 'cf', 'sh', 'sft']\nconst calcErrorsForNode = (type, node) => {\n if (countableQuestionTypes.includes(type)) {\n if (baseQuestionTypes.includes(type)) {\n const keys = Object.keys(node).filter(key => null != node[key] && Object.hasOwn(node[key], 'percents'))\n if (!keys.some(key => node[key]['percents'] > 100)) {\n calcNodeError(node)\n }\n } else {\n calcNodeError(node)\n }\n } else if ('md' === type) {\n calcMaxdiffNodeError(node)\n }\n}\nconst calcErrors = (questions = [], stats = {}) => {\n for (const [id, answer] of Object.entries(stats)) {\n const question = questions.find(q => ((0 < q.position && `q${q.position}`) || q.id) == id)\n if (!question || !answer) continue\n\n if (Object.hasOwn(question, 'blocks') && null != question.blocks) {\n question.blocks.forEach(b => {\n if (b.format != undefined && true == b.format.percentsOnly) return\n calcErrorsForNode(b.variant || b.subtype, b.path && b.path.length ? getIn(b.path, answer) : answer)\n })\n } else {\n const type = question.variant || question.type\n calcErrorsForNode(type, answer)\n }\n }\n}\n\nconst calcNodeStatData = node => {\n Object.keys(node).forEach(key => {\n if (null == node[key] || 'object' != typeof node[key] || null == key.match(/^a\\d+$/i)) return\n node[key].amount = node[key].amount || 0\n node[key].percents = node[key].percents || 0\n })\n\n const respTotal = Object.keys(node).reduce((memo, key) => {\n if (null == node[key] || 'object' != typeof node[key] || null == key.match(/^a\\d+$/i)) return memo\n return memo + (node[key].amount || 0)\n }, 0)\n node.respTotal = respTotal\n\n Object.keys(node).forEach(key => {\n if (null == node[key] || 'object' != typeof node[key] || null == key.match(/^a\\d+$/i)) return\n node[key].respPercents = parseFloat(((100 * node[key].amount) / respTotal || 0).toFixed(2))\n })\n}\n\nconst calcNodeStatDataByType = (type, subtype, answer = {}) => {\n if (['rb', 'cb', 'oex', 'sft'].includes(type)) {\n calcNodeStatData(answer)\n }\n if ('mp' == type && 'default' == subtype) {\n Object.keys(answer).forEach(key => {\n if (null == answer[key] || 'object' != typeof answer[key] || null == key.match(/^b\\d+$/i)) return\n calcNodeStatData(answer[key])\n })\n }\n}\n\nconst calcStatData = (questions = [], stats = {}) => {\n for (const [id, answer] of Object.entries(stats)) {\n const question = questions.find(q => ((0 < q.position && `q${q.position}`) || q.id) == id)\n if (!question || !answer) continue\n\n if (Object.hasOwn(question, 'blocks') && null !== question.blocks) {\n question.blocks.forEach(b =>\n calcNodeStatDataByType(b.variant || b.subtype, b.subType, b.path ? getIn(b.path, answer) : answer)\n )\n } else {\n const type = question.variant || question.type\n calcNodeStatDataByType(type, question.subType, answer)\n }\n }\n calcErrors(questions, stats)\n}\n\nconst findNeighbors = (sorted_array, included_indexes, target_idx, threshold) => {\n const target_point = sorted_array[target_idx]\n let neighbors = []\n // below search\n const target_included_idx = included_indexes.indexOf(target_idx)\n for (let _i = target_included_idx; _i >= 0; _i--) {\n const distance = sorted_array[included_indexes[_i]].x - target_point.x\n if (distance > threshold) {\n break\n } else {\n neighbors.push(included_indexes[_i])\n }\n }\n neighbors = neighbors.reverse()\n // above search\n for (let _i = target_included_idx + 1; _i < included_indexes.length; _i++) {\n if (sorted_array[included_indexes[_i]].x - target_point.x > threshold) {\n break\n } else {\n neighbors.push(included_indexes[_i])\n }\n }\n // list of neighbor indexes\n return neighbors\n}\n\nconst findNeighborsXY = (sorted_x, included_indexes, target_point_index, threshold) => {\n const target_point = sorted_x[target_point_index]\n\n // find target point in sorted arrays\n const x_neighbors_idxs = findNeighbors(sorted_x, included_indexes, target_point_index, threshold)\n\n const real_neighbors = x_neighbors_idxs.filter(\n nb_idx =>\n Math.sqrt(Math.pow(sorted_x[nb_idx].x - target_point.x, 2) + Math.pow(sorted_x[nb_idx].y - target_point.y, 2)) <=\n threshold\n )\n\n return real_neighbors\n}\n\nconst findGroup = (sorted_array, included_indexes, threshold) => {\n let group_idxs = [] // resulting array of indexes\n let neighbors = [included_indexes[0]] // intermediate array of indexes\n let new_neighbors = [included_indexes[0]]\n\n let remaining_indexes = included_indexes.slice()\n while (neighbors.length > 0 && remaining_indexes.length > 0) {\n new_neighbors = []\n neighbors.forEach(target_idx => {\n const last_found_neighbors = findNeighborsXY(sorted_array, remaining_indexes, target_idx, threshold)\n new_neighbors = new_neighbors.concat(last_found_neighbors)\n remaining_indexes = remaining_indexes.filter(el => !last_found_neighbors.includes(el))\n })\n\n group_idxs = group_idxs.concat(new_neighbors)\n neighbors = new_neighbors\n }\n return group_idxs\n}\n\nconst calcPointsGroups = (points = [], threshold = 0) => {\n const sortedByX = points.sort((a, b) => a.x - b.x)\n\n let _indexes = sortedByX.map((_p, index) => index)\n const point_groups = []\n\n while (_indexes.length > 0) {\n const neighbors_group = findGroup(sortedByX, _indexes, threshold)\n point_groups.push(neighbors_group)\n _indexes = _indexes.filter(idx => !neighbors_group.includes(idx))\n }\n\n const groups = point_groups.map(group => group.map(index => sortedByX[index]))\n return groups\n}\n\nexport default {\n calcStatData,\n calcErrors,\n calcErrorForNode,\n calcPointsGroups,\n constants,\n normaldist,\n qbeta,\n tcdf,\n gammaln,\n tScoreCritical,\n sigTest,\n sigTestMeanTwoSample\n}\n"],"names":["abs","Math","exp","log","pow","sqrt","PI","fpmin","visibleProbability","zScore","constants","confidenceLevels","map","_","i","normaldist","to","z","t","gammaln","x","xx","y","j","cof","ser","tmp","betacf","a","b","m2","aa","del","h","m","qab","qap","qam","c","d","ibeta","bt","qbeta","p","lna","lnb","u","al","w","a1","b1","afac","min","Betinc","X","A","B","C9","A0","B0","A1","B1","M9","A2","tcdf","df","Error","S","Z","BT","betacdf","res","round","tScoreCritical","significanceLevel","tLeft","tRight","pvalLeft","pvalRight","epsilon","calcErrorForNode","amount","total","conf_level","arguments","length","undefined","errLO","errHI","max","calcNodeError","node","Array","isArray","is","Object","zScoreKeys","keys","forEach","key","hasOwn","base","_i2","_zScoreKeys","zScoreKey","err","assign","_defineProperty","String","Number","percents","respTotal","respErr","respAmount","respPercents","calcMaxdiffNodeError","_step","elements","filter","k","test","_iterator","_createForOfIteratorHelper","_loop","value","confLevel","error","n","sd","confidenceLevel","isNaN","se","sigTestGetErrorMeanOneSample","rawAmount","probAmount","raw","_unused","s","done","e","f","baseQuestionTypes","countableQuestionTypes","calcErrorsForNode","type","includes","some","calcErrors","_ref2","questions","stats","_loop2","_ref","_Object$entries","_i3","id","_slicedToArray","answer","question","find","q","position","blocks","format","percentsOnly","variant","subtype","path","getIn","entries","calcNodeStatData","match","reduce","memo","parseFloat","toFixed","calcNodeStatDataByType","findNeighborsXY","sorted_x","included_indexes","target_point_index","threshold","target_point","x_neighbors_idxs","sorted_array","target_idx","neighbors","target_included_idx","indexOf","_i","push","reverse","findNeighbors","nb_idx","calcStatData","_ref4","_loop3","_ref3","_Object$entries2","_i4","subType","calcPointsGroups","sortedByX","sort","_indexes","_p","index","point_groups","_loop4","neighbors_group","group_idxs","new_neighbors","remaining_indexes","slice","last_found_neighbors","concat","el","findGroup","idx","group","sigTest","x1","x2","n1","n2","conf","p1","p2","pooledP","pValue","pValueByZ","sigTestMeanTwoSample","mu1","mu2","sd1","sd2"],"sourceRoot":""}