GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como calcular a MODA (estatística)


#1

Alguém sabe, por favor, qual função devo usar (e se ela existe) pra calcular a moda em um conjunto de números?
Estou guardando os números em um int[];

só pra lembrar:

A moda é o valor mais freqüente em um conjunto de valores numéricos. A moda pode não existir e, mesmo que exista, pode não ser única. Exemplos:
1,1,3,3,5,7,7,7,11,13 tem moda 7
3,5,8,11,13,18 não tem moda
3,5,5,5,6,6,7,7,7,11,12 tem duas modas: 5,7 (bimodal).

obrigado
[]'s

Artur Sampaio


#2

Olá,

Deve até ter, mas isso é um algoritmo bem simples... qual exatamente a sua dificuldade?


#3

sim.. sem dúvida q o algoritmo é simples.
O fato é q se a linguagem já disponibilizar alguma função pra isso, prefiro utilizá-la do que escrever novamente, sacow?

vlw
[]'s
Artur Sampaio


#4

tem varias maneiras de resolver isso..
bota a cabeça pra pensar..
uma maneira pra fazer isso eh vc colocar os valores num array. Tipo:
elemento[i] = n
onde "i" eh o numero que vai se repetir e "n" eh o numero de vezes q ele se repete.

falou


#5

Olá!

Respondendo sua pergunta, não há uma função pronta na API do Java para este problema.

Mas, como já disseram, é um problema simples de ser resolvido. Se tiver dificuldades quanto ao algoritmo (depois de tentar bastante) pode recorrer ao guj :smiley:

edit: generalizar geralmente é um erro :smiley:


#6

Dá uma olhada em http://jakarta.apache.org/commons/math

De repente tem o q vc precisa.


#7

bem eu to com a mesma duvida q ele acima..de como calcular a moda em java, tenho um trabalho a ser terminado, pede estatisticas como a moda, mediana, media, maior numero, menor numero e primeiro valor...

pra mim so falta terminar a moda...talvez a resposta de pra minha duvida ,seja equivalente a do inicio do forumm, calculo de moda..
bem deixo o q ja fiz em anexo para todos verem, tanto o main qt o construtores...
no aguardo, abracos.


#8

Eu desenvolvi o algoritmo do calculo da moda. É o seguinte.

    public int moda() {
        int[] cont = new int[CPD.controladora + 1];
        int vezes = 0;
        int indice = 0;
        for (int i=0; i < (CPD.controladora + 1); i++) {
            for (int j=0;j < (CPD.controladora + 1); j++) {
                if(vet[i] == vet[j]) {
                    cont[i] = cont[i] + 1;
                }
            }
        }
        vezes = cont[0];
        for (int i=0; i < cont.length; i++) {
            if (cont[i] > vezes) {
                vezes = cont[i];
                indice = i;
            }
        }
        return vet[indice];
    }

Explicando:
A moda nesse caso retorna o numero que mais se repete dentro de um vetor.
a variável static CPD.controladora controla os valores que foram inseridos pelo usuário, ou seja, controla o indice do último valor inserido pelo usuário, pq se raciocinarmos, só podemos criar estatísticas em cima de valores que foram atribuídos no vetor pelo usuário, e nao deixar o vetor com apenas os valores default, nesse caso, seria 0.
O vetor de inteiros tem a referência vet, que é o vetor que está sendo manipulado nesta estatística!
Qualquer dúvida sobre o algoritmo, ou sobre estatísticas matemáticas mande em email para, leandro.storoli@gmail.com

Valew pessoal!


#9

Podemos até recorrer para coleções do Java, mas somente para auxiliar.
Neste caso como a dúvida presume-se em um trabalho acadêmico, então melhor entender o que é feito e tentar desenvolver!!!


#10

//Calculo da Moda
	public int moda(){		
		int nVezes = 0;
		int moda = 0;
		int comparaV = 0;
		for(int p = 0; p < this.v.getV().length; p++){
			nVezes = 0;
			for(int k = p+1; k < this.v.getV().length; k++){
			    if( this.v.getV(p).getN() == this.v.getV(k).getN() ){
				    ++nVezes;				
			    }
			}
			if (nVezes > comparaV ){
		    	moda = this.v.getV(p).getN();
		    	comparaV = nVezes;
		    }    
		}		
		return moda;	
	}

#11

leandros gostei muito da sua explicação, mais se ao invés de o usuário ter que inserir, como ficaria se eu tivesse uma coleção de dados em um servidor e quisesse trata-los utilizando a mode e a mediana?


#12