RiskRatio.fromPrevalence constructor

RiskRatio.fromPrevalence(
  1. int improvedTotalCount,
  2. int improvedWithOutcome,
  3. int originalTotalCount,
  4. int originalWithOutcome,
)

Implementation

factory RiskRatio.fromPrevalence(
    int improvedTotalCount,
    int improvedWithOutcome,
    int originalTotalCount,
    int originalWithOutcome) {
  final n1 = improvedTotalCount;
  final x1 = improvedWithOutcome;
  final n2 = originalTotalCount;
  final x2 = originalWithOutcome;
  assert(n1 > 0);
  assert(x1 <= n1);
  assert(x1 > 0);
  assert(n2 > 0);
  assert(x2 <= n2);
  assert(x2 > 0);

  final p1 = x1 / n1;
  final p2 = x2 / n2;
  final rr = p1 / p2;

  /// 95% confidence z-score
  const z = 1.96;
  final c1 = ((n1 - x1) / x1) / n1;
  final c2 = ((n2 - x2) / x2) / n2;
  final c = z * sqrt(c1 + c2);
  final ln = log(rr);

  final lowerLn = ln - c;
  final upperLn = ln + c;

  final lower = exp(lowerLn);
  final upper = exp(upperLn);

  return RiskRatio(rr, lower, upper);
}