HOWTO · Csharp

Desviación estándar en C#

Hay dos métodos principales que se pueden usar para calcular la desviación estándar de elementos en una lista en C#, el enfoque autodefinido y el método de extensión.

Este tutorial presentará los métodos para encontrar la desviación estándar de elementos de una lista en C#.

Desviación estándar con el método autodefinido en C#

La desviación estándar es la medida de la dispersión de la media en las estadísticas. Se calcula tomando el cuadrado de la diferencia de cada elemento del valor medio, sumando todos los valores al cuadrado, dividiendo la respuesta con el número total de valores y tomando una raíz cuadrada del valor resultante.

Desviación Estándar

Desafortunadamente, no existe un método integrado para calcular la desviación estándar en C#. Pero podemos definir alguna lógica para calcularlo. El siguiente ejemplo de código nos muestra cómo podemos encontrar la desviación estándar de los elementos dentro de una lista en C#.

using System;
using System.Collections.Generic;
using System.Linq;

namespace sd_list {
  class Program {
    static double standardDeviation(IEnumerable<double> sequence) {
      double result = 0;

      if (sequence.Any()) {
        double average = sequence.Average();
        double sum = sequence.Sum(d => Math.Pow(d - average, 2));
        result = Math.Sqrt((sum) / sequence.Count());
      }
      return result;
    }
    static void Main(string[] args) {
      List<double> intList = new List<double> { 1, 2, 3, 4, 5 };
      double standard_deviation = standardDeviation(intList);
      Console.WriteLine("Standard Deviation = {0}", standard_deviation);
    }
  }
}

Producción :

Standard Deviation = 1.4142135623731

En el código anterior, creamos la función standardDeviation() que calcula la desviación estándar de los elementos de una lista de dobles en C#. Primero calculamos la media de los valores con la función sequence.Average(). Luego calculamos la suma del cuadrado de la diferencia de los valores individuales de la media y la guardamos en la variable sum. Al final, dividimos la sum por el número total de valores y calculamos su raíz cuadrada. Guardamos el resultado de este cálculo dentro de la variable result y devolvimos la variable result.

Desviación estándar con la función de extensión en C#

La lógica discutida en el ejemplo anterior también se puede transformar en una función de extensión para facilitar su uso. El siguiente ejemplo de código nos muestra cómo cambiar la lógica del ejemplo anterior en un método de extensión en C#.

using System;
using System.Collections.Generic;
using System.Linq;

namespace sd_list {
  public static class ExtensionClass {
    public static double standardDeviation(this IEnumerable<double> sequence) {
      double average = sequence.Average();
      double sum = sequence.Sum(d => Math.Pow(d - average, 2));
      return Math.Sqrt((sum) / sequence.Count());
    }
  }
  class Program {
    static void Main(string[] args) {
      List<double> intList = new List<double> { 1, 2, 3, 4, 5 };
      double standard_deviation = intList.standardDeviation();
      Console.WriteLine("Standard Deviation = {0}", standard_deviation);
    }
  }
}

Producción :

Standard Deviation = 1.4142135623731

En el código anterior, transformamos nuestro código anterior en un método de extensión en C#.