commit
						5ad426f4a9
					
				
							
								
								
									
										13
									
								
								__tests__/Bandwidth__Test.re
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								__tests__/Bandwidth__Test.re
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | open Jest; | ||||||
|  | open Expect; | ||||||
|  | 
 | ||||||
|  | describe("Bandwidth", () => { | ||||||
|  |   test("nrd0()", () => { | ||||||
|  |     let data = [|1., 4., 3., 2.|]; | ||||||
|  |     expect(Science.nrd0(data)) |> toEqual(0.7635139420854616); | ||||||
|  |   }); | ||||||
|  |   test("nrd()", () => { | ||||||
|  |     let data = [|1., 4., 3., 2.|]; | ||||||
|  |     expect(Science.nrd(data)) |> toEqual(0.899249754011766); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  | @ -60,7 +60,8 @@ | ||||||
|     "react-use": "^13.27.0", |     "react-use": "^13.27.0", | ||||||
|     "reason-react": ">=0.7.0", |     "reason-react": ">=0.7.0", | ||||||
|     "reschema": "1.3.0", |     "reschema": "1.3.0", | ||||||
|     "tailwindcss": "1.2.0" |     "tailwindcss": "1.2.0", | ||||||
|  |     "science": "1.9.3" | ||||||
|   }, |   }, | ||||||
|   "alias": { |   "alias": { | ||||||
|     "react": "./node_modules/react", |     "react": "./node_modules/react", | ||||||
|  |  | ||||||
							
								
								
									
										28
									
								
								src/utility/Science.re
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/utility/Science.re
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | ||||||
|  | [@bs.val] [@bs.module "science"] [@bs.scope "stats"] | ||||||
|  | external variance: array(float) => float = "variance"; | ||||||
|  | 
 | ||||||
|  | [@bs.val] [@bs.module "science"] [@bs.scope "stats"] | ||||||
|  | external iqr: array(float) => float = "iqr"; | ||||||
|  | 
 | ||||||
|  | let len = x => E.A.length(x) |> float_of_int; | ||||||
|  | 
 | ||||||
|  | let nrd0 = x => { | ||||||
|  |   let hi = Js_math.sqrt(variance(x)); | ||||||
|  |   let lo = Js_math.minMany_float([|hi, iqr(x) /. 1.34|]); | ||||||
|  |   let e = Js_math.abs_float(x[1]); | ||||||
|  |   let lo' = | ||||||
|  |     switch (lo, hi, e) { | ||||||
|  |     | (lo, hi, e) when !Js.Float.isNaN(lo) => lo | ||||||
|  |     | (lo, hi, e) when !Js.Float.isNaN(hi) => hi | ||||||
|  |     | (lo, hi, e) when !Js.Float.isNaN(e) => e | ||||||
|  |     | _ => 1.0 | ||||||
|  |     }; | ||||||
|  |   0.9 *. lo' *. Js_math.pow_float(len(x), -0.2); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | let nrd = x => { | ||||||
|  |   let h = iqr(x) /. 1.34; | ||||||
|  |   1.06 | ||||||
|  |   *. Js_math.min_float(Js_math.sqrt(variance(x)), h) | ||||||
|  |   *. Js_math.pow_float(len(x), (-1.0) /. 5.0); | ||||||
|  | }; | ||||||
|  | @ -8579,6 +8579,11 @@ scheduler@^0.19.0: | ||||||
|     loose-envify "^1.1.0" |     loose-envify "^1.1.0" | ||||||
|     object-assign "^4.1.1" |     object-assign "^4.1.1" | ||||||
| 
 | 
 | ||||||
|  | science@1.9.3: | ||||||
|  |   version "1.9.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/science/-/science-1.9.3.tgz#ec89bac44aeff2e5a2d749aa496f377089903dd4" | ||||||
|  |   integrity sha1-7Im6xErv8uWi10mqSW83cImQPdQ= | ||||||
|  | 
 | ||||||
| screenfull@^5.0.0: | screenfull@^5.0.0: | ||||||
|   version "5.0.2" |   version "5.0.2" | ||||||
|   resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" |   resolved "https://registry.yarnpkg.com/screenfull/-/screenfull-5.0.2.tgz#b9acdcf1ec676a948674df5cd0ff66b902b0bed7" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user