Desvio Padrao

11 respostas
nicoweda

Ola,

Alguem conhece alguma classe que me ajude a fazer o calculo de desvio padrao??

Grato

11 Respostas

cassio

Poxa, faz o método ai, é bem fácil!

onde:
:arrow: sigma = desvio padrão
:arrow: N = quantidade de elementos, medições, valores ou o nome que você quiser dar
:arrow: xi = o valor ou medição atual (você vai fazer um laço para percorrê-los)
:arrow: x “barrado” = média aritmética dos valores

ALGORITMO

:arrow: Guarde seus valores em um vetor
:arrow: Calcule a média aritmética (some todos os valores e divida o resultado pela quantidade de valores (o tamanho do seu vetor). Guarde isso em uma variável.
:arrow: Faça um novo laço que percorra novamente todos os elementos e vá acumulando em uma variável “somatório” o quadrado do resultado da diferença entre cada xi e a média.
:arrow: Terminado o laço, basta extrair a raiz quadrada de 1/N multiplicado por seu somatório.

peczenyj

O quadrado da média menos a média dos quadrados (multiplicado por um fator…) ?

cleitonmoura18

:D :D :D :D :D :D :D :D :D :D

package br.ufpi.analise;

import org.apache.commons.math.stat.descriptive.moment.Variance;

/**Classe que ora fazer todos os calculos estatistico da aplicação
 * @author Cleiton
 * 
 */
public class Estatistica {
	private Variance variancia;

	/**
	 * 
	 */
	public Estatistica() {
		super();
		variancia = new Variance();
	}

	/**
	 * Obtem o desvio padrão de um array de numeros passados
	 * 
	 * @param observed
	 * @return
	 */
	public double desvioPadrao(double[] observed) {
		return Math.sqrt(this.variancia.evaluate(observed));
	}
}
Para baixar o jar http://commons.apache.org/math/download_math.cgi
d34d_d3v1l

Tipo, é fácil de fazer, rapidinho e tal…
Mas sei lá… acho que já deveria existir algo pronto pra esse tipo de coisa…


errado?

cleitonmoura18

Vc esta certo, mas achei isto ai bastante simples.
Praticamente é chamar dois métodos.

cleitonmoura18
/**
	 * Obtem o desvio padrão de uma Lista de numeros passados
	 * 
	 * @param temposDetodosFluxos
	 * @return
	 */
	public double desvioPadrao(List<Long> objetos) {
		if (objetos.size() == 1) {
			return 0.0;
		} else {
			double mediaAritimetica = mediaAritimetica(objetos);
			double somatorio = 0l;
			for (int i = 0; i < objetos.size(); i++) {
				double result = objetos.get(i) - mediaAritimetica;
				somatorio = somatorio + result * result;
			}
			return Math.sqrt(((double) 1 /( objetos.size()-1))
					* somatorio);
		}
	}


	/**
	 * Obtem o a media aritmetica de um array de Elementos
	 * 
	 * @param temposDetodosFluxos
	 * @return
	 */
	public double mediaAritimetica(List<Long> objetos) {
		double somatorio = 0l;
		for (Long d : objetos) {
			somatorio += d;
		}
		return somatorio / objetos.size();
	}
B

d34d_d3v1l:
Tipo, é fácil de fazer, rapidinho e tal…
Mas sei lá… acho que já deveria existir algo pronto pra esse tipo de coisa…


errado?

http://commons.apache.org/math/
Veja: http://commons.apache.org/math/apidocs/org/apache/commons/math3/stat/descriptive/SummaryStatistics.html

regis_hideki

Se for usar várias outras fórmulas faz sentido; usar algumas, até vai… mas baixar uma lib só pra usar o desvio padrão, é demais…

E

OK - mas você confia mais no meu cálculo de desvio-padrão ou no cálculo que essa biblioteca disponibiliza :?:

ErickRAR

mediaAritimetica não pode ser long.

cleitonmoura18

vlw. alterado para double

Criado 18 de maio de 2007
Ultima resposta 13 de set. de 2012
Respostas 11
Participantes 9