More value heuristics
[contractdashboard.git] / heuristics / valueHeuristics.php
blob:a/heuristics/valueHeuristics.php -> blob:b/heuristics/valueHeuristics.php
--- a/heuristics/valueHeuristics.php
+++ b/heuristics/valueHeuristics.php
@@ -1,8 +1,8 @@
-
-        - large contract value
-          - chi-square test for outliers / standard dev from mean/median
-          - percent of total contracts for supplier/agency
-   $heuristics["METADATA_DUPLICATED_DESCRIPTION"] = Array(
+<?php 
+      /*  - large contract value
+          - standard dev from mean/median
+          - percent of total contracts for supplier/agency*/
+   $heuristics["VALUE_LARGE_CONTRACT_OVERALL"] = Array(
 	"description" => "unusual value for time of year");
 function METADATA_DUPLICATED_DESCRIPTION($cn)
 {
@@ -12,12 +12,15 @@
 	return ($days > 45 ? 1 : 0);
 }
 
-        - peculiar value
+      /*  - peculiar value
         - Just under 80k, amplified if other contracts with same supplier are just under
-    - unusual variation amount
-        - absolute value; large reductions as well as large increases
-        
-           $heuristics["METADATA_DUPLICATED_DESCRIPTION"] = Array(
+      */
+         $heuristics["VALUE_NEAR_THRESHOLD"] = Array(
+	"description" => "unusual value for time of year");
+      /*
+    - unusual variation amount - absolute value; large reductions as well as large increases
+      */
+           $heuristics["VALUE_LARGE_VARIATION"] = Array(
 	"description" => "unusual value for time of year");
 function METADATA_DUPLICATED_DESCRIPTION($cn)
 {
@@ -26,3 +29,30 @@
 	$days = intval($diff / 24);
 	return ($days > 45 ? 1 : 0);
 }
+
+/*   - unusual value for time of year
+        - compare to all other records in last 2 weeks
+        - ie. many large contracts in june so takes more to standout*/
+$heuristics["VALUE_HIGH_FOR_MONTH"] = Array(
+	"description" => "unusual value for time of year"
+);
+function VALUE_HIGH_FOR_MONTH($cn, $monthAsInt)
+{
+	$averageContractPeriod = getAverageContractPeriod();
+	$diff = strtotime($cn['contractStart']) - strtotime($cn['publishDate']);
+	$days = intval($diff / 24);
+	return ($days > 45 ? 1 : 0);
+}
+$monthlyValueAverage = Array();
+function getAgencyTransactions($agencyName)
+{
+	global $agencyTransactions;
+	if (!$agencyTransactions[$agencyName]) {
+		$query = 'select count(*) from contractnotice where agencyName = "' . $agencyName . '"';
+		$result = mysql_query($query);
+		$r = mysql_fetch_array($result, MYSQL_BOTH);
+		$agencyTransactions[$agencyName] = $r[0];
+	}
+	return $agencyTransactions[$agencyName];
+}
+?>