Alternativa leve ao R para o RHEL?

2

Eu quero usar o R para algumas análises estatísticas de informações de arquivo de log, mas descobri que mesmo o RPM R "limitado" tem muitas dependências que ainda não estão instaladas. Eu não quero instalar muitos pacotes para uma necessidade periférica.

Existem alternativas leves para análise estatística simples no RHEL 6? Eu tenho um script R que aceita em stdin um grande conjunto de valores - um valor por linha - e imprime o min, max, mean, median, percentil 95 e desvio padrão.

Para mais contexto, estou usando o grep e o awk para encontrar solicitações GET para um caminho específico em nossos arquivos de log do servidor web, obter os tempos de resposta e calcular as métricas listadas acima para medir o impacto no desempenho de alterações uma aplicação web.

Eu não preciso de nenhum recurso gráfico, apenas computação simples. Há algo que eu tenha esquecido?

    
por Eric Rath 19.03.2012 / 19:27

3 respostas

1

Use o pacote python NumPy que você poderá instalar facilmente usando yum install numpy ou pip install numpy :

import numpy
n = numpy.random.rand(100)
print 'min:', n.min()
print 'max:', n.max()
print 'mean:', n.mean()
print 'median:', numpy.median(n)
print '95th:', numpy.percentile(n, 95)
print 'stddev:', n.std()

Isso evitará que você implemente novamente as estatísticas básicas do zero. Em geral, o Python com NumPy e SciPy é uma alternativa rica em recursos para R que também tem melhor desempenho .

Além disso, em vez de escrever sua própria análise de arquivo de log com grep e awk , você pode usar algo como: pylogsparser que é "uma biblioteca de analisadores de log empacotada com um conjunto de analisadores prontos para uso (DHCPd, Squid, Apache, ...)".

    
por 19.03.2012 / 21:02
2

Aqui estão min, max, total, mean e median em awk :

BEGIN {
    min="unset"
    max=0
}


{
    values[NR] = $1

    total += $1
    average = total/NR

    if ($1 > max) max = $1
    if (min == "unset" || $1 < $min) min = $1
}

END {
    median=values[int(NR/2)]

    print "MIN:", min
    print "MAX:", max
    print "TOTAL:", total
    print "MEAN:", average
    print "MEDIAN:", median
}

Desvio padrão e percentil 95 são deixados como um exercício para o leitor.

    
por 19.03.2012 / 19:47
1

Qualquer linguagem de programação / script como Perl, Python ou Ruby fará isso facilmente, e bc também está disponível.

    
por 19.03.2012 / 19:36

Tags