All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.iheart.thomas.analysis.bayesian.KPIIndicator.scala Maven / Gradle / Ivy

package com.iheart.thomas.analysis
package bayesian

import com.iheart.thomas.analysis.bayesian.models.{
  BetaModel,
  LogNormalModel,
  NormalModel
}
import com.stripe.rainier.sampler.{RNG, SamplerConfig}

trait KPIIndicator[Model] {
  def apply(
      model: Model
    ): Indicator
}

object KPIIndicator {
  def sample[Model](
      model: Model
    )(implicit indicator: KPIIndicator[Model],
      sampler: SamplerConfig,
      rng: RNG
    ): Seq[Double] = indicator(model).predict()

  implicit val betaInstance: KPIIndicator[BetaModel] =
    (model: BetaModel) => Variable(model.prediction)

  implicit val normalInstance: KPIIndicator[NormalModel] =
    (model: NormalModel) => Variable(model.mean)

  implicit val logNormalInstance: KPIIndicator[LogNormalModel] =
    (model: LogNormalModel) => Variable(model.mean)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy