Desvio Padrão em C#
Este tutorial irá apresentar os métodos para encontrar o desvio padrão dos elementos de uma lista em C#.
Desvio padrão com o método autodefinido em C#
O desvio padrão é a medida da dispersão da média nas estatísticas. É calculado tirando o quadrado da diferença de cada elemento do valor médio, somando todos os valores quadrados, dividindo a resposta pelo número total de valores e tirando a raiz quadrada do valor resultante.
Infelizmente, não existe um método integrado para calcular o desvio padrão em C#. Mas, podemos definir alguma lógica para calculá-lo. O exemplo de código a seguir nos mostra como podemos encontrar o desvio padrão dos elementos dentro de uma lista em 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);
}
}
}
Resultado:
Standard Deviation = 1.4142135623731
No código acima, criamos a função standardDeviation()
que calcula o desvio padrão dos elementos de uma lista de duplos em C#. Primeiro calculamos a média dos valores com a função sequence.Average()
. Em seguida, calculamos a soma do quadrado da diferença dos valores individuais da média e salvamos na variável sum
. No final, dividimos a sum
pelo número total de valores e calculamos sua raiz quadrada. Salvamos o resultado deste cálculo dentro da variável result
e retornamos a variável result
.
Desvio padrão com a função de extensão em C#
A lógica discutida no exemplo anterior também pode ser transformada em uma função de extensão para facilitar o uso. O exemplo de código a seguir nos mostra como alterar a lógica do exemplo anterior em um método de extensão em 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);
}
}
}
Resultado:
Standard Deviation = 1.4142135623731
No código acima, transformamos nosso código anterior em um método de extensão em C#.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn