shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Média, Variancia e Desvio padrão


From: Julio C. Neves
Subject: Re: [shell-script] Média, Variancia e Desvio padrão
Date: Fri, 20 Nov 2009 21:52:57 -0200

Cara, minha estatística já era, mas do teu prg entendi que vc queria isso:

$ Soma=$(paste -sd+ arq | bc)
$ echo $Soma
9
$ Media=$(echo "scale=2; $Soma/$(wc -l < arq)" | bc )
$ echo "A Média Aritmética é igual a: $Media"
A Média Aritmética é igual a: 1.50
$ Quadrado=$(cat arq | xargs -i echo \({}-$Media\)^2 | bc)
$ Somatorio=$(tr ' ' + <<< $Quadrado | bc)
# As duas últimas linhas poderiam ser substituídas Por:
Somatorio=$(echo $(cat arq | xargs -i echo \({}-$Media\)^2 | bc | tr '\n'
+)0 | bc)

Daqui por diante, é só repetir o que vc fez.

A vantagem desta solução é que ela quase não gera I/O como é o caso do awk.

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11) 2125-4747 Curso de 07 a 11/12;
- Em DF ligue (61) 3223-3000 Curso de zenity 09-10/01;
- No RJ ligue (21) 2561-0867. Curso nos dias 5,6,12,13/12;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.


2009/11/20 Jair Santanna <address@hidden>

>
>
> Caros, estou fazendo um script para calcular a média, a variancia e o
> desvio padrão de um arquivo com um conjunto de valores
> ex:
> 1
> 1
> 1
> 2
> 2
> 2
>
> O meu código segue abaixo mas estou com os seguintes problemas:
> 1) No Calculo do Parentese a média normalmente tem casas decimais no
> entanto esta soma desconsidera a parte decimal. O que eu devo fazer?
> tentei algo utilizando o bc mas nada. Eu preciso subtrair o valor da
> linha do arquivo do valor da Média e obter o valor em módulo para
> TODOS os elementos do arquivo
> 2) No Calculo que ele coloca no arquivo "Quadrado" ele só efetua para
> o último item do Parêntese enquanto que eu gostaria de fazer para
> todos os elementos do Parentese. O que eu estou errando?
>
> Grato
>
> JJ.Santanna
>
> > #!/bin/bash
> >
> > n=6
> > #echo $n
> >
> > Soma=`cat arquivo |awk '{a+=$0}END{print a}'`
> > #echo $Soma
> >
> > Media=$(echo "scale=2; $Soma/$n" | bc )
> > #echo $Media
> > echo "A Média Aritimética é igual a: $Media"
> >
> > #CALCULANDO O PARENTESE ******
> > Parentese=`awk '{print $1-$Media}' arquivo `
> > #echo $Parentese
> >
> > #CALCULANDO O QUADRADO
> > echo "$Parentese ^ 2" | bc > Quadrado
> > #cat Quadrado
> >
> > Somatorio=`cat Quadrado |awk '{a+=$0}END{print a}'`
> > #echo $Somatorio
> > rm Quadrado
> >
> > Razao=$(echo "scale=4; $Somatorio/($n-1)" | bc )
> > #echo $Razao
> > echo "A Variância é igual a:$Razao"
> >
> > Raiz=$(echo "scale=4; sqrt($Razao)" | bc)
> > #echo $Raiz
> > echo "O Desvio padrão é igual a:$Raiz"
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]