Calculos Estatistica em Java

Preciso de códigos genéricos para me auxiliar a construir pequenas aplicações que meu professor de estatistica pediu! Preciso de exemplos de: média, mediana,moda, Variância amostral e populacional, Desvio padrão populacional e amostral, Coeficiente de variação e Diagrama ramos e folhas.

Pois não! Qual a dúvida?

1 curtida

Sua necessidade não é com a linguagem.
Sugestão: https://www.youtube.com/watch?v=a0IxPG3Ihu8&list=PLA0675987914E07BB

Esta generalização é relativa.
Uma linguagem que pode te auxiliar é a linguagem R.

1 curtida

tem que ser mesmo em Java ? Porque realmente, em R a sua vida ficaria muito mais fácil.

1 curtida

Não conheço essa linguagem R.

Sim pode ser em outra linguagem, sim!

Sim pode ser em outra linguagem, esta linguagem R nunca vi

é como construir isto tudo em uma ferramenta só e como cada um.

Fernanda, linguagem R, https://www.youtube.com/watch?v=plJw9QFew5A&list=PL4OAe-tL47sbzCgtBTthtX50T30CLToEZ
R: Fernanda

Desculpe a brincadeira da apresentação.
Ocorre que esta linguagem é pouco conhecida e a maioria da pessoas que fazem utilização dela trabalham justamente com probabilidade e estatística contudo, aparentemente há um trabalho para que ela não seja considerada apenas como uma ferramenta estatística, algo semelhante ocorre com a linguagem Mathematica, entretanto esta é paga e a outra free.

Infelizmente não posso ajudar muito com R, pois comecei a estudar a pouco tempo, por interesse em redes neurais, portanto, é uma linguagem que tenho interesse.

Como falamos de R, eu queria apenas demonstrar que tais tarefas podem ser executadas em java e a facilidade de construção depende de sua experiência e vontade de aprender.

A codificação a seguir é apenas uma amostra e considero a construção simples.
Obs.: não fiz tratamentos de exceção e se você não informar valores quando chamar métodos vai dar erro.

package crisis;

import java.util.Arrays;

import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

public class Crisis {

public static void main(String[] args) {
    Crisis jav = new Crisis();
    System.out.println("Media: " + jav.media(6.0, 7.0, 6.0)
            + "\nModa: " + jav.moda(3.5, 6.0, 7.1, 6.0, 7.1, 7.1)
            + "\nMediana: " + jav.mediana(0.0, 1.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0)
    );
}

//https://www.youtube.com/watch?v=UfupcG1ax6U&index=4&list=PLA0675987914E07BB
private double media(double... variaveis) {
    return Arrays.stream(variaveis).average().getAsDouble();
}

//https://www.youtube.com/watch?v=UfupcG1ax6U&index=4&list=PLA0675987914E07BB
private double moda(double... variaveis) {
    Map<Double, Integer> moda = new TreeMap<>();
    Arrays.stream(variaveis).forEach(chave -> {
        moda.putIfAbsent(chave, 0);
        moda.put(chave, moda.get(chave) + 1);
    });

    int maior = moda.keySet().stream().map(chave -> moda.get(chave)).max(Comparator.comparing((total) -> total)).get();
    return moda.keySet().stream().filter(chave -> moda.get(chave) == maior).findFirst().get();
}

//https://www.youtube.com/watch?v=UfupcG1ax6U&index=4&list=PLA0675987914E07BB
private double mediana(double ... variaveis) {
    Arrays.sort(variaveis);
    //como em java o index inicia em 1 temos que modificar a fórmula informada no vídeo
    float p = -1 + (float) (variaveis.length + 1) / 2;
    int n = (int) Math.floor(p);
    return Math.floor(p) == p ? variaveis[n] : (variaveis[n] + variaveis[++n]) / 2;
}

}

Ao invés de comentar a codificação, preferi indicar vídeos sobre estatística.
A codificação pode parecer difícil, mas é apenas um objeto chamando o outro.
Dessa forma, uma das suas necessidades deve ser com a orientação a objeto.
Eu poderia fazer uma codificação mais didática e comentada, sem muitas chamadas entre objetos, mas na verdade não te ajudaria tanto quanto você assistir vídeos sobre o assunto.

Bons estudos.
Té+.

1 curtida

Obrigada, vou pesquisar e dar uma olhada

https://www.devmedia.com.br/estatistica-descritiva-em-java/6160