package core_bench

  1. Overview
  2. Docs

Source file analysis.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
open Core
open Linear_algebra_wrapper

module M = Measurement
module AC = Analysis_config



let analyze_one meas analysis_config =
  let resp = analysis_config.AC.responder in
  let preds = Array.of_list analysis_config.AC.predictors in
  let open Or_error.Monad_infix in
  ols meas ~resp ~preds
  >>= fun coeffs ->
  let r_square =
    if analysis_config.AC.r_square
    then Some (r_square meas ~resp ~preds ~coeffs)
    else None
  in
  let trials = analysis_config.AC.bootstrap_trials in
  (if trials > 0 then begin
     bootstrap ~trials meas ~resp ~preds >>| fun bs ->
     (Array.mapi preds ~f:(fun i predictor ->
       Analysis_result.Coefficient.create
         ~predictor
         ~estimate:coeffs.(i)
         ~ci95:bs.(i)
         ()))
   end else begin
     Ok (Array.mapi preds ~f:(fun i predictor ->
        Analysis_result.Coefficient.create
         ~predictor
         ~estimate:coeffs.(i)
         ()))
   end)
  >>| fun coefficients ->
  Analysis_result.Regression.create
    ~responder:resp
    ?r_square
    ~coefficients
    ~regression_name:analysis_config.Analysis_config.regression_name
    ()


let analyze meas analysis_configs =
  Or_error.of_exn_result
    (Result.try_with
       (fun () ->
          Analysis_result.create
            ~name:(M.name meas)
            ~test_name:(M.test_name meas)
            ~file_name:(M.file_name meas)
            ~module_name:(M.module_name meas)
            ~sample_count:(M.sample_count meas)
            ~largest_run:(M.largest_run meas)
            ~regressions:(Array.of_list_map analysis_configs
                            ~f:(fun analysis_config ->
                              Or_error.ok_exn
                                (Or_error.tag (analyze_one meas analysis_config)
                                   ~tag:(M.name meas))))))
OCaml

Innovation. Community. Security.