Como calcular a média geométrica em r (com exemplos)


Você pode usar a seguinte sintaxe para calcular a média geométrica de um conjunto de números em R:

 exp(mean(log(x)))

Os exemplos a seguir mostram como usar esta função na prática.

Exemplo 1: Calcule a média geométrica do vetor

O código a seguir mostra como calcular a média geométrica de um único vetor em R:

 #definevector
x <- c(4, 8, 9, 9, 12, 14, 17)

#calculate geometric mean of values in vector
exp(mean(log(x)))

[1] 9.579479

Exemplo 2: Calcule a média geométrica de um vetor com zeros

Se o seu vetor contiver zeros ou números negativos, a fórmula acima retornará 0 ou NaN.

Para ignorar zeros e números negativos ao calcular a média geométrica, você pode usar a seguinte fórmula:

 #define vector with some zeros and negative numbers
x <- c(4, 8, 9, 9, 12, 14, 17, 0, -4)

#calculate geometric mean of values in vector
exp(mean(log(x[x > 0])))

[1] 9.579479

Exemplo 3: Calcule a média geométrica das colunas no quadro de dados

O código a seguir mostra como calcular a média geométrica de uma coluna em um quadro de dados:

 #define data frame
df <- data. frame (a=c(1, 3, 4, 6, 8, 8, 9),
                 b=c(7, 8, 8, 7, 13, 14, 16),
                 c=c(11, 13, 13, 18, 19, 19, 22),
                 d=c(4, 8, 9, 9, 12, 14, 17))

#calculate geometric mean of values in column 'a'
exp(mean(log(df$a)))

[1] 4.567508

E o código a seguir mostra como calcular a média geométrica de múltiplas colunas em um quadro de dados:

 #define data frame
df <- data. frame (a=c(1, 3, 4, 6, 8, 8, 9),
                 b=c(7, 8, 8, 7, 13, 14, 16),
                 c=c(11, 13, 13, 18, 19, 19, 22),
                 d=c(4, 8, 9, 9, 12, 14, 17))

#calculate geometric mean of values in column 'a', 'b', and 'd'
apply(df[, c(' a ', ' b ', ' d ')], 2, function (x) exp(mean(log(x))))

       abd
4.567508 9.871128 9.579479

Recursos adicionais

Como calcular a média por grupo em R
Como calcular uma média ponderada em R
Como calcular o erro padrão da média em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *