Created
February 9, 2021 14:59
-
-
Save event15/d520647d30acb7f5680cbb32ddc832c5 to your computer and use it in GitHub Desktop.
Badanie poziomu IG produktu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function incrementalArea(array $levels, float $xUnit = 1.0): float | |
{ | |
$yFactorTotal = 0.0; | |
$zeroLevel = $levels[0]; | |
$relativeLevels = array_map(static function ($level) use ($zeroLevel) { | |
return $level - $zeroLevel; | |
}, $levels); | |
$n = count($relativeLevels); | |
for ($i = 1; $i < $n; $i++) { | |
$current = $relativeLevels[$i]; | |
$previous = $relativeLevels[$i - 1]; | |
if ($current >= 0 && $previous >= 0) { | |
// positive trapezoid | |
$increase = $current + $previous; | |
} else if ($current <= 0 && $previous <= 0) { | |
// skipping negative trapezoid | |
$increase = 0.0; | |
} else { | |
$positive = max($previous, $current); | |
$negative = min($previous, $current); | |
$increase = $positive * $positive / (abs($negative) + $positive); | |
} | |
$yFactorTotal += $increase; | |
} | |
return $yFactorTotal * $xUnit / 2.0; | |
} | |
$test1 = [90, 93, 145, 206, 217, 205, 189, 163, 159, 126]; | |
$iaucTest1 = incrementalArea($test1, 15.0); | |
echo "IAUC (test 1) = {$iaucTest1} [min*mg/dL]" . PHP_EOL; | |
$test2 = [98, 104, 148, 186, 185, 180, 166, 141, 122, 116]; | |
$iaucTest2 = incrementalArea($test2, 15.0); | |
echo "IAUC (test 2) = {$iaucTest2} [min*mg/dL]" . PHP_EOL; | |
$test3 = [90, 93, 155, 176, 179, 183, 146, 132, 96, 70]; | |
$iaucTest3 = incrementalArea($test3, 15.0); | |
echo "IAUC (test 3) = {$iaucTest3} [min*mg/dL]" . PHP_EOL; | |
$chleb = [92, 94, 102, 128, 125, 125, 99, 96, 90, 88]; | |
$iuacChleb = incrementalArea($chleb, 15.0); | |
echo "IAUC (chleb) = {$iuacChleb} [min*mg/dL]" . PHP_EOL; | |
$avg = ($iaucTest1 + $iaucTest2 + $iaucTest3)/3; | |
echo "AVG tests = " . $avg . ' [min*mg/dL]' . PHP_EOL; | |
$ig = round(($iuacChleb)/$avg*100.0); | |
echo "IG (z avg) = {$ig}" . PHP_EOL; | |
$ig = round(($iuacChleb)/$iaucTest2*100.0); | |
echo "IG (bez avg) = {$ig}"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment