UNPKG

w-statistic

Version:
63 lines (53 loc) 1.64 kB
import size from 'lodash-es/size.js' import map from 'lodash-es/map.js' import filter from 'lodash-es/filter.js' import isarr from 'wsemi/src/isarr.mjs' import isnum from 'wsemi/src/isnum.mjs' import cdbl from 'wsemi/src/cdbl.mjs' import jt from './jStat.mjs' /** * 計算陣列內有效數字之標準差 * * Unit Test: {@link https://github.com/yuda-lyu/w-statistic/blob/master/test/arrStd.test.js Github} * @memberOf w-statistic * @param {Array} arr 輸入陣列,只提取有效數字(或為字串的數字)進行計算 * @returns {Number} 回傳標準差 * @example * * let arr * * arr = ['abc', '-2.5', -2.5, '-1', -1, '-0.1', -0.1, '0', 0, '0.1', 0.1, '1', 1, '2.5', 2.5, 22.5, 'xyz'] * console.log(arrStd(arr)) * // => 5.985339231345682 * * arr = ['abc', '0', 0, '0.1', 0.1, '1', 1, '2.5', 2.5, 22.5, 'xyz'] * console.log(arrStd(arr)) * // => 7.269456650947167 * * arr = [55, 68, 45, 78, 150, 241, 162, 156, 182, 125, 75, 89, 91, 95, 92, 65, 75, 85, 95, 105, 132, 120, 142, 110, 111, 130, 128, 130, 108, 109] * console.log(arrStd(arr)) * // => 40.847473507599254, 為除以29(n-1)的std * */ function arrStd(arr) { //check if (!isarr(arr)) { return null } if (size(arr) === 0) { return null } //arr arr = filter(arr, (v) => { return isnum(v) }) arr = map(arr, cdbl) //check if (size(arr) <= 1) { //標準差至少要2點才能計算 return null } // let r = ss.sampleStandardDeviation(arr) let r = jt.sampleStd(arr) return r } export default arrStd