Vamos a ver las funciones estadísticas de varianza, desviación típica y coefeciente de variación con Kotlin. Partiremos de una lista de elementos Double y crearemos extensiones de la lista para calcularlas.
Varianza. La varianza tiene la siguiente formula.
o lo que es lo mismo
Equivale al cuadrado de la desviación típica
fun List.variance(): Double { val n = this.count() val average = this.average() return this.map { (it - average).pow(2.0) / n}.sum() }
Así que si la la desviación al cuadro es la varianza, podemos obtener la desviación obteniendo la raiz de la varianza.
fun List<Double>.stdDeviation() = sqrt(this.variance())
Por último el coeficiente de variación que es igual a la relación entre la desviación típica y el promedio.
fun List<Double>.coefficientOfVariation() = stdDeviation() / this.average()
Obtenermos una muestra aleatoria y con pocas líneas de código el resultado:
val list = (0..10).map { n-> Random.nextDouble(5.0,10.0) } println(list) println("Average: ${list.average()}") println("Variance: ${list.variance()}") println("Std Deviation: ${list.stdDeviation()}")
[5.1126146370135555, 7.961926277327813, 6.030297997339725, 7.346200593709344, 6.977298121605789, 6.480337764164781, 9.12926821809771, 9.830048028655337, 7.107841652359342, 7.047870562367113, 8.943727133742051] Average: 7.451584635125688 Variance: 1.8100002521711398 Std Deviation: 1.3453624984260337 Coefficient: 0.18054716738828816