From 598e38e1835ce2161fea3d85fbd9b784432192dd Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 21 Feb 2019 16:29:43 +0100 Subject: [PATCH 1/2] add standard deviation tests + std in bb per 100 hands --- .../android/ExampleInstrumentedUnitTest.kt | 18 +++++++++--------- .../android/calculus/Calculator.kt | 7 ++++++- .../android/model/realm/Session.kt | 6 ++++++ 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt index f81f2a2e..34fd0667 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/ExampleInstrumentedUnitTest.kt @@ -168,23 +168,23 @@ class ExampleInstrumentedUnitTest : RealmInstrumentedUnitTest() { Assert.fail("No netbbPer100Hands stat") } - val stdHourly = results.computedStat(Stat.STANDARD_DEVIATION_HOURLY) - if (stdHourly != null) { - assertEquals(141.42, stdHourly.value, delta) - } else { - Assert.fail("No stdHourly stat") - } - val std = results.computedStat(Stat.STANDARD_DEVIATION) if (std != null) { - assertEquals(282.84, std.value, delta) + assertEquals(200.0, std.value, delta) } else { Assert.fail("No std stat") } + val stdHourly = results.computedStat(Stat.STANDARD_DEVIATION_HOURLY) + if (stdHourly != null) { + assertEquals(50.0, stdHourly.value, delta) + } else { + Assert.fail("No stdHourly stat") + } + val std100 = results.computedStat(Stat.STANDARD_DEVIATION_BB_PER_100_HANDS) if (std100 != null) { - assertEquals(707.1, std100.value, delta) + assertEquals(250.0, std100.value, delta) } else { Assert.fail("No std100 stat") } diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt index 348d4312..863ba2e3 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -181,12 +181,16 @@ class Calculator { if (options.shouldComputeStandardDeviation()) { var stdSum: Double = 0.0 + var stdBBper100HandsSum: Double = 0.0 sessions.forEach { s -> stdSum += Math.pow(s.value - average, 2.0) + stdBBper100HandsSum += Math.pow(s.bbPer100Hands - hourlyRate, 2.0) } val standardDeviation: Double = Math.sqrt(stdSum / sessions.size) + val standardDeviationBBper100Hands: Double = Math.sqrt(stdBBper100HandsSum / sessionSets.size) var hourlyStdSum: Double = 0.0 + sessionSets.forEach { sg -> hourlyStdSum += Math.pow(sg.hourlyRate - hourlyRate, 2.0) } @@ -194,7 +198,8 @@ class Calculator { results.addStats(setOf( ComputedStat(STANDARD_DEVIATION, standardDeviation), - ComputedStat(STANDARD_DEVIATION_HOURLY, hourlyStandardDeviation) + ComputedStat(STANDARD_DEVIATION_HOURLY, hourlyStandardDeviation), + ComputedStat(STANDARD_DEVIATION_BB_PER_100_HANDS, standardDeviationBBper100Hands) )) } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 7f328946..39055af6 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -218,6 +218,12 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource return 0.0 } + @Ignore + var bbPer100Hands: Double = 0.0 + get() { + return this.bbNetResult / this.estimatedHands * 100.0 + } + @Ignore override var bigBlindSessionCount: Int = if (this.cgBigBlind != null) 1 else 0 From f900a89e4e201adfca43888ef8b0ed6952dd35a0 Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 25 Feb 2019 10:59:14 +0100 Subject: [PATCH 2/2] Fix build issue + computation --- .../pokeranalytics/android/calculus/Calculator.kt | 13 ++++++++----- .../pokeranalytics/android/calculus/Computable.kt | 2 ++ .../pokeranalytics/android/model/realm/Session.kt | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt index 863ba2e3..c1a9ae52 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -177,20 +177,23 @@ class Calculator { )) + val bbPer100Hands = bbSum / totalHands * 100 + // Standard Deviation if (options.shouldComputeStandardDeviation()) { + // Session var stdSum: Double = 0.0 var stdBBper100HandsSum: Double = 0.0 - sessions.forEach { s -> - stdSum += Math.pow(s.value - average, 2.0) - stdBBper100HandsSum += Math.pow(s.bbPer100Hands - hourlyRate, 2.0) + sessions.forEach { session -> + stdSum += Math.pow(session.value - average, 2.0) + stdBBper100HandsSum += Math.pow(session.bbPer100Hands - bbPer100Hands, 2.0) } val standardDeviation: Double = Math.sqrt(stdSum / sessions.size) - val standardDeviationBBper100Hands: Double = Math.sqrt(stdBBper100HandsSum / sessionSets.size) + val standardDeviationBBper100Hands: Double = Math.sqrt(stdBBper100HandsSum / sessions.size) + // Session Set var hourlyStdSum: Double = 0.0 - sessionSets.forEach { sg -> hourlyStdSum += Math.pow(sg.hourlyRate - hourlyRate, 2.0) } diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt index 0f01a82a..d4aabc47 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Computable.kt @@ -18,6 +18,8 @@ interface SessionInterface : Summable { var bbNetResult: Double var bigBlindSessionCount: Int // 0 or 1 var buyin: Double + var bbPer100Hands: Double + } /** diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 95b2025b..298dc3dd 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -240,7 +240,7 @@ open class Session : RealmObject(), SessionInterface, Savable, } @Ignore - var bbPer100Hands: Double = 0.0 + override var bbPer100Hands: Double = 0.0 get() { return this.bbNetResult / this.estimatedHands * 100.0 }