aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend33
1 files changed, 26 insertions, 7 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
index 86f5f23c..08d8704a 100644
--- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
@@ -1,22 +1,18 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance 1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance
2 2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup 3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup
6import java.util.HashMap 4import java.util.HashMap
7import java.util.HashSet 5import java.util.HashSet
8import java.util.List 6import java.util.List
9import java.util.Set
10import org.apache.commons.math3.stat.inference.KolmogorovSmirnovTest 7import org.apache.commons.math3.stat.inference.KolmogorovSmirnovTest
11 8
12class KSDistance extends CostDistance { 9class KSDistance extends CostDistance {
13 var static ksTester = new KolmogorovSmirnovTest(); 10 var static ksTester = new KolmogorovSmirnovTest();
14 var MetricSampleGroup g; 11 var MetricSampleGroup g;
15 new(Domain d){
16 var metrics = RepMetricsReader.read(d);
17 this.g = metrics;
18 }
19 12
13 new(MetricSampleGroup g){
14 this.g = g;
15 }
20 override double mpcDistance(List<Double> samples){ 16 override double mpcDistance(List<Double> samples){
21 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1 17 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1
22 if(samples.size < 2) return 1; 18 if(samples.size < 2) return 1;
@@ -63,4 +59,27 @@ class KSDistance extends CostDistance {
63 59
64 return value; 60 return value;
65 } 61 }
62
63 def nodeTypeDistance(HashMap<String, Double> samples){
64 var typesDistMap = g.nodeTypeSamples;
65 var sourceDist = newArrayList();
66 var instanceDist = newArrayList();
67
68 for(key : typesDistMap.keySet()){
69 sourceDist.add(typesDistMap.get(key));
70 instanceDist.add(samples.getOrDefault(key, 0.0));
71 }
72
73 // Since we already know the pdf, we compute the ks-test manully
74 var ksStatistics = 0.0;
75 var sum1 = 0.0;
76 var sum2 = 0.0;
77 for(var i = 0; i < sourceDist.size(); i++){
78 sum1 += sourceDist.get(i);
79 sum2 += instanceDist.get(i);
80
81 ksStatistics = Math.max(ksStatistics, Math.abs(sum1 - sum2));
82 }
83 return ksStatistics;
84 }
66} \ No newline at end of file 85} \ No newline at end of file